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); }); test('erkennt Bauform und Geschwindigkeit auch mit einteiliger Revision', () => { const spec = decodePartNumber('M393A2K43B-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.partNumber, 'M393A2K43B-CTD'); }); test('erkennt Bauform und Geschwindigkeit auch mit vierteiliger Revision', () => { const spec = decodePartNumber('M393A2K43BBX1-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.partNumber, 'M393A2K43BBX1-CTD'); });