Skip to content

Commit 899de1c

Browse files
Update test_triangle.py
Expand triangle module tests
1 parent 506c463 commit 899de1c

1 file changed

Lines changed: 132 additions & 1 deletion

File tree

test/test_triangle.py

Lines changed: 132 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import cmath
2+
import math
3+
import pytest
4+
25
from electricpy.geometry import triangle
36
from electricpy.geometry import Point
47
from test import compare_points
@@ -66,4 +69,132 @@ def test_1(self):
6669
p2 = Point(1, 0)
6770
p3 = Point(1*cmath.cos(cmath.pi/3), 1*cmath.sin(cmath.pi/3))
6871
t = triangle.Triangle(p1, p2, p3)
69-
assert compare_points(t.circum_center(), Point(0.5, cmath.sqrt(3)/6))
72+
assert compare_points(t.circum_center(), Point(0.5, cmath.sqrt(3)/6))
73+
74+
75+
def test_triangle_perimeter_and_area():
76+
p1 = Point(0, 0)
77+
p2 = Point(3, 0)
78+
p3 = Point(0, 4)
79+
t = triangle.Triangle(p1, p2, p3)
80+
assert t.perimeter() == 12
81+
assert t.perimeters() == 12
82+
assert t.area() == 6
83+
84+
85+
def test_triangle_radii():
86+
p1 = Point(0, 0)
87+
p2 = Point(3, 0)
88+
p3 = Point(0, 4)
89+
t = triangle.Triangle(p1, p2, p3)
90+
assert t.in_radius() == 1
91+
assert t.circum_radius() == 2.5
92+
93+
94+
def test_triangle_invalid_points():
95+
p1 = Point(0, 0)
96+
p2 = Point(1, 1)
97+
p3 = Point(2, 2)
98+
with pytest.raises(ValueError):
99+
triangle.Triangle(p1, p2, p3)
100+
101+
102+
def test_triangle_init_validation_and_helpers():
103+
with pytest.raises(ValueError):
104+
triangle.Triangle(Point(0, 0), Point(1, 0))
105+
106+
with pytest.raises(TypeError):
107+
triangle.Triangle(Point(0, 0), (1, 0), Point(0, 1))
108+
109+
with pytest.raises(ValueError):
110+
triangle.Triangle(Point(0, 0), Point(0, 0), Point(1, 1))
111+
112+
assert triangle._as_float(1) == 1.0
113+
assert triangle._as_float(1 + 1e-13j) == 1.0
114+
with pytest.raises(ValueError):
115+
triangle._as_float(1 + 1e-3j)
116+
117+
assert triangle._is_close(1.0, 1.0 + 1e-10)
118+
assert not triangle._is_close(1.0, 1.01, rel_tol=1e-6, abs_tol=1e-6)
119+
120+
p0 = Point(0, 0)
121+
p1 = Point(2, 0)
122+
p2 = Point(0, 2)
123+
assert triangle._triangle_twice_area(p0, p1, p2) == 4.0
124+
125+
126+
def test_triangle_area_and_centers_errors():
127+
tri = object.__new__(triangle.Triangle)
128+
tri.points = (Point(0, 0), Point(1, 0), Point(0, 1))
129+
tri._tol = 1e-12
130+
tri.a = 0.0
131+
tri.b = 0.0
132+
tri.c = 0.0
133+
134+
with pytest.raises(ValueError):
135+
tri.in_center()
136+
137+
with pytest.raises(ValueError):
138+
tri.in_radius()
139+
140+
tri2 = object.__new__(triangle.Triangle)
141+
tri2.points = (Point(0, 0), Point(1, 0), Point(0, 1))
142+
tri2._tol = 1e-12
143+
tri2.a = 1.0
144+
tri2.b = 1.0
145+
tri2.c = 3.0
146+
147+
with pytest.raises(ValueError):
148+
tri2.area()
149+
150+
tri3 = object.__new__(triangle.Triangle)
151+
tri3.points = (Point(0, 0), Point(1, 0), Point(0, 1))
152+
tri3._tol = 1e-12
153+
tri3.a = 1.0
154+
tri3.b = 1.0
155+
tri3.c = 2.0
156+
157+
with pytest.raises(ValueError):
158+
tri3.circum_radius()
159+
160+
tri4 = object.__new__(triangle.Triangle)
161+
tri4.points = (Point(0, 0), Point(1, 0), Point(0, 1))
162+
tri4._tol = 1e-12
163+
tri4.a = 1.0
164+
tri4.b = 1.0
165+
tri4.c = 2.0 + 1e-13
166+
assert tri4.area() == 0.0
167+
168+
169+
def test_triangle_validation_helper():
170+
tri = object.__new__(triangle.Triangle)
171+
tri.points = (Point(0, 0), Point(1, 0), Point(2, 0))
172+
tri._tol = 1e-12
173+
tri.a = 1.0
174+
tri.b = 1.0
175+
tri.c = 2.1
176+
assert not tri._Triangle__is_valid()
177+
178+
tri.c = 2.0
179+
assert not tri._Triangle__is_valid()
180+
181+
tri.a = 1.0
182+
tri.b = 3.0
183+
tri.c = 1.0
184+
assert not tri._Triangle__is_valid()
185+
186+
tri.a = 3.0
187+
tri.b = 1.0
188+
tri.c = 1.0
189+
assert not tri._Triangle__is_valid()
190+
191+
tri.a = 1.0
192+
tri.b = 1.0
193+
tri.c = 1.0
194+
assert not tri._Triangle__is_valid()
195+
196+
tri.points = (Point(0, 0), Point(1, 0), Point(0, 1))
197+
tri.a = math.sqrt(2)
198+
tri.b = 1.0
199+
tri.c = 1.0
200+
assert tri._Triangle__is_valid()

0 commit comments

Comments
 (0)