Projektvorgabe: Kommentare und Oberflaechentexte deutsch, Bezeichner im Code englisch. Betroffen: src/barcode.js (vorbereitungsPromise -> readyPromise, inkl. Verweis-Kommentar in ocr.js), sowie lokale Variablen in test/spec-match.test.js, test/session.test.js und test/pipeline.test.js (u.a. ocrAufgerufen -> ocrCalled, gefunden bei vollstaendigem Durchgang aller Test-Dateien). Testbeschreibungen (Prosa) und Kommentare bleiben unangetastet - nur echte Bezeichner wurden umbenannt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
85 lines
3.3 KiB
JavaScript
85 lines
3.3 KiB
JavaScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { KNOWN, emptySpec, canonical, matchKnown, specsCompatible } from '../src/spec.js';
|
|
|
|
test('canonical bildet verwechselbare Zeichen auf einen Vertreter ab', () => {
|
|
assert.equal(canonical('PC4-24O0'), canonical('PC4-2400'));
|
|
assert.equal(canonical('1RX8'), canonical('IRX8'));
|
|
assert.equal(canonical('BGB'), canonical('868'));
|
|
assert.equal(canonical('LRDIMM'), canonical('1RD1MM'));
|
|
});
|
|
|
|
test('canonical laesst D unangetastet, damit 4DRx4 erhalten bleibt', () => {
|
|
assert.notEqual(canonical('4DRX4'), canonical('40RX4'));
|
|
});
|
|
|
|
test('matchKnown findet den exakten Wert', () => {
|
|
assert.equal(matchKnown('PC4-2400', KNOWN.speed), 'PC4-2400');
|
|
assert.equal(matchKnown('lrdimm', KNOWN.formFactor), 'LRDIMM');
|
|
});
|
|
|
|
test('matchKnown repariert eine Verwechslung', () => {
|
|
assert.equal(matchKnown('PC4-24O0', KNOWN.speed), 'PC4-2400');
|
|
assert.equal(matchKnown('4DRX4', KNOWN.rank), '4DRx4');
|
|
});
|
|
|
|
test('matchKnown liefert null bei unbekanntem Wert', () => {
|
|
assert.equal(matchKnown('PC4-9999', KNOWN.speed), null);
|
|
assert.equal(matchKnown('', KNOWN.speed), null);
|
|
});
|
|
|
|
test('matchKnown funktioniert auch mit Zahlenlisten', () => {
|
|
assert.equal(matchKnown('64', KNOWN.capacityGb), 64);
|
|
assert.equal(matchKnown('6A', KNOWN.capacityGb), null);
|
|
});
|
|
|
|
test('specsCompatible vergleicht nur beidseitig gesetzte Felder', () => {
|
|
const full = { capacityGb: 64, formFactor: 'LRDIMM', rank: '4DRx4', speed: 'PC4-2400', partNumber: 'M386A8K40BM1-CRC4Y', dateCode: '1908' };
|
|
const withoutPartNumber = { ...full, partNumber: null, dateCode: null };
|
|
assert.equal(specsCompatible(full, withoutPartNumber), true);
|
|
});
|
|
|
|
test('specsCompatible erkennt einen echten Unterschied', () => {
|
|
const a = { ...emptySpec(), capacityGb: 64, speed: 'PC4-2400' };
|
|
const b = { ...emptySpec(), capacityGb: 32, speed: 'PC4-2400' };
|
|
assert.equal(specsCompatible(a, b), false);
|
|
});
|
|
|
|
test('specsCompatible trennt gleiche Spec mit unterschiedlicher Teilenummer', () => {
|
|
const samsung = { ...emptySpec(), capacityGb: 64, speed: 'PC4-2400', partNumber: 'M386A8K40BM1-CRC4Y' };
|
|
const hynix = { ...emptySpec(), capacityGb: 64, speed: 'PC4-2400', partNumber: 'HMAA8GL7AMR4N-UH' };
|
|
assert.equal(specsCompatible(samsung, hynix), false);
|
|
});
|
|
|
|
test('specsCompatible toleriert eine Verwechslung in der Teilenummer', () => {
|
|
const a = { ...emptySpec(), capacityGb: 64, partNumber: 'M386A8K40BM1-CRC4Y' };
|
|
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);
|
|
});
|