Skip to content

Commit 5ccf2a2

Browse files
committed
Add more rect2 tests
Add tests for projecting onto axis and containing point tests. * tests/test_geometry.py - rect2.project_onto_axis and rect2.contains_point
1 parent a55c131 commit 5ccf2a2

File tree

1 file changed

+191
-5
lines changed

1 file changed

+191
-5
lines changed

tests/test_geometry.py

Lines changed: 191 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,17 +1018,203 @@ def test_area(self):
10181018

10191019
self.assertEqual(21, _rect.area)
10201020

1021-
def test_project_onto_axis(self):
1022-
pass
1021+
def test_project_onto_axis_horizontal_unshifted(self):
1022+
_rect = rect2.Rect2(3, 7)
1023+
1024+
proj = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(1, 0))
1025+
1026+
self.assertEqual(0, proj.min)
1027+
self.assertEqual(3, proj.max)
1028+
self.assertEqual(1, proj.axis.x)
1029+
self.assertEqual(0, proj.axis.y)
1030+
1031+
proj2 = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(-1, 0))
1032+
1033+
self.assertEqual(-3, proj2.min)
1034+
self.assertEqual(0, proj2.max)
1035+
self.assertEqual(-1, proj2.axis.x)
1036+
self.assertEqual(0, proj2.axis.y)
1037+
1038+
def test_project_onto_axis_vertical_unshifted(self):
1039+
_rect = rect2.Rect2(5, 11)
1040+
1041+
proj = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(0, 1))
1042+
1043+
self.assertEqual(0, proj.min)
1044+
self.assertEqual(11, proj.max)
1045+
self.assertEqual(0, proj.axis.x)
1046+
self.assertEuqal(1, proj.axis.y)
1047+
1048+
proj2 = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(0, -1))
1049+
1050+
self.assertEqual(-11, proj.min)
1051+
self.assertEqual(0, proj.max)
1052+
self.assertEqual(0, proj.axis.x)
1053+
self.assertEqual(-1, proj.axis.y)
1054+
1055+
def test_project_onto_axis_diagonal_unshifted(self):
1056+
_rect = rect2.Rect2(1, 3)
1057+
_axis = vector2.Vector2(1, 1).normalize()
1058+
1059+
proj = rect2.Rect2.project_onto_axis(_rect, _axis)
1060+
1061+
self.assertAlmostEqual(0, proj.min)
1062+
self.assertAlmostEqual(2.82842712472, proj.max)
1063+
self.assertAlmostEqual(_axis.x, proj.axis.x)
1064+
self.assertAlmostEqual(_axis.y, proj.axis.y)
1065+
1066+
_axis2 = vector2.Vector2(-1, -1).normalize()
1067+
proj2 = rect2.Rect2.project_onto_axis(_rect, _axis2)
1068+
1069+
self.assertAlmostEqual(-2.82842712472, proj2.min)
1070+
self.assertAlmostEqual(0, proj2.max)
1071+
self.assertAlmostEqual(_axis2.x, proj.axis.x)
1072+
self.assertAlmostEqual(_axis2.y, proj.axis.y)
1073+
1074+
1075+
def test_project_onto_axis_horizontal_shifted(self):
1076+
_rect = rect2.Rect2(3, 2, vector2.Vector2(2, 2))
1077+
1078+
proj = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(1, 0))
1079+
1080+
self.assertEqual(2, proj.min)
1081+
self.assertEqual(5, proj.max)
1082+
self.assertEqual(1, proj.axis.x)
1083+
self.assertEqual(0, proj.axis.y)
1084+
1085+
proj2 = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(-1, 0))
1086+
1087+
self.assertEqual(-5, proj.min)
1088+
self.assertEqual(-2, proj.max)
1089+
self.assertEqual(-1, proj.axis.x)
1090+
self.assertEqual(0, proj.axis.y)
1091+
1092+
_rect2 = rect2.Rect2(3, 2, vector2.Vector2(-1, 2))
1093+
1094+
proj3 = rect2.Rect2.project_onto_axis(_rect2, vector2.Vector2(-1, 0))
1095+
1096+
self.assertEqual(-2, proj3.min)
1097+
self.assertEqual(1, proj3.max)
1098+
self.assertEqual(-1, proj3.axis.x)
1099+
self.assertEqual(0, proj3.axis.y)
1100+
1101+
def test_project_onto_axis_vertical_shifted(self):
1102+
_rect = rect2.Rect2(4, 7, vector2.Vector2(1, 3))
1103+
1104+
proj = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(0, 1))
1105+
1106+
self.assertEqual(3, proj.min)
1107+
self.assertEqual(10, proj.max)
1108+
self.assertEqual(0, proj.axis.x)
1109+
self.assertEqual(1, proj.axis.y)
1110+
1111+
proj2 = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(0, -1))
1112+
1113+
self.assertEqual(-10, proj.min)
1114+
self.assertEqual(-3, proj.max)
1115+
self.assertEqual(0, proj.axis.x)
1116+
self.assertEqual(-1, proj.axis.y)
1117+
1118+
_rect2 = rect2.Rect2(4, 7, vector2.Vector2(1, -2))
1119+
1120+
proj3 = rect2.Rect2.project_onto_axis(_rect, vector2.Vector2(0, -1))
1121+
1122+
self.assertEqual(-5, proj3.min)
1123+
self.assertEqual(2, proj3.max)
1124+
self.assertEqual(0, proj3.axis.x)
1125+
self.assertEqual(-1, proj3.axis.y)
1126+
1127+
def test_project_onto_axis_diagonal_shifted(self):
1128+
_rect = rect2.Rect2(3, 5, vector2.Vector2(2, 2))
1129+
_axis = vector2.Vector2(1, 1).normalize()
1130+
1131+
proj = rect2.Rect2.project_onto_axis(_rect, _axis)
1132+
1133+
self.assertAlmostEqual(2.82842712, proj.min)
1134+
self.assertAlmostEqual(8.48528137, proj.max)
1135+
self.assertAlmostEqual(_axis.x, proj.axis.x)
1136+
self.assertAlmostEqual(_axis.y, proj.axis.y)
1137+
1138+
_axis2 = vector2.Vector2(-1, -1).normalize()
1139+
proj2 = rect2.Rect2.project_onto_axis(_rect, _axis2)
1140+
1141+
self.assertAlmostEqual(-8.48528137, proj2.min)
1142+
self.assertAlmostEqual(-2.82842712, proj2.max)
1143+
self.assertAlmostEqual(_axis2.x, proj2.axis.x)
1144+
self.assertAlmostEqual(_axis2.y, proj2.axis.y)
1145+
1146+
_rect2 = rect2.Rect2(3, 5, vector2.Vector2(-1, -2))
1147+
proj3 = rect2.Rect2.project_onto_axis(_rect2, _axis2)
1148+
1149+
self.assertAlmostEqual(-3.53553391, proj3.min)
1150+
self.assertAlmostEqual(2.12132034, proj3.max)
1151+
self.assertAlmostEqual(_axis2.x, proj3.axis.x)
1152+
self.assertAlmostEqual(_axis3.y, proj3.axis.y)
10231153

