@@ -54,9 +54,9 @@ def test_reflectional_symmetry_axes_triangle(self):
5454 self .assertEqual (
5555 reflectional_symmetry_axes ((1 , 1 , 1 )),
5656 [
57- (Vertex (1 ), Edge (2 , 0 )),
58- (Vertex (2 ), Edge (0 , 1 )),
59- (Vertex (0 ), Edge (1 , 2 )),
57+ (Vertex (1 ), Edge (2 , 3 )),
58+ (Vertex (2 ), Edge (0 , 3 )),
59+ (Vertex (0 ), Edge (1 , 3 )),
6060 ],
6161 )
6262
@@ -74,9 +74,9 @@ def test_reflectional_symmetry_axes_square(self):
7474 self .assertEqual (
7575 reflectional_symmetry_axes ((1 , 1 , 1 , 1 )),
7676 [
77- (Edge (1 , 2 ), Edge (3 , 0 )),
77+ (Edge (1 , 4 ), Edge (3 , 4 )),
7878 (Vertex (1 ), Vertex (3 )),
79- (Edge (0 , 1 ), Edge (2 , 3 )),
79+ (Edge (0 , 4 ), Edge (2 , 4 )),
8080 (Vertex (0 ), Vertex (2 )),
8181 ],
8282 )
@@ -95,9 +95,32 @@ def test_reflectional_symmetry_axes_doubled_square(self):
9595 def test_reflectional_symmetry_axes_specular_pentagon (self ):
9696 self .assertEqual (
9797 reflectional_symmetry_axes ((1 , 1 , 2 , 3 , 2 )),
98- [(Vertex (3 ), Edge (0 , 1 ))],
98+ [(Vertex (3 ), Edge (0 , 5 ))],
9999 )
100100
101+ def test_edge_computes_second_endpoint (self ):
102+ e = Edge (2 , 4 )
103+ self .assertEqual (e .i , 2 )
104+ self .assertEqual (e .j , 3 )
105+ # wraps around the ring
106+ self .assertEqual (Edge (3 , 4 ).j , 0 )
107+
108+ def test_edge_normalizes_out_of_range_i (self ):
109+ self .assertEqual (Edge (- 1 , 5 ), Edge (4 , 5 ))
110+ self .assertEqual (Edge (7 , 5 ), Edge (2 , 5 ))
111+
112+ def test_edge_rejects_non_positive_ring_size (self ):
113+ with self .assertRaises (ValueError ):
114+ Edge (0 , 0 )
115+ with self .assertRaises (ValueError ):
116+ Edge (0 , - 1 )
117+
118+ def test_edge_supports_pattern_matching (self ):
119+ match Edge (2 , 4 ):
120+ case Edge (i , j ):
121+ self .assertEqual (i , 2 )
122+ self .assertEqual (j , 3 )
123+
101124
102125if __name__ == '__main__' :
103126 unittest .main ()
0 commit comments