Skip to content

Commit abc07e9

Browse files
Merge pull request #53 from simulate-digital-rail/operations
Yaramo Operations
2 parents 8fa8c12 + 2aa6107 commit abc07e9

File tree

16 files changed

+3599
-8
lines changed

16 files changed

+3599
-8
lines changed

poetry.lock

Lines changed: 700 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ packages = [{include = "yaramo"}]
1010
python = "^3.11"
1111
pyproj = "^3.6.1"
1212
simplejson = "^3.19.2"
13+
networkx = {extras = ["default"], version = "^3.4.2"}
1314
haversine = "^2.9.0"
1415

1516
[tool.poetry.group.dev.dependencies]

test/compare_test.py

Lines changed: 400 additions & 0 deletions
Large diffs are not rendered by default.

test/split_test.py

Lines changed: 948 additions & 0 deletions
Large diffs are not rendered by default.

test/topology_test.py

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
from yaramo.model import Edge, Node, Topology
1+
from yaramo.model import (
2+
Edge,
3+
Node,
4+
Route,
5+
Signal,
6+
SignalDirection,
7+
SignalFunction,
8+
SignalKind,
9+
Topology,
10+
Wgs84GeoNode,
11+
)
212

313
from .helper import create_edge, create_geo_node, create_node
414

@@ -19,8 +29,11 @@ def test_get_edge_by_nodes():
1929
assert len(topology.edges) == 1
2030

2131
def _test_edge(_node_a, _node_b, _expected_edge):
22-
_edge = topology.get_edge_by_nodes(_node_a, _node_b)
23-
assert _edge == _expected_edge
32+
_edge_list = topology.get_edge_by_nodes(_node_a, _node_b)
33+
if not _edge_list:
34+
assert _expected_edge is None
35+
else:
36+
assert _edge_list[0] == _expected_edge
2437

2538
_test_edge(node_a, node_b, edge)
2639
_test_edge(node_b, node_a, edge)
@@ -83,3 +96,45 @@ def test_station_topology():
8396
assert point_b.connected_edge_on_left == edge_2a
8497
assert len(end_b.connected_edges) == 1
8598
assert end_b.connected_edge_on_head == edge_3
99+
100+
101+
def test_contains_method():
102+
topology = Topology()
103+
node_1 = Node(geo_node=Wgs84GeoNode(0, 0))
104+
node_2 = Node(geo_node=Wgs84GeoNode(0, 5))
105+
node_3 = Node(geo_node=Wgs84GeoNode(10, 0)) # Point
106+
node_4 = Node(geo_node=Wgs84GeoNode(20, 0))
107+
edge_1 = Edge(node_1, node_3)
108+
edge_2 = Edge(node_2, node_3)
109+
edge_3 = Edge(node_3, node_4)
110+
111+
signal_1 = Signal(
112+
edge_1, 5.0, SignalDirection.IN, SignalFunction.Block_Signal, SignalKind.Hauptsignal
113+
)
114+
edge_1.signals.append(signal_1)
115+
signal_2 = Signal(
116+
edge_3, 3.0, SignalDirection.IN, SignalFunction.Block_Signal, SignalKind.Hauptsignal
117+
)
118+
edge_3.signals.append(signal_2)
119+
route_1 = Route(signal_1)
120+
route_1.edges.add(edge_1)
121+
route_1.edges.add(edge_3)
122+
route_1.end_signal = signal_2
123+
124+
topology.add_nodes([node_1, node_2, node_3, node_4])
125+
topology.add_edges([edge_1, edge_2, edge_3])
126+
topology.add_signals([signal_1, signal_2])
127+
topology.add_routes([route_1])
128+
assert node_1 in topology
129+
assert node_1.uuid in topology
130+
assert node_2 in topology
131+
assert [node_3, node_4] in topology
132+
assert [node_3.uuid, node_4.uuid] in topology
133+
assert edge_1 in topology
134+
assert [edge_2, edge_3] in topology
135+
assert signal_1 in topology
136+
assert signal_2 in topology
137+
assert route_1 in topology
138+
assert "test" not in topology
139+
assert ["test"] not in topology
140+
assert [node_1, "test"] not in topology

0 commit comments

Comments
 (0)