doodle/pkg/collision/actor_offset_test.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,
)
}
}
}