From ac451d79ef6eb3e6e67881868125cb1c5a90a606 Mon Sep 17 00:00:00 2001 From: hecris Date: Fri, 5 Apr 2019 16:18:24 -0400 Subject: [PATCH] tests: add more collision unit tests Closes #609 --- tests/collide/collisions.py | 7 ++++--- tests/collide/test_into_box.py | 9 +++++++++ tests/collide/test_into_lines.py | 24 ++++++++++++++++++++++++ tests/collide/test_into_poly.py | 9 +++++++++ tests/collide/test_into_sphere.py | 9 +++++++++ 5 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 tests/collide/test_into_lines.py diff --git a/tests/collide/collisions.py b/tests/collide/collisions.py index 8c3e6dba33..8a48a18d5c 100644 --- a/tests/collide/collisions.py +++ b/tests/collide/collisions.py @@ -1,8 +1,9 @@ from panda3d.core import CollisionNode, NodePath from panda3d.core import CollisionTraverser, CollisionHandlerQueue -from panda3d.core import CollisionSphere, CollisionBox, CollisionPolygon -from panda3d.core import CollisionCapsule, CollisionSegment -from panda3d.core import Point3, Vec3 +from panda3d.core import CollisionSphere, CollisionBox, CollisionPolygon, CollisionCapsule +from panda3d.core import CollisionLine, CollisionRay, CollisionSegment, CollisionParabola +from panda3d.core import CollisionPlane +from panda3d.core import Point3, Vec3, Plane, LParabola def make_collision(solid_from, solid_into): diff --git a/tests/collide/test_into_box.py b/tests/collide/test_into_box.py index 5bf398201f..6e12012c14 100644 --- a/tests/collide/test_into_box.py +++ b/tests/collide/test_into_box.py @@ -17,3 +17,12 @@ def test_sphere_into_box(): # No collision entry = make_collision(CollisionSphere(100, 100, 100, 100), box)[0] assert entry is None + + +def test_plane_into_box(): + # CollisionPlane is not a 'from' object + plane = CollisionPlane(Plane(Vec3(0, 0, 1), Point3(0, 0, 0))) + box = CollisionBox((0, 0, 0), 2, 3, 4) + + entry = make_collision(plane, box)[0] + assert entry is None diff --git a/tests/collide/test_into_lines.py b/tests/collide/test_into_lines.py new file mode 100644 index 0000000000..9787558a3a --- /dev/null +++ b/tests/collide/test_into_lines.py @@ -0,0 +1,24 @@ +# Testing that all variants of CollisionLine +# cannot be used as "into" objects +from collisions import * + + +def test_sphere_into_line(): + entry = make_collision(CollisionSphere(0, 0, 0, 3), CollisionLine(0, 0, 0, 1, 0, 0))[0] + assert entry is None + + +def test_sphere_into_ray(): + entry = make_collision(CollisionSphere(0, 0, 0, 3), CollisionRay(0, 0, 0, 3, 3, 3))[0] + assert entry is None + + +def test_sphere_into_segment(): + entry = make_collision(CollisionSphere(0, 0, 0, 3), CollisionSegment(0, 0, 0, 3, 3, 3))[0] + assert entry is None + + +def test_sphere_into_parabola(): + parabola = LParabola((1, 0, 0), (0, 1, 0), (0, 0, 1)) + entry = make_collision(CollisionSphere(0, 0, 0, 3), CollisionParabola(parabola, 1, 2))[0] + assert entry is None diff --git a/tests/collide/test_into_poly.py b/tests/collide/test_into_poly.py index b8bae38316..ccfd15fcd1 100644 --- a/tests/collide/test_into_poly.py +++ b/tests/collide/test_into_poly.py @@ -37,3 +37,12 @@ def test_sphere_into_poly(): # No collision entry = make_collision(CollisionSphere(100, 100, 100, 100), poly)[0] assert entry is None + + +def test_plane_into_poly(): + # CollisionPlane is not a 'from' object + plane = CollisionPlane(Plane(Vec3(0, 0, 1), Point3(0, 0, 0))) + poly = CollisionPolygon(Point3(0, 0, 0), Point3(0, 0, 1), Point3(0, 1, 1), Point3(0, 1, 0)) + + entry = make_collision(plane, poly)[0] + assert entry is None diff --git a/tests/collide/test_into_sphere.py b/tests/collide/test_into_sphere.py index 1ec7494cb2..b59764d871 100644 --- a/tests/collide/test_into_sphere.py +++ b/tests/collide/test_into_sphere.py @@ -78,3 +78,12 @@ def test_segment_into_sphere(): # No collision entry = make_collision(CollisionSegment((0, 0, 0), (3, 0, 0)), sphere)[0] assert entry is None + + +def test_plane_into_sphere(): + # CollisionPlane is not a 'from' object + plane = CollisionPlane(Plane(Vec3(0, 0, 1), Point3(0, 0, 0))) + sphere = CollisionSphere(0, 0, 0, 1) + + entry = make_collision(plane, sphere)[0] + assert entry is None