Files
ocr_scanner/test/scan-modes.test.js
T
TanerUslu 9ef038ca98 Reines Funktionen-Modul fuer die drei Scan-Funktionen
Kennung, deutsche Beschriftung, Codearten, laufende Suche und
Texterkennung je Funktion an einer einzigen Stelle (src/scan-modes.js),
ohne Browser-Zugriff und damit unter Node pruefbar. Funktion "QR-Code"
enthaelt bewusst kein DataMatrix.
2026-07-29 13:36:58 +02:00

40 lines
1.6 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): ausschliesslich QR-Varianten, kein DataMatrix', () => {
const mode = getScanMode('qrcode');
assert.equal(mode.label, 'QR-Code');
assert.deepEqual(mode.barcodeFormats, ['QRCode', 'MicroQRCode', 'RMQRCode']);
assert.ok(!mode.barcodeFormats.includes('DataMatrix'), 'Funktion 2 darf kein DataMatrix lesen');
assert.equal(mode.continuousSearch, true);
assert.equal(mode.useOcr, false);
});
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'));
});