The function keeps reading all 2D-code types (QR-Code, MicroQRCode, RMQRCode, DataMatrix, Aztec, PDF417) as requested. The label is now "QR-Code" per the client's preference for their terminology. Added clarifying comments explaining the intentional mismatch between the name and the supported formats, since the hardware labels use DataMatrix (not QR). Updated README and test accordingly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
49 lines
2.0 KiB
JavaScript
49 lines
2.0 KiB
JavaScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { SCAN_MODES, getScanMode } from '../src/scan-modes.js';
|
|
|
|
test('genau drei Funktionen in fester Reihenfolge', () => {
|
|
assert.equal(SCAN_MODES.length, 3);
|
|
assert.deepEqual(SCAN_MODES.map((mode) => mode.id), ['barcode', 'qrcode', 'ocr']);
|
|
});
|
|
|
|
test('Funktion 1 (Strichcode): eindimensionale Codearten, laufende Suche, keine Texterkennung', () => {
|
|
const mode = getScanMode('barcode');
|
|
assert.equal(mode.label, 'Strichcode');
|
|
assert.deepEqual(mode.barcodeFormats, [
|
|
'Code128', 'Code39', 'Code93', 'ITF', 'EAN13', 'EAN8', 'UPCA', 'UPCE', 'Codabar',
|
|
]);
|
|
assert.equal(mode.continuousSearch, true);
|
|
assert.equal(mode.useOcr, false);
|
|
});
|
|
|
|
test('Funktion 2 (QR-Code): QR-Varianten und DataMatrix, Aztec, PDF417', () => {
|
|
const mode = getScanMode('qrcode');
|
|
assert.equal(mode.label, 'QR-Code');
|
|
assert.deepEqual(mode.barcodeFormats, [
|
|
'QRCode', 'MicroQRCode', 'RMQRCode', 'DataMatrix', 'Aztec', 'PDF417',
|
|
]);
|
|
assert.ok(mode.barcodeFormats.includes('DataMatrix'), 'Funktion 2 muss DataMatrix lesen (Etiketten der Ware tragen DataMatrix)');
|
|
assert.equal(mode.continuousSearch, true);
|
|
assert.equal(mode.useOcr, false);
|
|
});
|
|
|
|
test('die drei Funktionen haben paarweise verschiedene Kennungen und Beschriftungen', () => {
|
|
const ids = SCAN_MODES.map((mode) => mode.id);
|
|
const labels = SCAN_MODES.map((mode) => mode.label);
|
|
assert.equal(new Set(ids).size, ids.length, 'Kennungen muessen paarweise verschieden sein');
|
|
assert.equal(new Set(labels).size, labels.length, 'Beschriftungen muessen paarweise verschieden sein');
|
|
});
|
|
|
|
test('Funktion 3 (Text erkennen): keine Codearten, keine laufende Suche, Texterkennung', () => {
|
|
const mode = getScanMode('ocr');
|
|
assert.equal(mode.label, 'Text erkennen');
|
|
assert.deepEqual(mode.barcodeFormats, []);
|
|
assert.equal(mode.continuousSearch, false);
|
|
assert.equal(mode.useOcr, true);
|
|
});
|
|
|
|
test('unbekannte Kennung wirft statt undefined zurueckzugeben', () => {
|
|
assert.throws(() => getScanMode('unbekannt'));
|
|
});
|