// Reine Rechenlogik der Zaehl-Aufnahme (Funktion "Zählen", siehe main.js): // aus den (bis zu fuenf) Einzelmessungen einer Aufnahme wird deren Median // gebildet. Siehe count-capture.js fuer die Begruendung (robust gegen einen // einzelnen Ausreisser, ohne wie eine fortlaufende Glaettung traege zu sein). import { test } from 'node:test'; import assert from 'node:assert/strict'; import { combineCaptureCounts } from '../src/count-capture.js'; test('fuenf gleiche Messungen liefern diese Zahl', () => { assert.equal(combineCaptureCounts([18, 18, 18, 18, 18]), 18); }); test('fuenf verschiedene Messungen liefern deren Median (ungerade Anzahl)', () => { assert.equal(combineCaptureCounts([17, 19, 18, 20, 18]), 18); }); test('ein einzelner grober Ausreisser unter fuenf Messungen schlaegt nicht durch', () => { // Vier stabile Messungen um 18 herum, eine grob daneben (z. B. // Bewegungsunschaerfe oder Autofokus mitten in der Aufnahme) - der Median // bleibt bei 18, ein Mittelwert waere durch den Ausreisser spuerbar verzerrt. assert.equal(combineCaptureCounts([18, 18, 3, 18, 60]), 18); }); test('weniger als fuenf Messungen (eine Kameraaufnahme scheiterte) liefern trotzdem ein Ergebnis', () => { // Gerade Anzahl (vier statt fuenf) - Median ist der Mittelwert der beiden // mittleren Werte. const result = combineCaptureCounts([17, 18, 18, 19]); assert.equal(result, 18); }); test('nur eine einzige verwertbare Messung ist ihr eigener Median', () => { assert.equal(combineCaptureCounts([21]), 21); }); test('eine leere Messreihe wirft, statt stillschweigend ein sinnloses Ergebnis (NaN) zu liefern', () => { assert.throws(() => combineCaptureCounts([])); }); test('combineCaptureCounts veraendert die uebergebene Liste nicht (reine Funktion)', () => { const counts = [5, 1, 3]; const untouched = [...counts]; combineCaptureCounts(counts); assert.deepEqual(counts, untouched); });