FA-66856 / Railway interlocking logic / Open access
Route request admission: re-request of a set route · case 01
Re-requesting a route that is already set reports a conflict with itself.
ROOT CAUSE
The already-set check was dropped, so the route is compared against its own lock entry.
VERIFIED REPAIR
Answer already-set before any occupancy or conflict checks.
Unsuccessful approach: Moving the already-set check after the occupancy test reports occupied once a train has entered its own route.
Case contract
x has a route table (sections, overlap sections, required point positions, direction), the locked routes, occupied sections and a requested route. Return unknown-route, already-set, occupied (any path section occupied), opposing:<r> (shared path/overlap with an opposite-direction locked route), section-conflict:<r>, point-conflict:<r> (a shared point needed in the other position) or granted. Locked routes are examined in sorted order. Overlap may overlap another overlap.
Why this case matters
Interlocking logic decides whether trains may be given authority; a wrong decision at this point either grants unsafe movements or strands traffic.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
routes = x['routes']
name = x['request']
if name not in routes:
return 'unknown-route'
req = routes[name]
occ = set(x['occupied'])
if any(s in occ for s in req['sections']):
return 'occupied'
for other in sorted(x['locked']):
o = routes[other]
mine = set(req['sections'])
theirs = set(o['sections'])
shared = (mine & (theirs | set(o['overlap']))) | (set(req['overlap']) & theirs)
if shared and o['dir'] != req['dir']:
return 'opposing:' + other
if shared:
return 'section-conflict:' + other
for p, pos in sorted(req['points'].items()):
if p in o['points'] and o['points'][p] != pos:
return 'point-conflict:' + other
return 'granted'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 5', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['C', 'D'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 6', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S10-S7', 'S7-S2', 'S1-S4'], 'occupied': ['E'], 'request': 'S10-S7'}, 'already-set'), ('boundary: train standing in the second path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S1-S3'}, 'occupied'), ('boundary: train standing in the first path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['A'], 'request': 'S1-S4'}, 'occupied'), ('sampled regression 1', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S7-S2'], 'occupied': [], 'request': 'S7-S2'}, 'already-set'), ('control 4', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['G', 'K'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('control 7', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S13-S14', 'S11-S12'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 35', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S11-S12', 'S13-S14'], 'occupied': [], 'request': 'S13-S14'}, 'already-set'), ('boundary: shared point in the same lie', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S13-S14'}, 'section-conflict:S3-S5'), ('boundary: points agree between two locked routes', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S13-S14'}, 'granted'), ('control 12', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['G'], 'request': 'S11-S12'}, 'granted'), ('control 15', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S10-S7'}, 'granted'), ('control 18', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6', 'S11-S12', 'S3-S5'], 'occupied': ['J'], 'request': 'S6-S2'}, 'section-conflict:S8-S6')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 72', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4', 'S7-S2'], 'occupied': ['F'], 'request': 'S7-S2'}, 'already-set'), ('sampled regression 60', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2', 'S10-S7'], 'occupied': ['B', 'L'], 'request': 'S6-S2'}, 'already-set'), ('boundary: overlaps overlapping each other', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S7-S2'}, 'section-conflict:S6-S2'), ('boundary: overlap overlapping another path', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S1-S3'}, 'section-conflict:S3-S5'), ('control 23', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S3-S5'}, 'section-conflict:S4-S9'), ('sampled regression 26', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S13-S14'], 'occupied': ['B', 'D', 'H'], 'request': 'S13-S14'}, 'already-set'), ('control 29', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': ['K'], 'request': 'S8-S6'}, 'opposing:S13-S14')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 8', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['B', 'D'], 'request': 'S1-S4'}, 'already-set'), ('sampled regression 44', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S7-S2', 'S11-S12', 'S13-S14'], 'occupied': ['A', 'H'], 'request': 'S7-S2'}, 'already-set'), ('boundary: opposite direction elsewhere on the layout', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': [], 'request': 'S11-S12'}, 'granted'), ('sampled regression 34', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S1-S3'], 'occupied': [], 'request': 'S1-S3'}, 'already-set'), ('control 37', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route'), ('control 40', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['D'], 'request': 'S3-S5'}, 'granted')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 53', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': ['G'], 'request': 'S8-S6'}, 'already-set'), ('sampled regression 11', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['D', 'F', 'H'], 'request': 'S1-S4'}, 'already-set'), ('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('boundary: point needed reverse while normal locked', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': [], 'request': 'S1-S4'}, 'point-conflict:S13-S14'), ('control 45', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S1-S3'], 'occupied': ['E'], 'request': 'S7-S2'}, 'opposing:S1-S3'), ('control 48', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['K'], 'request': 'S13-S14'}, 'granted'), ('control 51', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['F'], 'request': 'S6-S2'}, 'granted')]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: re-request of a set route under a train | occupied | already-set | Failed |
| sampled regression 5 | section-conflict:S1-S3 | already-set | Failed |
| sampled regression 6 | occupied | already-set | Failed |
| boundary: train standing in the second path section | occupied | occupied | Passed |
| boundary: train standing in the first path section | occupied | occupied | Passed |
| sampled regression 1 | opposing:S1-S4 | already-set | Failed |
| control 4 | point-conflict:S1-S4 | point-conflict:S1-S4 | Passed |
| control 7 | unknown-route | unknown-route | Passed |
SHA-256 / acd3c3bb2107a23d03d6b8e82a6a86cc6a93917bee297b4f6c656ee3861d3672
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
routes = x['routes']
name = x['request']
if name not in routes:
return 'unknown-route'
req = routes[name]
occ = set(x['occupied'])
if any(s in occ for s in req['sections']):
return 'occupied'
if name in x['locked']:
return 'already-set'
for other in sorted(x['locked']):
o = routes[other]
mine = set(req['sections'])
theirs = set(o['sections'])
shared = (mine & (theirs | set(o['overlap']))) | (set(req['overlap']) & theirs)
if shared and o['dir'] != req['dir']:
return 'opposing:' + other
if shared:
return 'section-conflict:' + other
for p, pos in sorted(req['points'].items()):
if p in o['points'] and o['points'][p] != pos:
return 'point-conflict:' + other
return 'granted'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 5', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['C', 'D'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 6', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S10-S7', 'S7-S2', 'S1-S4'], 'occupied': ['E'], 'request': 'S10-S7'}, 'already-set'), ('boundary: train standing in the second path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S1-S3'}, 'occupied'), ('boundary: train standing in the first path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['A'], 'request': 'S1-S4'}, 'occupied'), ('sampled regression 1', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S7-S2'], 'occupied': [], 'request': 'S7-S2'}, 'already-set'), ('control 4', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['G', 'K'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('control 7', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S13-S14', 'S11-S12'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 35', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S11-S12', 'S13-S14'], 'occupied': [], 'request': 'S13-S14'}, 'already-set'), ('boundary: shared point in the same lie', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S13-S14'}, 'section-conflict:S3-S5'), ('boundary: points agree between two locked routes', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S13-S14'}, 'granted'), ('control 12', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['G'], 'request': 'S11-S12'}, 'granted'), ('control 15', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S10-S7'}, 'granted'), ('control 18', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6', 'S11-S12', 'S3-S5'], 'occupied': ['J'], 'request': 'S6-S2'}, 'section-conflict:S8-S6')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 72', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4', 'S7-S2'], 'occupied': ['F'], 'request': 'S7-S2'}, 'already-set'), ('sampled regression 60', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2', 'S10-S7'], 'occupied': ['B', 'L'], 'request': 'S6-S2'}, 'already-set'), ('boundary: overlaps overlapping each other', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S7-S2'}, 'section-conflict:S6-S2'), ('boundary: overlap overlapping another path', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S1-S3'}, 'section-conflict:S3-S5'), ('control 23', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S3-S5'}, 'section-conflict:S4-S9'), ('sampled regression 26', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S13-S14'], 'occupied': ['B', 'D', 'H'], 'request': 'S13-S14'}, 'already-set'), ('control 29', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': ['K'], 'request': 'S8-S6'}, 'opposing:S13-S14')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 8', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['B', 'D'], 'request': 'S1-S4'}, 'already-set'), ('sampled regression 44', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S7-S2', 'S11-S12', 'S13-S14'], 'occupied': ['A', 'H'], 'request': 'S7-S2'}, 'already-set'), ('boundary: opposite direction elsewhere on the layout', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': [], 'request': 'S11-S12'}, 'granted'), ('sampled regression 34', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S1-S3'], 'occupied': [], 'request': 'S1-S3'}, 'already-set'), ('control 37', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route'), ('control 40', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['D'], 'request': 'S3-S5'}, 'granted')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 53', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': ['G'], 'request': 'S8-S6'}, 'already-set'), ('sampled regression 11', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['D', 'F', 'H'], 'request': 'S1-S4'}, 'already-set'), ('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('boundary: point needed reverse while normal locked', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': [], 'request': 'S1-S4'}, 'point-conflict:S13-S14'), ('control 45', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S1-S3'], 'occupied': ['E'], 'request': 'S7-S2'}, 'opposing:S1-S3'), ('control 48', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['K'], 'request': 'S13-S14'}, 'granted'), ('control 51', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['F'], 'request': 'S6-S2'}, 'granted')]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: re-request of a set route under a train | occupied | already-set | Failed |
| sampled regression 5 | already-set | already-set | Passed |
| sampled regression 6 | occupied | already-set | Failed |
| boundary: train standing in the second path section | occupied | occupied | Passed |
| boundary: train standing in the first path section | occupied | occupied | Passed |
| sampled regression 1 | already-set | already-set | Passed |
| control 4 | point-conflict:S1-S4 | point-conflict:S1-S4 | Passed |
| control 7 | unknown-route | unknown-route | Passed |
SHA-256 / f4a7a280356be0b55c864a91d2325ed98eddba7dc4ac28fd6dbbcc38a8cf8a33
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
routes = x['routes']
name = x['request']
if name not in routes:
return 'unknown-route'
if name in x['locked']:
return 'already-set'
req = routes[name]
occ = set(x['occupied'])
if any(s in occ for s in req['sections']):
return 'occupied'
for other in sorted(x['locked']):
o = routes[other]
mine = set(req['sections'])
theirs = set(o['sections'])
shared = (mine & (theirs | set(o['overlap']))) | (set(req['overlap']) & theirs)
if shared and o['dir'] != req['dir']:
return 'opposing:' + other
if shared:
return 'section-conflict:' + other
for p, pos in sorted(req['points'].items()):
if p in o['points'] and o['points'][p] != pos:
return 'point-conflict:' + other
return 'granted'
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 5', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['C', 'D'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 6', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S10-S7', 'S7-S2', 'S1-S4'], 'occupied': ['E'], 'request': 'S10-S7'}, 'already-set'), ('boundary: train standing in the second path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S1-S3'}, 'occupied'), ('boundary: train standing in the first path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['A'], 'request': 'S1-S4'}, 'occupied'), ('sampled regression 1', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S7-S2'], 'occupied': [], 'request': 'S7-S2'}, 'already-set'), ('control 4', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['G', 'K'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('control 7', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S13-S14', 'S11-S12'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 35', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S11-S12', 'S13-S14'], 'occupied': [], 'request': 'S13-S14'}, 'already-set'), ('boundary: shared point in the same lie', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S13-S14'}, 'section-conflict:S3-S5'), ('boundary: points agree between two locked routes', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S13-S14'}, 'granted'), ('control 12', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['G'], 'request': 'S11-S12'}, 'granted'), ('control 15', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S10-S7'}, 'granted'), ('control 18', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6', 'S11-S12', 'S3-S5'], 'occupied': ['J'], 'request': 'S6-S2'}, 'section-conflict:S8-S6')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 72', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4', 'S7-S2'], 'occupied': ['F'], 'request': 'S7-S2'}, 'already-set'), ('sampled regression 60', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2', 'S10-S7'], 'occupied': ['B', 'L'], 'request': 'S6-S2'}, 'already-set'), ('boundary: overlaps overlapping each other', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S7-S2'}, 'section-conflict:S6-S2'), ('boundary: overlap overlapping another path', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S1-S3'}, 'section-conflict:S3-S5'), ('control 23', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S3-S5'}, 'section-conflict:S4-S9'), ('sampled regression 26', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S13-S14'], 'occupied': ['B', 'D', 'H'], 'request': 'S13-S14'}, 'already-set'), ('control 29', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': ['K'], 'request': 'S8-S6'}, 'opposing:S13-S14')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 8', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['B', 'D'], 'request': 'S1-S4'}, 'already-set'), ('sampled regression 44', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S7-S2', 'S11-S12', 'S13-S14'], 'occupied': ['A', 'H'], 'request': 'S7-S2'}, 'already-set'), ('boundary: opposite direction elsewhere on the layout', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': [], 'request': 'S11-S12'}, 'granted'), ('sampled regression 34', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S1-S3'], 'occupied': [], 'request': 'S1-S3'}, 'already-set'), ('control 37', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route'), ('control 40', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['D'], 'request': 'S3-S5'}, 'granted')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 53', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': ['G'], 'request': 'S8-S6'}, 'already-set'), ('sampled regression 11', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['D', 'F', 'H'], 'request': 'S1-S4'}, 'already-set'), ('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('boundary: point needed reverse while normal locked', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': [], 'request': 'S1-S4'}, 'point-conflict:S13-S14'), ('control 45', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S1-S3'], 'occupied': ['E'], 'request': 'S7-S2'}, 'opposing:S1-S3'), ('control 48', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['K'], 'request': 'S13-S14'}, 'granted'), ('control 51', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['F'], 'request': 'S6-S2'}, 'granted')]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: re-request of a set route under a train | already-set | already-set | Passed |
| sampled regression 5 | already-set | already-set | Passed |
| sampled regression 6 | already-set | already-set | Passed |
| boundary: train standing in the second path section | occupied | occupied | Passed |
| boundary: train standing in the first path section | occupied | occupied | Passed |
| sampled regression 1 | already-set | already-set | Passed |
| control 4 | point-conflict:S1-S4 | point-conflict:S1-S4 | Passed |
| control 7 | unknown-route | unknown-route | Passed |
SHA-256 / f516c5a6cddabd493aecab7c80dabea34f667fffd032c579f996749c2f37445b
Verification & scope
Stipulated toy interlocking contract for a bounded teaching model; it makes no claim of conformance to any railway signalling standard and omits real safety cases. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:47:47.511367+00:00.
Case digest / f352dfec14884666d644433843be7dfa1a3ef8fbe95549730c9e2d2479327c0c