@@ -5,7 +5,10 @@ import {
55 type TinyHyperGraphTopology ,
66} from "lib/index"
77
8- const createTopology = ( regionAvailableZMask : number ) : TinyHyperGraphTopology => ( {
8+ const createTopology = (
9+ regionAvailableZMask : number ,
10+ portZ : number ,
11+ ) : TinyHyperGraphTopology => ( {
912 portCount : 4 ,
1013 regionCount : 2 ,
1114 regionIncidentPorts : [ [ 0 , 1 , 2 , 3 ] , [ ] ] ,
@@ -24,7 +27,7 @@ const createTopology = (regionAvailableZMask: number): TinyHyperGraphTopology =>
2427 portAngleForRegion2 : new Int32Array ( 4 ) ,
2528 portX : new Float64Array ( [ 1 , 0 , - 1 , 0 ] ) ,
2629 portY : new Float64Array ( [ 0 , 1 , 0 , - 1 ] ) ,
27- portZ : new Int32Array ( 4 ) ,
30+ portZ : new Int32Array ( [ portZ , portZ , portZ , portZ ] ) ,
2831} )
2932
3033const createProblem = ( ) : TinyHyperGraphProblem => ( {
@@ -36,9 +39,9 @@ const createProblem = (): TinyHyperGraphProblem => ({
3639 regionNetId : new Int32Array ( 2 ) . fill ( - 1 ) ,
3740} )
3841
39- const getCrossingCost = ( regionAvailableZMask : number ) => {
42+ const getCrossingCost = ( regionAvailableZMask : number , portZ : number ) => {
4043 const solver = new TinyHyperGraphSolver (
41- createTopology ( regionAvailableZMask ) ,
44+ createTopology ( regionAvailableZMask , portZ ) ,
4245 createProblem ( ) ,
4346 )
4447
@@ -58,11 +61,12 @@ const getCrossingCost = (regionAvailableZMask: number) => {
5861 )
5962}
6063
61- test ( "same-layer crossings in known single-layer regions get an impossible-level penalty" , ( ) => {
62- const singleLayerCrossingCost = getCrossingCost ( 1 << 0 )
63- const multiLayerCrossingCost = getCrossingCost ( ( 1 << 0 ) | ( 1 << 1 ) )
64+ test ( "same-layer crossings in known single-layer regions are rejected as candidates" , ( ) => {
65+ const topLayerCrossingCost = getCrossingCost ( 1 << 0 , 0 )
66+ const bottomLayerCrossingCost = getCrossingCost ( 1 << 1 , 1 )
67+ const multiLayerCrossingCost = getCrossingCost ( ( 1 << 0 ) | ( 1 << 1 ) , 0 )
6468
65- expect ( singleLayerCrossingCost ) . toBeGreaterThan ( 10 )
69+ expect ( topLayerCrossingCost ) . toBe ( Number . POSITIVE_INFINITY )
70+ expect ( bottomLayerCrossingCost ) . toBe ( Number . POSITIVE_INFINITY )
6671 expect ( multiLayerCrossingCost ) . toBeLessThan ( 0.1 )
67- expect ( singleLayerCrossingCost ) . toBeGreaterThan ( multiLayerCrossingCost + 9 )
6872} )
0 commit comments