(self, v1, v2, v3, v4, exp_touching, exp_overlap, exp_intr, number_fuzzes = 3)
| 341 | self.assertTrue(line2.Line2.are_parallel(self.line_1_1_3_4, _line)) |
| 342 | |
| 343 | def _find_intr_fuzzer(self, v1, v2, v3, v4, exp_touching, exp_overlap, exp_intr, number_fuzzes = 3): |
| 344 | for i in range(number_fuzzes): |
| 345 | offset1 = vector2.Vector2(random.uniform(-1000, 1000), random.uniform(-1000, 1000)) |
| 346 | offset2 = vector2.Vector2(random.uniform(-1000, 1000), random.uniform(-1000, 1000)) |
| 347 | |
| 348 | _line1 = line2.Line2(v1 - offset1, v2 - offset1) |
| 349 | _line2 = line2.Line2(v3 - offset2, v4 - offset2) |
| 350 | |
| 351 | help_msg = 'v1={}, v2={}, offset1={}\n_line1={}\nv3={}, v4={}, offset2={}\n_line2={}'.format(repr(v1), \ |
| 352 | repr(v2), repr(offset1), repr(_line1), repr(v3), repr(v4), repr(offset2), repr(_line2)) |
| 353 | |
| 354 | touching, overlap, intr = line2.Line2.find_intersection(_line1, _line2, offset1, offset2) |
| 355 | self.assertEqual(exp_touching, touching, help_msg) |
| 356 | self.assertEqual(exp_overlap, overlap, help_msg) |
| 357 | |
| 358 | if exp_intr is None: |
| 359 | self.assertIsNone(intr, help_msg) |
| 360 | else: |
| 361 | self.assertIsNotNone(intr, help_msg) |
| 362 | |
| 363 | if isinstance(exp_intr, vector2.Vector2): |
| 364 | self.assertIsInstance(intr, vector2.Vector2, help_msg) |
| 365 | |
| 366 | self.assertAlmostEqual(exp_intr.x, intr.x) |
| 367 | self.assertAlmostEqual(exp_intr.y, intr.y) |
| 368 | else: |
| 369 | self.assertIsInstance(exp_intr, line2.Line2, help_msg) |
| 370 | self.assertIsInstance(intr, line2.Line2, help_msg) |
| 371 | |
| 372 | self.assertAlmostEqual(exp_intr.start.x, intr.start.x) |
| 373 | self.assertAlmostEqual(exp_intr.start.y, intr.start.y) |
| 374 | self.assertAlmostEqual(exp_intr.end.x, intr.end.x) |
| 375 | self.assertAlmostEqual(exp_intr.end.y, intr.end.y) |
| 376 | |
| 377 | |
| 378 | def test_find_intersection_non_parallel_no_intersection(self): |
no test coverage detected