task(C3): extend pixi element types - dimension/leader/revcloud/chair/table/stage
This commit is contained in:
@@ -112,4 +112,63 @@ describe('elementToPrimitives', () => {
|
||||
it('unbekannter Typ ergibt leere Liste (renderer-sicher)', () => {
|
||||
expect(elementToPrimitives(el('x', 'definitely-unknown'))).toEqual([]);
|
||||
});
|
||||
|
||||
it('dimension: Linie + Label aus value/text', () => {
|
||||
const prims = elementToPrimitives(el('d', 'dimension', {
|
||||
x1: 0, y1: 0, x2: 100, y2: 0, value: '250 cm',
|
||||
}, { x: 50, y: 0 }));
|
||||
expect(prims.length).toBe(2);
|
||||
expect(prims[0].kind).toBe('line');
|
||||
const txt = prims[1];
|
||||
if (txt.kind !== 'text') throw new Error('erwartete text');
|
||||
expect(txt.text).toBe('250 cm');
|
||||
});
|
||||
|
||||
it('leader: Linie + Label am Ende', () => {
|
||||
const prims = elementToPrimitives(el('ld', 'leader', {
|
||||
x1: 10, y1: 10, x2: 80, y2: 60, text: 'A1', fontSize: 14,
|
||||
}));
|
||||
expect(prims.length).toBe(2);
|
||||
expect(prims[0].kind).toBe('line');
|
||||
const txt = prims[1];
|
||||
if (txt.kind !== 'text') throw new Error('erwartete text');
|
||||
expect(txt.text).toBe('A1');
|
||||
expect(txt.fontSize).toBe(14);
|
||||
});
|
||||
|
||||
it('revcloud: geschlossener Punktzug', () => {
|
||||
const prims = elementToPrimitives(el('rc', 'revcloud', {
|
||||
points: [{ x: 0, y: 0 }, { x: 50, y: 0 }, { x: 50, y: 30 }],
|
||||
}));
|
||||
expect(prims.length).toBe(1);
|
||||
const p = prims[0];
|
||||
if (p.kind !== 'polyline') throw new Error('erwartete polyline');
|
||||
expect(p.close).toBe(true);
|
||||
});
|
||||
|
||||
it('chair: gefuelltes Rechteck mit Fallback-Farbe', () => {
|
||||
const prims = elementToPrimitives(el('ch', 'chair', {}, { x: 50, y: 50, width: 20, height: 20 }));
|
||||
const p = prims[0];
|
||||
if (p.kind !== 'rect') throw new Error('erwartete rect');
|
||||
expect(p.fill).toBe('#4a90d9');
|
||||
expect(p.x).toBe(40);
|
||||
expect(p.y).toBe(40);
|
||||
});
|
||||
|
||||
it('table: Kreis mit Fallback-Farbe und Radius aus width', () => {
|
||||
const prims = elementToPrimitives(el('tb', 'table', {}, { x: 0, y: 0, width: 60, height: 60 }));
|
||||
const p = prims[0];
|
||||
if (p.kind !== 'circle') throw new Error('erwartete circle');
|
||||
expect(p.radius).toBe(30);
|
||||
expect(p.fill).toBe('#8b7355');
|
||||
});
|
||||
|
||||
it('stage: dunkles Rechteck', () => {
|
||||
const prims = elementToPrimitives(el('st', 'stage', {}, { x: 0, y: 0, width: 200, height: 100 }));
|
||||
const p = prims[0];
|
||||
if (p.kind !== 'rect') throw new Error('erwartete rect');
|
||||
expect(p.fill).toBe('#3a3a4a');
|
||||
expect(p.w).toBe(200);
|
||||
expect(p.h).toBe(100);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user