|
| 1 | +import type { SerializedHyperGraph } from "@tscircuit/hypergraph" |
| 2 | + |
| 3 | +const REGION_SIZE = 1.6 |
| 4 | + |
| 5 | +const gridPoint = (x: number, y: number) => ({ x: x * 2, y: y * 2 }) |
| 6 | + |
| 7 | +const createRegion = ( |
| 8 | + regionId: string, |
| 9 | + x: number, |
| 10 | + y: number, |
| 11 | + pointIds: string[], |
| 12 | +): NonNullable<SerializedHyperGraph["regions"]>[number] => ({ |
| 13 | + regionId, |
| 14 | + pointIds, |
| 15 | + d: { |
| 16 | + center: gridPoint(x, y), |
| 17 | + width: REGION_SIZE, |
| 18 | + height: REGION_SIZE, |
| 19 | + }, |
| 20 | +}) |
| 21 | + |
| 22 | +const createPort = ( |
| 23 | + portId: string, |
| 24 | + region1Id: string, |
| 25 | + region2Id: string, |
| 26 | + x: number, |
| 27 | + y: number, |
| 28 | +): NonNullable<SerializedHyperGraph["ports"]>[number] => ({ |
| 29 | + portId, |
| 30 | + region1Id, |
| 31 | + region2Id, |
| 32 | + d: { |
| 33 | + ...gridPoint(x, y), |
| 34 | + z: 0, |
| 35 | + }, |
| 36 | +}) |
| 37 | + |
| 38 | +const routeA = { |
| 39 | + connectionId: "route-a", |
| 40 | + startRegionId: "start-a", |
| 41 | + endRegionId: "end-a", |
| 42 | + mutuallyConnectedNetworkId: "net-0", |
| 43 | +} |
| 44 | + |
| 45 | +const routeB = { |
| 46 | + connectionId: "route-b", |
| 47 | + startRegionId: "start-b", |
| 48 | + endRegionId: "end-b", |
| 49 | + mutuallyConnectedNetworkId: "net-0", |
| 50 | +} |
| 51 | + |
| 52 | +export const sameNetSharedBottleneckFixture: SerializedHyperGraph = { |
| 53 | + regions: [ |
| 54 | + createRegion("start-a", 0, 2, ["a-in"]), |
| 55 | + createRegion("start-b", 0, 1, ["b-in"]), |
| 56 | + createRegion("left-shared", 1, 1.5, ["a-in", "b-in", "shared-x"]), |
| 57 | + createRegion("right-shared", 2, 1.5, ["shared-x", "a-out", "b-out"]), |
| 58 | + createRegion("end-a", 3, 2, ["a-out"]), |
| 59 | + createRegion("end-b", 3, 1, ["b-out"]), |
| 60 | + ], |
| 61 | + ports: [ |
| 62 | + createPort("a-in", "start-a", "left-shared", 0.5, 1.75), |
| 63 | + createPort("b-in", "start-b", "left-shared", 0.5, 1.25), |
| 64 | + createPort("shared-x", "left-shared", "right-shared", 1.5, 1.5), |
| 65 | + createPort("a-out", "right-shared", "end-a", 2.5, 1.75), |
| 66 | + createPort("b-out", "right-shared", "end-b", 2.5, 1.25), |
| 67 | + ], |
| 68 | + connections: [routeA, routeB], |
| 69 | +} |
0 commit comments