Deckt die Samsung-Referenz-Teilenummer aus dem physisch vorhandenen Modul ab. Unbekannte Fragmente (z.B. nicht gelistete Dichte-Codes) liefern bewusst null statt einer Vermutung - das ist der geplante Uebergang zum OCR-Weg, kein Fehlerfall. Das im Task-Brief vorgegebene Regex-Muster liess das literale 'A' der Dichte-Kennung ausserhalb der Erfassungsgruppe, wodurch die Tabellensuche nach 'A8K40' nie greifen konnte. Muster korrigiert, damit die ebenfalls vorgegebenen Tests bestehen; Tabelleninhalte und Warnkommentar blieben wortgleich.
42 lines
1.5 KiB
JavaScript
42 lines
1.5 KiB
JavaScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { decodePartNumber } from '../src/pn-decoder.js';
|
|
|
|
test('dekodiert die Samsung-Teilenummer aus dem Referenzmodul', () => {
|
|
const spec = decodePartNumber('M386A8K40BM1-CRC4Y');
|
|
assert.equal(spec.formFactor, 'LRDIMM');
|
|
assert.equal(spec.speed, 'PC4-2400');
|
|
assert.equal(spec.capacityGb, 64);
|
|
assert.equal(spec.rank, '4DRx4');
|
|
assert.equal(spec.partNumber, 'M386A8K40BM1-CRC4Y');
|
|
});
|
|
|
|
test('erkennt die Bauform auch ohne bekannten Dichte-Code', () => {
|
|
const spec = decodePartNumber('M393A2K43BB1-CTD');
|
|
assert.equal(spec.formFactor, 'RDIMM');
|
|
assert.equal(spec.speed, 'PC4-2666');
|
|
assert.equal(spec.capacityGb, null, 'unbekannter Dichte-Code laesst das Feld offen');
|
|
assert.equal(spec.rank, null);
|
|
assert.equal(spec.partNumber, 'M393A2K43BB1-CTD');
|
|
});
|
|
|
|
test('normalisiert Kleinschreibung und Leerzeichen', () => {
|
|
const spec = decodePartNumber(' m386a8k40bm1-crc4y ');
|
|
assert.equal(spec.capacityGb, 64);
|
|
assert.equal(spec.partNumber, 'M386A8K40BM1-CRC4Y');
|
|
});
|
|
|
|
test('unbekannter Hersteller liefert ein leeres Spec mit gesetzter Teilenummer', () => {
|
|
const spec = decodePartNumber('7325773');
|
|
assert.equal(spec.formFactor, null);
|
|
assert.equal(spec.speed, null);
|
|
assert.equal(spec.capacityGb, null);
|
|
assert.equal(spec.partNumber, '7325773');
|
|
});
|
|
|
|
test('leere Eingabe liefert ein vollstaendig leeres Spec', () => {
|
|
const spec = decodePartNumber('');
|
|
assert.equal(spec.partNumber, null);
|
|
assert.equal(spec.capacityGb, null);
|
|
});
|