57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package collision_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.kirsle.net/SketchyMaze/doodle/pkg/collision"
|
|
"git.kirsle.net/go/render"
|
|
)
|
|
|
|
func TestActorOffset(t *testing.T) {
|
|
type testCase struct {
|
|
Actor *collision.MockActor
|
|
Offset render.Point
|
|
ExpectPoint render.Point
|
|
}
|
|
|
|
var tests = []testCase{
|
|
// Simple case where the hitbox == the size.
|
|
{
|
|
Actor: &collision.MockActor{
|
|
P: render.NewPoint(10, 10),
|
|
S: render.NewRect(32, 32),
|
|
HB: render.NewRect(32, 32),
|
|
},
|
|
ExpectPoint: render.NewPoint(10, 10),
|
|
},
|
|
|
|
// Bottom heavy actor
|
|
{
|
|
Actor: &collision.MockActor{
|
|
P: render.NewPoint(11, 22),
|
|
S: render.NewRect(32, 64),
|
|
HB: render.Rect{
|
|
X: 0,
|
|
Y: 32,
|
|
W: 32,
|
|
H: 32,
|
|
},
|
|
},
|
|
ExpectPoint: render.NewPoint(11, 22+32),
|
|
},
|
|
}
|
|
|
|
for i, test := range tests {
|
|
offset := collision.NewActorOffset(test.Actor)
|
|
|
|
actualPoint := offset.Position()
|
|
if actualPoint != test.ExpectPoint {
|
|
t.Errorf("Test #%d: Position() expected to be %s but was %s",
|
|
i,
|
|
test.ExpectPoint,
|
|
actualPoint,
|
|
)
|
|
}
|
|
}
|
|
}
|