import {expect, test} from "@jest/globals"; import {calculateTvSize, parseDiagonal, parseRatio, formatTvSize} from "./tv-size.js"; test('10:9 wird zum [10, 9] convertiert', () => { const inputAspectRatio = "10:9"; const expected = [10, 9]; const result = parseRatio(inputAspectRatio); expect(result[0]).toBe(expected[0]); expect(result[1]).toBe(expected[1]); expect(result.length).toBe(expected.length); }); test('10 9 wird zum [10, 9] convertiert', () => { const inputAspectRatio = "10 9"; const expected = [10, 9]; const result = parseRatio(inputAspectRatio); expect(result[0]).toBe(expected[0]); expect(result[1]).toBe(expected[1]); expect(result.length).toBe(expected.length); }); test('10 9 mit prefix und suffix spaces wird zum [10, 9] convertiert', () => { const inputAspectRatio = " 10 9 \n"; const expected = [10, 9]; const result = parseRatio(inputAspectRatio); expect(result[0]).toBe(expected[0]); expect(result[1]).toBe(expected[1]); expect(result.length).toBe(expected.length); }); test('Eingabe "12cm:10" ist nicht gültig', () => { const inputAspectRatio = "12cm:10"; try { parseRatio(inputAspectRatio); throw new Error("Erwarte einen Error aus tv-size"); }catch (e) { expect(e.message).toContain("[tv-size]"); } }); test('Eingabe "12:10cm" ist nicht gültig', () => { const inputAspectRatio = "12:10cm"; try { parseRatio(inputAspectRatio); throw new Error("Erwarte einen Error aus tv-size"); }catch (e) { expect(e.message).toContain("[tv-size]"); } }); test('Akzeptiere gültige Diagonal als ganze Zahl', () => { const inputDiagonal = "27"; const d = parseDiagonal(inputDiagonal); expect(d).toBe(27); }); test('Negative Diagonal ist nicht gültig', () => { const inputDiagonal = "-27"; try { parseDiagonal(inputDiagonal); } catch(e) { expect(e.message).toContain("[tv-size]"); } }); test('Diagonal mit Einheit ist nicht gültig', () => { const inputDiagonal = "27cm"; try { parseDiagonal(inputDiagonal); } catch(e) { expect(e.message).toContain("[tv-size]"); } }); test('Akzeptiere Diagonal als Dezimalzahl', () => { const inputDiagonal = "65,7"; const d = parseDiagonal(inputDiagonal); expect(d).toBeCloseTo(65.7, 0.0001); }); test('Zero Diagonal ist nicht gültig', () => { const inputDiagonal = "0.00"; try { parseDiagonal(inputDiagonal); } catch(e) { expect(e.message).toContain("[tv-size]"); } }); test('berechne Größe', () => { const aspectRatio = [10, 9]; const diagonal = 56.9; const [width, height] = calculateTvSize(aspectRatio, diagonal); expect(width).toBeCloseTo(42.293, 0.0001); expect(height).toBeCloseTo(38.06, 0.001); }); test('formatiere die Größe der TV', () =>{ const [width, height] = [1234.123, 789.0679]; const [w,h] = formatTvSize(width, height); expect(w).toBe("1234,12"); expect(h).toBe("789,07") })