/** * spinNormalize.test.js * Unit-Tests für server/spinNormalize.cjs * * Sichert ab, dass der Spin-Normalisierer alle Randfälle korrekt behandelt, * insbesondere negative Werte (z.B. 0 − 90 = −90 → 270). */ const { normalizeSpinDeg } = require('../server/spinNormalize.cjs'); describe('normalizeSpinDeg', () => { test('Standardwerte 0 / 90 / 180 / 270 bleiben unverändert', () => { expect(normalizeSpinDeg(0)).toBe(0); expect(normalizeSpinDeg(90)).toBe(90); expect(normalizeSpinDeg(180)).toBe(180); expect(normalizeSpinDeg(270)).toBe(270); }); test('Wert 360 wird auf 0 normalisiert', () => { expect(normalizeSpinDeg(360)).toBe(0); expect(normalizeSpinDeg(720)).toBe(0); expect(normalizeSpinDeg(450)).toBe(90); }); test('Negative Werte werden korrekt umgerechnet', () => { expect(normalizeSpinDeg(-90)).toBe(270); // 0 − 90 → 270 expect(normalizeSpinDeg(-180)).toBe(180); expect(normalizeSpinDeg(-270)).toBe(90); expect(normalizeSpinDeg(-360)).toBe(0); expect(normalizeSpinDeg(-1)).toBe(359); }); test('Strings werden als Zahlen interpretiert', () => { expect(normalizeSpinDeg('90')).toBe(90); expect(normalizeSpinDeg('-90')).toBe(270); }); test('Ergebnis liegt immer in [0, 360)', () => { const inputs = [-720, -359, -1, 0, 1, 89, 90, 179, 270, 359, 360, 450, 720, 1080]; for (const v of inputs) { const r = normalizeSpinDeg(v); expect(r).toBeGreaterThanOrEqual(0); expect(r).toBeLessThan(360); } }); });