Files
houseplan-card/test/zero-walls.test.mjs
T
2026-09-06 17:38:47 +03:00

52 lines
2.1 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {
resolveZeroWalls, zeroWallHasOpening, zeroWallStyleOf,
} from '../test-build/zero-walls.js';
const model = {
rooms: [
{ id: 'left', poly: [[0, 0], [500, 0], [500, 1000], [0, 1000]] },
{ id: 'right', poly: [[500, 0], [1000, 0], [1000, 1000], [500, 1000]] },
],
wall_segments: [
{ id: 'shared-zero', a: [500, 0], b: [500, 1000], cm: 0 },
{ id: 'positive', a: [0, 0], b: [500, 0], cm: 15 },
],
partitions: [{ id: 'free-zero', a: [100, 200], b: [400, 200], cm: 0 }],
};
test('missing/unknown style is dashed and every current cm:0 source shares the policy', () => {
assert.equal(zeroWallStyleOf({}), 'dashed');
assert.equal(zeroWallStyleOf({ zero_wall_style: 'future' }), 'dashed');
const result = resolveZeroWalls({}, model, 1000, 0.1);
assert.equal(result.style, 'dashed');
assert.equal(result.contour.length, 1);
assert.equal(result.lines.length, 2);
assert.equal(result.barriers.length, 0);
assert.deepEqual(result.transmissive, result.contour);
});
test('solid style keeps identical geometry and turns every zero axis into a barrier', () => {
const dashed = resolveZeroWalls({}, model, 1000, 0.1);
const solid = resolveZeroWalls({ zero_wall_style: 'solid' }, model, 1000, 0.1);
assert.deepEqual(solid.lines, dashed.lines);
assert.deepEqual(solid.contour, dashed.contour);
assert.deepEqual(solid.barriers, solid.lines);
assert.deepEqual(solid.transmissive, []);
});
test('legacy open spans project read-only into the same contour answer', () => {
const legacy = resolveZeroWalls({
open_spans: [{ a: [0.5, 0.25], b: [0.5, 0.75] }],
}, { ...model, wall_segments: [] }, 1000, 0.1);
assert.deepEqual(legacy.contour, [[500, 250, 500, 750]]);
});
test('opening host guard is exact and ignores another carrier', () => {
const openings = [{ host: { kind: 'partition', id: 'p1', t: 0.5 } }];
assert.equal(zeroWallHasOpening(openings, { kind: 'partition', id: 'p1' }), true);
assert.equal(zeroWallHasOpening(openings, { kind: 'wall', id: 'p1' }), false);
});