11import pytest
22
33from yaramo .model import (
4- DbrefGeoNode ,
54 Edge ,
5+ EuclideanGeoNode ,
66 Node ,
7- Route ,
87 Signal ,
98 SignalDirection ,
109 SignalFunction ,
1110 SignalKind ,
1211 Topology ,
13- Wgs84GeoNode ,
1412)
1513from yaramo .operations import Compare , CompareMode , CompareResult
1614
1715
1816def test_identical_topologies ():
1917 topology = Topology ()
20- node_1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
21- node_2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
22- node_3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
23- node_4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
24- node_5 = Node (geo_node = DbrefGeoNode (30 , 0 ))
25- node_6 = Node (geo_node = DbrefGeoNode (30 , 10 ))
18+ node_1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
19+ node_2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
20+ node_3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
21+ node_4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
22+ node_5 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
23+ node_6 = Node (geo_node = EuclideanGeoNode (30 , 10 ))
2624 edge_1 = Edge (node_1 , node_3 )
2725 edge_2 = Edge (node_2 , node_3 )
2826 edge_3 = Edge (node_4 , node_3 )
@@ -50,12 +48,12 @@ def test_identical_topologies():
5048
5149def test_identical_topologies_but_ids ():
5250 topology_a = Topology ()
53- node_a1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
54- node_a2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
55- node_a3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
56- node_a4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
57- node_a5 = Node (geo_node = DbrefGeoNode (30 , 0 ))
58- node_a6 = Node (geo_node = DbrefGeoNode (30 , 10 ))
51+ node_a1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
52+ node_a2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
53+ node_a3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
54+ node_a4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
55+ node_a5 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
56+ node_a6 = Node (geo_node = EuclideanGeoNode (30 , 10 ))
5957 edge_a1 = Edge (node_a1 , node_a3 )
6058 edge_a2 = Edge (node_a2 , node_a3 )
6159 edge_a3 = Edge (node_a4 , node_a3 )
@@ -66,12 +64,12 @@ def test_identical_topologies_but_ids():
6664 topology_a .update_edge_lengths ()
6765
6866 topology_b = Topology ()
69- node_b1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
70- node_b2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
71- node_b3 = Node (geo_node = DbrefGeoNode (12 , 0 )) # x differs from Node A3
72- node_b4 = Node (geo_node = DbrefGeoNode (20 , 3 )) # y differs from Node A4
73- node_b5 = Node (geo_node = DbrefGeoNode (30 , 0 ))
74- node_b6 = Node (geo_node = DbrefGeoNode (30 , 10 ))
67+ node_b1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
68+ node_b2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
69+ node_b3 = Node (geo_node = EuclideanGeoNode (12 , 0 )) # x differs from Node A3
70+ node_b4 = Node (geo_node = EuclideanGeoNode (20 , 3 )) # y differs from Node A4
71+ node_b5 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
72+ node_b6 = Node (geo_node = EuclideanGeoNode (30 , 10 ))
7573 edge_b1 = Edge (node_b1 , node_b3 )
7674 edge_b2 = Edge (node_b2 , node_b3 )
7775 edge_b3 = Edge (node_b4 , node_b3 )
@@ -98,12 +96,12 @@ def test_identical_topologies_but_ids():
9896
9997def test_edge_diff_and_signal_distance ():
10098 topology_a = Topology ()
101- node_a1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
102- node_a2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
103- node_a3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
104- node_a4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
105- node_a5 = Node (geo_node = DbrefGeoNode (30 , 0 ))
106- node_a6 = Node (geo_node = DbrefGeoNode (30 , 10 ))
99+ node_a1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
100+ node_a2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
101+ node_a3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
102+ node_a4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
103+ node_a5 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
104+ node_a6 = Node (geo_node = EuclideanGeoNode (30 , 10 ))
107105 edge_a1 = Edge (node_a1 , node_a3 )
108106 edge_a2 = Edge (node_a2 , node_a3 )
109107 edge_a3 = Edge (node_a3 , node_a4 )
@@ -142,12 +140,12 @@ def test_edge_diff_and_signal_distance():
142140 topology_a .update_edge_lengths ()
143141
144142 topology_b = Topology ()
145- node_b1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
146- node_b2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
147- node_b3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
148- node_b4 = Node (geo_node = DbrefGeoNode (22 , 0 ))
149- node_b5 = Node (geo_node = DbrefGeoNode (32 , 0 ))
150- node_b6 = Node (geo_node = DbrefGeoNode (32 , 10 ))
143+ node_b1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
144+ node_b2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
145+ node_b3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
146+ node_b4 = Node (geo_node = EuclideanGeoNode (22 , 0 ))
147+ node_b5 = Node (geo_node = EuclideanGeoNode (32 , 0 ))
148+ node_b6 = Node (geo_node = EuclideanGeoNode (32 , 10 ))
151149 edge_b1 = Edge (node_b1 , node_b3 )
152150 edge_b2 = Edge (node_b2 , node_b3 )
153151 edge_b3 = Edge (node_b4 , node_b3 ) # Edge is reversed compared to edge_a3
@@ -195,23 +193,23 @@ def test_edge_diff_and_signal_distance():
195193 assert result .edge_length_difference == 2.0
196194 assert edge_a3 in result .edge_matching .element_matching
197195 assert edge_b3 == result .edge_matching .element_matching [edge_a3 ]
198- assert result .signal_distance == 4.0
199196 assert signal_a1 in result .signal_matching .element_matching
200197 assert signal_b1 == result .signal_matching .element_matching [signal_a1 ]
201198 assert signal_a2 in result .signal_matching .element_matching
202199 assert signal_b2 == result .signal_matching .element_matching [signal_a2 ]
203200 assert signal_a3 in result .signal_matching .element_matching
204201 assert signal_b3 == result .signal_matching .element_matching [signal_a3 ]
202+ assert result .signal_distance == 4.0
205203
206204
207205def test_exact_matching_with_overlapping_graph ():
208206 topology_a = Topology ()
209- node_a1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
210- node_a2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
211- node_a3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
212- node_a4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
213- node_a5 = Node (geo_node = DbrefGeoNode (30 , 0 ))
214- node_a6 = Node (geo_node = DbrefGeoNode (30 , 10 ))
207+ node_a1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
208+ node_a2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
209+ node_a3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
210+ node_a4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
211+ node_a5 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
212+ node_a6 = Node (geo_node = EuclideanGeoNode (30 , 10 ))
215213 edge_a1 = Edge (node_a1 , node_a3 )
216214 edge_a2 = Edge (node_a2 , node_a3 )
217215 edge_a3 = Edge (node_a3 , node_a4 )
@@ -222,12 +220,12 @@ def test_exact_matching_with_overlapping_graph():
222220 topology_a .update_edge_lengths ()
223221
224222 topology_b = Topology ()
225- node_b1 = Node (geo_node = DbrefGeoNode (0 , 0 ), uuid = node_a1 .uuid )
226- node_b2 = Node (geo_node = DbrefGeoNode (0 , 10 ), uuid = node_a2 .uuid )
227- node_b3 = Node (geo_node = DbrefGeoNode (12 , 0 ), uuid = node_a3 .uuid ) # x differs to Node A3
228- node_b4 = Node (geo_node = DbrefGeoNode (20 , 1 ), uuid = node_a4 .uuid ) # y differs to Node A3
229- node_b5 = Node (geo_node = DbrefGeoNode (- 10 , 0 ))
230- node_b6 = Node (geo_node = DbrefGeoNode (- 10 , 10 ))
223+ node_b1 = Node (geo_node = EuclideanGeoNode (0 , 0 ), uuid = node_a1 .uuid )
224+ node_b2 = Node (geo_node = EuclideanGeoNode (0 , 10 ), uuid = node_a2 .uuid )
225+ node_b3 = Node (geo_node = EuclideanGeoNode (12 , 0 ), uuid = node_a3 .uuid ) # x differs to Node A3
226+ node_b4 = Node (geo_node = EuclideanGeoNode (20 , 1 ), uuid = node_a4 .uuid ) # y differs to Node A3
227+ node_b5 = Node (geo_node = EuclideanGeoNode (- 10 , 0 ))
228+ node_b6 = Node (geo_node = EuclideanGeoNode (- 10 , 10 ))
231229 edge_b1 = Edge (node_b1 , node_b3 , uuid = edge_a1 .uuid )
232230 edge_b2 = Edge (node_b2 , node_b3 , uuid = edge_a2 .uuid )
233231 edge_b3 = Edge (node_b3 , node_b4 , uuid = edge_a3 .uuid )
@@ -252,12 +250,12 @@ def test_exact_matching_with_overlapping_graph():
252250
253251def test_non_isomorphic_topologies_different_node_and_edge_count ():
254252 topology_a = Topology ()
255- node_a1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
256- node_a2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
257- node_a3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
258- node_a4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
259- node_a5 = Node (geo_node = DbrefGeoNode (30 , 0 ))
260- node_a6 = Node (geo_node = DbrefGeoNode (30 , 10 ))
253+ node_a1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
254+ node_a2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
255+ node_a3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
256+ node_a4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
257+ node_a5 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
258+ node_a6 = Node (geo_node = EuclideanGeoNode (30 , 10 ))
261259 edge_a1 = Edge (node_a1 , node_a3 )
262260 edge_a2 = Edge (node_a2 , node_a3 )
263261 edge_a3 = Edge (node_a4 , node_a3 )
@@ -267,10 +265,10 @@ def test_non_isomorphic_topologies_different_node_and_edge_count():
267265 topology_a .add_edges ([edge_a1 , edge_a2 , edge_a3 , edge_a4 , edge_a5 ])
268266
269267 topology_b = Topology ()
270- node_b1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
271- node_b2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
272- node_b3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
273- node_b4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
268+ node_b1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
269+ node_b2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
270+ node_b3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
271+ node_b4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
274272 edge_b1 = Edge (node_b1 , node_b3 )
275273 edge_b2 = Edge (node_b2 , node_b3 )
276274 edge_b3 = Edge (node_b4 , node_b3 )
@@ -285,29 +283,29 @@ def test_non_isomorphic_topologies_different_node_and_edge_count():
285283
286284def test_non_isomorphic_topologies_same_node_and_edge_count ():
287285 topology_a = Topology ()
288- node_a1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
289- node_a2 = Node (geo_node = DbrefGeoNode (10 , 0 ))
290- node_a3 = Node (geo_node = DbrefGeoNode (20 , 0 ))
291- node_a4 = Node (geo_node = DbrefGeoNode (30 , 0 ))
292- node_a5 = Node (geo_node = DbrefGeoNode (40 , 10 ))
293- node_a6 = Node (geo_node = DbrefGeoNode (40 , 0 ))
286+ node_a1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
287+ node_a2 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
288+ node_a3 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
289+ node_a4 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
290+ node_a5 = Node (geo_node = EuclideanGeoNode (40 , 10 ))
291+ node_a6 = Node (geo_node = EuclideanGeoNode (40 , 0 ))
294292 edge_a1 = Edge (node_a1 , node_a2 )
295293 edge_a2 = Edge (node_a2 , node_a3 )
296294 edge_a2b = Edge (node_a2 , node_a3 )
297- edge_a2b .intermediate_geo_nodes .extend ([DbrefGeoNode (12 , 5 ), DbrefGeoNode (18 , 5 )])
295+ edge_a2b .intermediate_geo_nodes .extend ([EuclideanGeoNode (12 , 5 ), EuclideanGeoNode (18 , 5 )])
298296 edge_a3 = Edge (node_a3 , node_a4 )
299297 edge_a4 = Edge (node_a4 , node_a5 )
300298 edge_a5 = Edge (node_a4 , node_a6 )
301299 topology_a .add_nodes ([node_a1 , node_a2 , node_a3 , node_a4 , node_a5 , node_a6 ])
302300 topology_a .add_edges ([edge_a1 , edge_a2 , edge_a2b , edge_a3 , edge_a4 , edge_a5 ])
303301
304302 topology_b = Topology ()
305- node_b1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
306- node_b2 = Node (geo_node = DbrefGeoNode (10 , 0 ))
307- node_b3 = Node (geo_node = DbrefGeoNode (20 , 0 ))
308- node_b4 = Node (geo_node = DbrefGeoNode (30 , 0 ))
309- node_b5 = Node (geo_node = DbrefGeoNode (13 , 5 ))
310- node_b6 = Node (geo_node = DbrefGeoNode (23 , 5 ))
303+ node_b1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
304+ node_b2 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
305+ node_b3 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
306+ node_b4 = Node (geo_node = EuclideanGeoNode (30 , 0 ))
307+ node_b5 = Node (geo_node = EuclideanGeoNode (13 , 5 ))
308+ node_b6 = Node (geo_node = EuclideanGeoNode (23 , 5 ))
311309 edge_b1 = Edge (node_b1 , node_b2 )
312310 edge_b2 = Edge (node_b2 , node_b3 )
313311 edge_b3 = Edge (node_b3 , node_b4 )
@@ -325,21 +323,21 @@ def test_non_isomorphic_topologies_same_node_and_edge_count():
325323
326324def test_isomorphic_topologies_without_given_node_matching ():
327325 topology_a = Topology ()
328- node_a1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
329- node_a2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
330- node_a3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
331- node_a4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
326+ node_a1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
327+ node_a2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
328+ node_a3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
329+ node_a4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
332330 edge_a1 = Edge (node_a1 , node_a3 )
333331 edge_a2 = Edge (node_a2 , node_a3 )
334332 edge_a3 = Edge (node_a4 , node_a3 )
335333 topology_a .add_nodes ([node_a1 , node_a2 , node_a3 , node_a4 ])
336334 topology_a .add_edges ([edge_a1 , edge_a2 , edge_a3 ])
337335
338336 topology_b = Topology ()
339- node_b1 = Node (geo_node = DbrefGeoNode (0 , 0 ))
340- node_b2 = Node (geo_node = DbrefGeoNode (0 , 10 ))
341- node_b3 = Node (geo_node = DbrefGeoNode (10 , 0 ))
342- node_b4 = Node (geo_node = DbrefGeoNode (20 , 0 ))
337+ node_b1 = Node (geo_node = EuclideanGeoNode (0 , 0 ))
338+ node_b2 = Node (geo_node = EuclideanGeoNode (0 , 10 ))
339+ node_b3 = Node (geo_node = EuclideanGeoNode (10 , 0 ))
340+ node_b4 = Node (geo_node = EuclideanGeoNode (20 , 0 ))
343341 edge_b1 = Edge (node_b1 , node_b3 )
344342 edge_b2 = Edge (node_b2 , node_b3 )
345343 edge_b3 = Edge (node_b3 , node_b4 )
0 commit comments