Das Samsung-Muster hat die Revision auf exakt 3 Zeichen festgelegt und die Dichte-Gruppe auf exakt 4 Folgezeichen. Dies führte dazu, dass bei abweichender Revisionslänge das gesamte Muster nicht passte und Bauform, Geschwindigkeit und Kapazität verloren gingen. Das neue Muster verwendet einen faul (lazy) Quantifier für die Dichte-Gruppe (4-6 Zeichen) und erlaubt beliebig lange Revisionen vor dem Bindestrich. Dadurch werden Bauform und Geschwindigkeit auch bei nicht standardisierten Revisionslängen korrekt erkannt. - M393A2K43B-CTD (einteilige Revision) - M393A2K43BBX1-CTD (vierteilige Revision) Beide Tests bestätigen jetzt die korrekte Erkennung von Bauform und Geschwindigkeit unabhängig von der Revisionslänge. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
58 lines
2.2 KiB
JavaScript
58 lines
2.2 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);
|
|
});
|
|
|
|
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');
|
|
});
|