MCPcopy Index your code
hub / github.com/OmkarPathak/pygorithm / _find_intersection_fuzzer

Method _find_intersection_fuzzer

tests/test_geometry.py:799–858  ·  view source on GitHub ↗
(self, points1, points2, exp_touching, exp_overlap, exp_mtv)

Source from the content-addressed store, hash-verified

797 self._contains_point_fuzzer(poly.points, vector2.Vector2(1, -3), False, True)
798
799 def _find_intersection_fuzzer(self, points1, points2, exp_touching, exp_overlap, exp_mtv):
800 if type(points1) != list:
801 points1 = points1.points
802 if type(points2) != list:
803 points2 = points2.points
804
805 for i in range(3):
806 offset1 = vector2.Vector2(random.uniform(-1000, 1000), random.uniform(-1000, 1000))
807 offset2 = vector2.Vector2(random.uniform(-1000, 1000), random.uniform(-1000, 1000))
808
809 new_points1 = []
810 for pt in points1:
811 new_points1.append(pt - offset1)
812
813 new_points2 = []
814 for pt in points2:
815 new_points2.append(pt - offset2)
816
817 new_poly1 = polygon2.Polygon2(new_points1)
818 new_poly2 = polygon2.Polygon2(new_points2)
819
820 touch, overlap, mtv = polygon2.Polygon2.find_intersection(new_poly1, new_poly2, offset1, offset2, True)
821 _invtouch, _invoverlap, _invmtv = polygon2.Polygon2.find_intersection(new_poly2, new_poly1, offset2, offset1, True)
822
823 help_msg = "\n\npoints1={}, points2={}, offset1={}, offset2={}\n\nexp_touching={}, " \
824 "exp_overlap={}, exp_mtv={}\n\ntouch={}, overlap={}, mtv={}\n\n" \
825 "_invtouch={}, _invoverlap={}, _invmtv={}\n\n" \
826 "orig_poly1={}\n\n" \
827 "orig_poly2={}\n\n".format(points1, points2, offset1,
828 offset2, exp_touching, exp_overlap, exp_mtv, touch, overlap, mtv,
829 _invtouch, _invoverlap, _invmtv, polygon2.Polygon2(points1),
830 polygon2.Polygon2(points2))
831 self.assertEqual(exp_touching, touch, msg=help_msg)
832 self.assertEqual(exp_overlap, overlap, msg=help_msg)
833 self.assertEqual(exp_touching, _invtouch, msg=help_msg)
834 self.assertEqual(exp_overlap, _invoverlap, msg=help_msg)
835
836 if exp_mtv is not None:
837 self.assertIsNotNone(mtv, msg=help_msg)
838 exp_mult_x = exp_mtv[0] * exp_mtv[1].x
839 exp_mult_y = exp_mtv[0] * exp_mtv[1].y
840 mult_x = mtv[0] * mtv[1].x
841 mult_y = mtv[0] * mtv[1].y
842 self.assertAlmostEqual(exp_mult_x, mult_x, msg=help_msg)
843 self.assertAlmostEqual(exp_mult_y, mult_y, msg=help_msg)
844
845 self.assertIsNotNone(_invmtv, msg=help_msg)
846 inv_mult_x = _invmtv[0] * _invmtv[1].x
847 inv_mult_y = _invmtv[0] * _invmtv[1].y
848 self.assertAlmostEqual(-exp_mult_x, inv_mult_x, msg=help_msg)
849 self.assertAlmostEqual(-exp_mult_y, inv_mult_y, msg=help_msg)
850 else:
851 self.assertIsNone(mtv, msg=help_msg)
852 self.assertIsNone(_invmtv, msg=help_msg)
853
854 _touch, _overlap, _mtv = polygon2.Polygon2.find_intersection(new_poly1, new_poly2, offset1, offset2, False)
855
856 self.assertEqual(exp_touching, _touch, msg=help_msg)

Calls 1

find_intersectionMethod · 0.45

Tested by

no test coverage detected