mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-03 13:18:58 +00:00
31 lines
1.5 KiB
JavaScript
31 lines
1.5 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { openingSymbolOffset } from '../test-build/opening-symbol-placement.js';
|
|
|
|
const positiveFace = { ox: 0, oy: 20, cm: 20, side: 1 };
|
|
const negativeFace = { ox: 0, oy: -20, cm: 20, side: -1 };
|
|
|
|
test('default opening symbols stay centred regardless of the resolved room face', () => {
|
|
for (const type of ['door', 'window', 'gate', 'passage']) {
|
|
assert.deepEqual(openingSymbolOffset(type, false, 0, positiveFace), { ox: 0, oy: 0 });
|
|
assert.deepEqual(openingSymbolOffset(type, false, 0, negativeFace), { ox: 0, oy: 0 });
|
|
}
|
|
});
|
|
|
|
test('saved door and window flips use one canonical local edge', () => {
|
|
for (const type of ['door', 'window']) {
|
|
assert.deepEqual(openingSymbolOffset(type, true, 0, positiveFace), { ox: 0, oy: 20 });
|
|
assert.deepEqual(openingSymbolOffset(type, true, 0, negativeFace), { ox: 0, oy: 20 });
|
|
const diagonal = openingSymbolOffset(type, true, 90, positiveFace);
|
|
assert.ok(Math.abs(diagonal.ox + 20) < 1e-9);
|
|
assert.ok(Math.abs(diagonal.oy) < 1e-9);
|
|
}
|
|
});
|
|
|
|
test('gate leaves never translate and malformed faces fail centred', () => {
|
|
assert.deepEqual(openingSymbolOffset('gate', true, 0, positiveFace), { ox: 0, oy: 0 });
|
|
assert.deepEqual(openingSymbolOffset('gate', true, 45, negativeFace), { ox: 0, oy: 0 });
|
|
assert.deepEqual(openingSymbolOffset('door', true, NaN, positiveFace), { ox: 0, oy: 0 });
|
|
assert.deepEqual(openingSymbolOffset('window', true, 0, { ox: 0, oy: 0 }), { ox: 0, oy: 0 });
|
|
});
|