doodle/pkg/physics/vector_test.go

54 lines
1.1 KiB
Go
Raw Permalink Normal View History

package physics_test
import (
"testing"
"git.kirsle.net/apps/doodle/pkg/physics"
"git.kirsle.net/go/render"
)
// Test converting points to vectors and back again.
func TestVectorPoint(t *testing.T) {
var tests = []struct {
In render.Point
Mid physics.Vector
Add physics.Vector
Out render.Point
}{
{
In: render.NewPoint(102, 102),
Mid: physics.NewVector(102.0, 102.0),
Out: render.NewPoint(102, 102),
},
{
In: render.NewPoint(64, 128),
Mid: physics.NewVector(64.0, 128.0),
Add: physics.NewVector(0.4, 0.6),
Out: render.NewPoint(64, 129),
},
}
for _, test := range tests {
// Convert point to vector.
v := physics.VectorFromPoint(test.In)
if v != test.Mid {
t.Errorf("Unexpected Vector from Point(%s): wanted %s, got %s",
test.In, test.Mid, v,
)
continue
}
// Add other vector.
v.Add(test.Add)
// Verify output point rounded down correctly.
out := v.ToPoint()
if out != test.Out {
t.Errorf("Unexpected output vector from Point(%s) -> V(%s) + V(%s): wanted %s, got %s",
test.In, test.Mid, test.Add, test.Out, out,
)
continue
}
}
}