mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 11:49:16 +00:00
test: multiwall smoke follows the strip-safe chamfer contract (#302)
Смок `smoke_multiwall_junction` держал старый контракт «клин за фаской пуст» — его проба лежит в перекрытии двух полос узла и по strip-safe правилу #302 обязана остаться заполненной. Пропущен в первом прогоне AC9, пойман CI. Issue: #302 User-Visible: no
This commit is contained in:
@@ -107,12 +107,15 @@ const result = await page.evaluate(async (source) => {
|
||||
const canonical = card._wallUnionGeometry();
|
||||
const node = new DOMPoint(source.node[0] * 1000, source.node[1] * 1000);
|
||||
// Midpoint between the R-bounded straight bevel and the old 1.80×H mitre.
|
||||
const discardedWedge = new DOMPoint(330.3808442725, 148.8560107825);
|
||||
// #302: this point lies in the OVERLAP of two incident strips, and the
|
||||
// chamfer is strip-safe now — it must stay filled (it used to be discarded,
|
||||
// which is exactly the hole class #302 removed).
|
||||
const retainedOverlap = new DOMPoint(330.3808442725, 148.8560107825);
|
||||
out.fixtureLoaded = card._spaceModel()?.rooms.length === 2
|
||||
&& card._spaceWalls.length === 7;
|
||||
out.planUsesCanonicalPath = !!planD && canonical?.d === planD;
|
||||
out.nodeRemainsFilled = !!path?.isPointInFill(node);
|
||||
out.excessWedgeIsEmpty = path && !path.isPointInFill(discardedWedge);
|
||||
out.stripOverlapRetained = !!path?.isPointInFill(retainedOverlap);
|
||||
out.planHasNoEnclosedHoles = enclosedSvgHoles(path, node) === 0;
|
||||
out.paperRemainsSolid = !!canonical?.paperD
|
||||
&& !!root().querySelector('.hp-paper');
|
||||
|
||||
Reference in New Issue
Block a user