@@ -48,6 +48,18 @@ class Side:
48
48
Side(length=5, angle=Angle(degrees=45.6), next_side=None)
49
49
>>> Side(5, Angle(45.6), Side(1, Angle(2))) # doctest: +ELLIPSIS
50
50
Side(length=5, angle=Angle(degrees=45.6), next_side=Side(length=1, angle=Angle(d...
51
+ >>> Side(-1)
52
+ Traceback (most recent call last):
53
+ ...
54
+ TypeError: length must be a positive numeric value.
55
+ >>> Side(5, None)
56
+ Traceback (most recent call last):
57
+ ...
58
+ TypeError: angle must be an Angle object.
59
+ >>> Side(5, Angle(90), "Invalid next_side")
60
+ Traceback (most recent call last):
61
+ ...
62
+ TypeError: next_side must be a Side or None.
51
63
"""
52
64
53
65
length : float
@@ -162,6 +174,19 @@ class Polygon:
162
174
163
175
>>> Polygon()
164
176
Polygon(sides=[])
177
+ >>> polygon = Polygon()
178
+ >>> polygon.add_side(Side(5)).get_side(0)
179
+ Side(length=5, angle=Angle(degrees=90), next_side=None)
180
+ >>> polygon.get_side(1)
181
+ Traceback (most recent call last):
182
+ ...
183
+ IndexError: list index out of range
184
+ >>> polygon.set_side(0, Side(10)).get_side(0)
185
+ Side(length=10, angle=Angle(degrees=90), next_side=None)
186
+ >>> polygon.set_side(1, Side(10))
187
+ Traceback (most recent call last):
188
+ ...
189
+ IndexError: list assignment index out of range
165
190
"""
166
191
167
192
sides : list [Side ] = field (default_factory = list )
@@ -207,6 +232,10 @@ class Rectangle(Polygon):
207
232
30
208
233
>>> rectangle_one.area()
209
234
50
235
+ >>> Rectangle(-5, 10)
236
+ Traceback (most recent call last):
237
+ ...
238
+ TypeError: length must be a positive numeric value.
210
239
"""
211
240
212
241
def __init__ (self , short_side_length : float , long_side_length : float ) -> None :
@@ -254,6 +283,5 @@ def perimeter(self) -> float:
254
283
def area (self ) -> float :
255
284
return super ().area ()
256
285
257
-
258
286
if __name__ == "__main__" :
259
287
__import__ ("doctest" ).testmod ()
0 commit comments