import { test } from 'node:test'; import assert from 'node:assert/strict'; import { kurzfassung } from '../src/lib/printruns.ts'; /** * Die Kurzfassung steht in der Verlaufsliste. Sie kommt zellenweise herein — * zwei Zellen mit demselben Maß dürfen dort nicht zweimal auftauchen. */ test('Einzelnes Maß bleibt, wie es ist', () => { assert.equal(kurzfassung(['13 × 18 cm']), '13 × 18 cm'); }); test('Gleiche Maße werden zusammengezogen', () => { assert.equal(kurzfassung(['10 × 15 cm', '10 × 15 cm']), '10 × 15 cm ×2'); }); test('Vorhandene Stückzahlen werden addiert, nicht angehängt', () => { assert.equal(kurzfassung(['35 × 45 mm ×8', '35 × 45 mm ×4']), '35 × 45 mm ×12'); assert.equal(kurzfassung(['10 × 15 cm ×3', '10 × 15 cm']), '10 × 15 cm ×4'); }); test('Verschiedene Maße bleiben nebeneinander, in ihrer Reihenfolge', () => { assert.equal(kurzfassung(['13 × 18 cm', '35 × 45 mm ×8']), '13 × 18 cm, 35 × 45 mm ×8'); }); test('Zusätze wie (Poster) trennen die Gruppen', () => { assert.equal(kurzfassung(['30 × 40 cm ×2 (Poster)', '30 × 40 cm ×1 (Poster)']), '30 × 40 cm ×3 (Poster)'); assert.equal(kurzfassung(['30 × 40 cm (Poster)', '30 × 40 cm (überstehend)']), '30 × 40 cm (Poster), 30 × 40 cm (überstehend)'); }); test('Leere Liste ergibt etwas Lesbares', () => { assert.equal(kurzfassung([]), 'Druckbogen'); }); test('Sehr lange Aufzählungen werden gekürzt', () => { const viele = Array.from({ length: 40 }, (_, i) => `${i + 10} × ${i + 15} cm`); const s = kurzfassung(viele); assert.ok(s.length <= 118, `zu lang: ${s.length}`); assert.ok(s.endsWith('…')); });