Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 49 additions & 16 deletions tests/solver/cross-layer-heuristic-detour.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@
} from "lib/index"

const DISTRACTOR_COUNT = 8
const INTERMEDIATE_LAYER_DISTRACTOR_COUNT = 16
const START_TERMINAL_REGION = 0
const TOP_HUB_REGION = 1
const FIRST_DISTRACTOR_REGION = 2
const FIRST_CORRIDOR_REGION = FIRST_DISTRACTOR_REGION + DISTRACTOR_COUNT
const SECOND_CORRIDOR_REGION = FIRST_CORRIDOR_REGION + 1
const VIA_REGION = SECOND_CORRIDOR_REGION + 1
const FOURTH_CORRIDOR_REGION = VIA_REGION + 1
const FIRST_INTERMEDIATE_LAYER_DISTRACTOR_REGION = VIA_REGION + 1
const FOURTH_CORRIDOR_REGION =
FIRST_INTERMEDIATE_LAYER_DISTRACTOR_REGION +
INTERMEDIATE_LAYER_DISTRACTOR_COUNT
const FIFTH_CORRIDOR_REGION = FOURTH_CORRIDOR_REGION + 1
const BOTTOM_HUB_REGION = FIFTH_CORRIDOR_REGION + 1
const GOAL_TERMINAL_REGION = BOTTOM_HUB_REGION + 1
Expand All @@ -28,7 +32,10 @@
const FIRST_CORRIDOR_PORT = FIRST_DISTRACTOR_PORT + DISTRACTOR_COUNT
const SECOND_CORRIDOR_PORT = FIRST_CORRIDOR_PORT + 1
const VIA_ENTRY_PORT = SECOND_CORRIDOR_PORT + 1
const VIA_EXIT_PORT = VIA_ENTRY_PORT + 1
const FIRST_INTERMEDIATE_LAYER_DISTRACTOR_PORT = VIA_ENTRY_PORT + 1
const VIA_EXIT_PORT =
FIRST_INTERMEDIATE_LAYER_DISTRACTOR_PORT +
INTERMEDIATE_LAYER_DISTRACTOR_COUNT
const FOURTH_CORRIDOR_PORT = VIA_EXIT_PORT + 1
const FIFTH_CORRIDOR_PORT = FOURTH_CORRIDOR_PORT + 1

Expand Down Expand Up @@ -108,7 +115,7 @@
region2Id: GOAL_TERMINAL_REGION,
x: -0.5,
y: 0,
z: 1,
z: 5,
},
topologyDraft,
)
Expand Down Expand Up @@ -160,14 +167,29 @@
},
topologyDraft,
)

for (let index = 0; index < INTERMEDIATE_LAYER_DISTRACTOR_COUNT; index++) {
connectCrossLayerDetourPort(
{
portId: FIRST_INTERMEDIATE_LAYER_DISTRACTOR_PORT + index,
region1Id: VIA_REGION,
region2Id: FIRST_INTERMEDIATE_LAYER_DISTRACTOR_REGION + index,
x: 2.5,
y: -0.6 + index * 0.08,
z: 1 + (index % 4),
},
topologyDraft,
)
}

connectCrossLayerDetourPort(
{
portId: VIA_EXIT_PORT,
region1Id: VIA_REGION,
region2Id: FOURTH_CORRIDOR_REGION,
x: 2.5,
y: 0,
z: 1,
z: 5,
},
topologyDraft,
)
Expand All @@ -178,7 +200,7 @@
region2Id: FIFTH_CORRIDOR_REGION,
x: 1.6,
y: 0,
z: 1,
z: 5,
},
topologyDraft,
)
Expand All @@ -189,7 +211,7 @@
region2Id: BOTTOM_HUB_REGION,
x: 0.8,
y: 0,
z: 1,
z: 5,
},
topologyDraft,
)
Expand Down Expand Up @@ -218,15 +240,26 @@
regionCenterX[VIA_REGION] = 2.5
regionWidth[VIA_REGION] = 1
regionHeight[VIA_REGION] = 1
regionAvailableZMask[VIA_REGION] = 3
regionAvailableZMask[VIA_REGION] = 63

for (let index = 0; index < INTERMEDIATE_LAYER_DISTRACTOR_COUNT; index++) {
const regionId = FIRST_INTERMEDIATE_LAYER_DISTRACTOR_REGION + index
const z = 1 + (index % 4)
regionCenterX[regionId] = 2.5
regionCenterY[regionId] = -0.6 + index * 0.08
regionWidth[regionId] = 0.2
regionHeight[regionId] = 0.06
regionAvailableZMask[regionId] = 1 << z
}

regionCenterX[FOURTH_CORRIDOR_REGION] = 2.05
regionCenterX[FIFTH_CORRIDOR_REGION] = 1.2
regionCenterX[BOTTOM_HUB_REGION] = 0.25
regionCenterX[GOAL_TERMINAL_REGION] = -1
regionAvailableZMask[FOURTH_CORRIDOR_REGION] = 2
regionAvailableZMask[FIFTH_CORRIDOR_REGION] = 2
regionAvailableZMask[BOTTOM_HUB_REGION] = 2
regionAvailableZMask[GOAL_TERMINAL_REGION] = 2
regionAvailableZMask[FOURTH_CORRIDOR_REGION] = 32
regionAvailableZMask[FIFTH_CORRIDOR_REGION] = 32
regionAvailableZMask[BOTTOM_HUB_REGION] = 32
regionAvailableZMask[GOAL_TERMINAL_REGION] = 32

return {
portCount,
Expand All @@ -250,17 +283,17 @@
: `region ${regionId}`,
availableZ:
regionId === VIA_REGION
? [0, 1]
: regionAvailableZMask[regionId] === 2
? [1]
: [0],
? [0, 1, 2, 3, 4, 5]
: Array.from({ length: 6 }, (_, z) => z).filter(
(z) => (regionAvailableZMask[regionId]! & (1 << z)) !== 0,
),
})),
portMetadata: Array.from({ length: portCount }, (_, portId) => ({
name:
portId === START_PORT
? "start z0"
: portId === GOAL_PORT
? "goal z1"
? "goal z5"
: `port ${portId}`,
})),
}
Expand Down Expand Up @@ -298,7 +331,7 @@
titles: ["input topology", "solver result"],
}),
),
).toMatchSvgSnapshot(import.meta.path)

Check failure on line 334 in tests/solver/cross-layer-heuristic-detour.test.ts

View workflow job for this annotation

GitHub Actions / test

error:

Snapshot does not match. Diff saved at /home/runner/work/tiny-hypergraph/tiny-hypergraph/tests/solver/__snapshots__/cross-layer-heuristic-detour.diff.png at <anonymous> (/home/runner/work/tiny-hypergraph/tiny-hypergraph/tests/solver/cross-layer-heuristic-detour.test.ts:334:5)
expect(solver.solved).toBe(true)
expect(solver.failed).toBe(false)
})
Loading