Fix: canonical() und matchKnown() behandeln Zahlen wie Zeichenketten

canonical() und matchKnown() stützen sich auf normalizeToken(), das bei
Nicht-Strings '' zurückgibt. Dies führt dazu, dass bereits geparste Zahlenwerte
lautlos ignoriert werden: canonical(64) liefert '' statt '64', matchKnown(64, list)
liefert null statt den gefundenen Wert.

Die Behebung konvertiert Zahlen zu Zeichenketten, bevor sie normalizeToken()
erreichen, ohne null/undefined zu ändern (diese ergeben weiterhin ''/'null).

Alle 23 Tests grün.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
vchuser
2026-07-28 14:21:47 +02:00
co-authored by Claude Opus 5
parent a7adfeb9da
commit 8199d25a6e
2 changed files with 34 additions and 2 deletions
+26
View File
@@ -56,3 +56,29 @@ test('specsCompatible toleriert eine Verwechslung in der Teilenummer', () => {
const b = { ...emptySpec(), capacityGb: 64, partNumber: 'M386A8K4OBM1-CRC4Y' };
assert.equal(specsCompatible(a, b), true);
});
test('matchKnown findet einen Zahlenwert in der Liste', () => {
assert.equal(matchKnown(64, KNOWN.capacityGb), 64);
assert.equal(matchKnown(128, KNOWN.capacityGb), 128);
});
test('canonical behandelt Zahlen wie Zeichenketten', () => {
assert.equal(canonical(64), canonical('64'));
assert.equal(canonical(128), canonical('128'));
});
test('canonical mit null ergibt Leerzeichenkette', () => {
assert.equal(canonical(null), '');
});
test('canonical mit undefined ergibt Leerzeichenkette', () => {
assert.equal(canonical(undefined), '');
});
test('matchKnown mit null ergibt null', () => {
assert.equal(matchKnown(null, KNOWN.capacityGb), null);
});
test('matchKnown mit undefined ergibt null', () => {
assert.equal(matchKnown(undefined, KNOWN.capacityGb), null);
});