Vierte Scan-Funktion "Zählen": laufende Anzeige, keine Buchung
Neue Funktion in scan-modes.js (Merkmal continuousCount), verdrahtet in main.js ueber denselben Zeitgeber/dieselbe Ueberlappungssperre wie die Barcode-Dauersuche (continuousSearchLoop ruft jetzt runCountAttempt() zusaetzlich zu runSearchAttempt(); jeder bricht selbst ab, wenn die Funktion nicht passt) - kein zweiter, paralleler Mechanismus. Kein "Modul scannen"-Knopf, keine Treffer-Rueckmeldung, kein roter Dialog, keine Stapel-Zuweisung; die grosse Zaehlanzeige (scan-view.js/styles.css) ist reine Anzeige und speichert nichts. buildRecognitionAdapters() liefert fuer "Zählen" zusaetzlich leere Adapter (Absicherung gegen den seltenen Datei-Ersatzweg ohne Kamera). Die drei bestehenden Funktionen bleiben unveraendert; einzige notwendige Anpassung an scan-modes.test.js war die Anzahl-Pruefung (3 -> 4 Funktionen). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+13
-4
@@ -2,9 +2,9 @@ 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('genau vier Funktionen in fester Reihenfolge', () => {
|
||||
assert.equal(SCAN_MODES.length, 4);
|
||||
assert.deepEqual(SCAN_MODES.map((mode) => mode.id), ['barcode', 'qrcode', 'ocr', 'count']);
|
||||
});
|
||||
|
||||
test('Funktion 1 (Strichcode): eindimensionale Codearten, laufende Suche, keine Texterkennung', () => {
|
||||
@@ -28,7 +28,7 @@ test('Funktion 2 (QR-Code): QR-Varianten und DataMatrix, Aztec, PDF417', () => {
|
||||
assert.equal(mode.useOcr, false);
|
||||
});
|
||||
|
||||
test('die drei Funktionen haben paarweise verschiedene Kennungen und Beschriftungen', () => {
|
||||
test('die vier 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');
|
||||
@@ -43,6 +43,15 @@ test('Funktion 3 (Text erkennen): keine Codearten, keine laufende Suche, Texterk
|
||||
assert.equal(mode.useOcr, true);
|
||||
});
|
||||
|
||||
test('Funktion 4 (Zählen): keine Codearten, keine laufende Codesuche, keine Texterkennung, dafuer laufende Zaehlung', () => {
|
||||
const mode = getScanMode('count');
|
||||
assert.equal(mode.label, 'Zählen');
|
||||
assert.deepEqual(mode.barcodeFormats, []);
|
||||
assert.equal(mode.continuousSearch, false);
|
||||
assert.equal(mode.useOcr, false);
|
||||
assert.equal(mode.continuousCount, true);
|
||||
});
|
||||
|
||||
test('unbekannte Kennung wirft statt undefined zurueckzugeben', () => {
|
||||
assert.throws(() => getScanMode('unbekannt'));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user