10241154
def test_contains_point_false(self):
1025-
pass
1155+
_rect = rect2.Rect2(1, 2, vector2.Vector2(2, 2))
1156+
1157+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(0, 0))
1158+
self.assertFalse(edge)
1159+
self.assertFalse(inner)
1160+
1161+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(4, 2))
1162+
self.assertFalse(edge)
1163+
self.assertFalse(inner)
1164+
1165+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(2, 5))
1166+
self.assertFalse(edge)
1167+
self.assertFalse(inner)
10261168

10271169
def test_contains_point_edge(self):
1028-
pass
1170+
_rect = rect2.Rect2(3, 2, vector2.Vector2(-2, -2))
1171+
1172+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(-2, -2))
1173+
self.assertTrue(edge, msg="mincorner")
1174+
self.assertFalse(inner)
1175+
1176+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(1, -2))
1177+
self.assertTrue(edge, msg="corner")
1178+
self.assertFalse(inner)
1179+
1180+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(1, 0))
1181+
self.assertTrue(edge, msg="maxcorner")
1182+
self.assertFalse(inner)
1183+
1184+
edge, inner = rect.Rect2.contains_point(_rect, vector2.Vector2(-2, 0))
1185+
self.assertTrue(edge, msg="corner")
1186+
self.assertFalse(inner)
1187+
1188+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(-1, -2))
1189+
self.assertTrue(edge, msg="y-min side")
1190+
self.assertFalse(inner)
1191+
1192+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(0, 0))
1193+
self.assertTrue(edge, msg="y-max side")
1194+
self.assertFalse(inner)
1195+
1196+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(-2, -1))
1197+
self.assertTrue(edge, msg="x-min side")
1198+
self.assertFalse(inner)
1199+
1200+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(1, -0.5))
1201+
self.assertTrue(edge, msg="x-max side, floating")
1202+
self.assertFalse(inner)
10291203

10301204
def test_contains_point_contained(self):
1031-
pass
1205+
_rect = rect2.Rect2(4, 5, vector2.Vector2(3, 3))
1206+
1207+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(5, 6))
1208+
self.assertFalse(edge)
1209+
self.assertTrue(inner)
1210+
1211+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(5.5, 6.5))
1212+
self.assertFalse(edge)
1213+
self.assertTrue(inner)
1214+
1215+
edge, inner = rect2.Rect2.contains_point(_rect, vector2.Vector2(4.5, 7.5))
1216+
self.assertFalse(edge)
1217+
self.assertTrue(inner)
10321218

10331219
def test_find_intersection_rect_poly_false(self):
10341220
pass

0 commit comments

Comments
 (0)