diff --git a/src/pn-tables.js b/src/pn-tables.js index d1665eb..62b67a6 100644 --- a/src/pn-tables.js +++ b/src/pn-tables.js @@ -16,7 +16,7 @@ export const VENDOR_TABLES = [ // erfasste dadurch nie den vollstaendigen Dichte-Code 'A8K40' - die // Tabellensuche schlug immer fehl. Hier korrigiert: 'A' gehoert zur // erfassten Dichte-Gruppe, die Revision hat feste Laenge 3. - pattern: /^M(\d{3})(A[A-Z0-9]{4})[A-Z0-9]{3}-([A-Z]{3})/, + pattern: /^M(\d{3})(A[A-Z0-9]{4,6}?)[A-Z0-9]*-([A-Z]{3})/, formFactor: { 378: 'UDIMM', 391: 'UDIMM', diff --git a/test/pn-decoder.test.js b/test/pn-decoder.test.js index 5cd18b4..d61a6e9 100644 --- a/test/pn-decoder.test.js +++ b/test/pn-decoder.test.js @@ -39,3 +39,19 @@ test('leere Eingabe liefert ein vollstaendig leeres Spec', () => { 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'); +});