2 Copyright (c) 2009 Hanno Braun <hanno@habraun.net>
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
8 http://www.apache.org/licenses/LICENSE-2.0
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
19 package net
.habraun
.kong
.physics
24 import org
.junit
.Assert
._
28 class SimpleNarrowPhaseTest
{
31 def verifyIsNarrowPhase
{
32 val narrowPhase
= new SimpleNarrowPhase
33 assertTrue(narrowPhase
.isInstanceOf
[NarrowPhase
])
39 def inspectTwoNoShapesExpectNoCollision
{
40 val narrowPhase
= new SimpleNarrowPhase
47 assertEquals(None
, narrowPhase
.inspectCollision(b1
, b2
))
53 def inspectTwoCirclesExpectNoCollision
{
54 val narrowPhase
= new SimpleNarrowPhase
57 b1
.position
= Vec2D(0, 0)
60 b2
.position
= Vec2D(3, 0)
63 assertEquals(None
, narrowPhase
.inspectCollision(b1
, b2
))
69 def inspectTwoCirclesExpectCollision
{
70 val narrowPhase
= new SimpleNarrowPhase
73 b1
.position
= Vec2D(0, 0)
76 b2
.position
= Vec2D(0.5, 0)
79 val expectedCollision
= Collision(b1
, b2
, Vec2D(1, 0), Vec2D(-1, 0), Vec2D(0, 0))
81 assertEquals(Some(expectedCollision
), narrowPhase
.inspectCollision(b1
, b2
))
87 def inspectCircleAndNoShapeExpectNoCollision
{
88 val narrowPhase
= new SimpleNarrowPhase
91 b1
.position
= Vec2D(0, 0)
94 b2
.position
= Vec2D(0, 0.5)
97 assertEquals(None
, narrowPhase
.inspectCollision(b1
, b2
))
103 def inspectCircleAndLineSegmentExpectNoCollision
{
104 val narrowPhase
= new SimpleNarrowPhase
107 b1
.position
= Vec2D(0, 0)
110 b2
.position
= Vec2D(0, 2)
111 b2
.shape
= LineSegment(Vec2D(-1, 0), Vec2D(1, 0))
113 assertEquals(None
, narrowPhase
.inspectCollision(b1
, b2
))
119 def inspectCircleAndLineSegmentExpectCollision
{
120 val narrowPhase
= new SimpleNarrowPhase
123 b1
.position
= Vec2D(0, 0)
126 b2
.position
= Vec2D(0, 0.5)
127 b2
.shape
= LineSegment(Vec2D(-1, 0), Vec2D(1, 0))
129 val expectedCollision
= Collision(b1
, b2
, Vec2D(0, 1), Vec2D(0, -1), Vec2D(0, 0))
131 assertEquals(Some(expectedCollision
), narrowPhase
.inspectCollision(b1
, b2
))
137 def inspectLineSegmentAndCirlceExpectCollision
{
138 val narrowPhase
= new SimpleNarrowPhase
141 b1
.position
= Vec2D(0, 0)
144 b2
.position
= Vec2D(0, 0.5)
145 b2
.shape
= LineSegment(Vec2D(-1, 0), Vec2D(1, 0))
147 val expectedCollision
= Collision(b2
, b1
, Vec2D(0, -1), Vec2D(0, 1), Vec2D(0, 0))
149 assertEquals(Some(expectedCollision
), narrowPhase
.inspectCollision(b2
, b1
))
155 def inspectTwoLineSegmentsExpectNoCollisionEvenIfTheyCollide
{
156 val narrowPhase
= new SimpleNarrowPhase
159 b1
.position
= Vec2D(0, 1)
160 b1
.shape
= LineSegment(Vec2D(0, 0), Vec2D(2, -2))
162 b2
.position
= Vec2D(0, -1)
163 b2
.shape
= LineSegment(Vec2D(0, 0), Vec2D(2, 2))
165 assertEquals(None
, narrowPhase
.inspectCollision(b1
, b2
))