Fix Samsung pattern to handle variable revision lengths

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>
This commit is contained in:
vchuser
2026-07-28 14:34:40 +02:00
co-authored by Claude Opus 5
parent c580d4f924
commit e14d607761
2 changed files with 17 additions and 1 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ export const VENDOR_TABLES = [
// erfasste dadurch nie den vollstaendigen Dichte-Code 'A8K40' - die // erfasste dadurch nie den vollstaendigen Dichte-Code 'A8K40' - die
// Tabellensuche schlug immer fehl. Hier korrigiert: 'A' gehoert zur // Tabellensuche schlug immer fehl. Hier korrigiert: 'A' gehoert zur
// erfassten Dichte-Gruppe, die Revision hat feste Laenge 3. // 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: { formFactor: {
378: 'UDIMM', 378: 'UDIMM',
391: 'UDIMM', 391: 'UDIMM',
+16
View File
@@ -39,3 +39,19 @@ test('leere Eingabe liefert ein vollstaendig leeres Spec', () => {
assert.equal(spec.partNumber, null); assert.equal(spec.partNumber, null);
assert.equal(spec.capacityGb, 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');
});