package collision_test

import (
	"testing"

	"git.kirsle.net/SketchyMaze/doodle/pkg/collision"
	"git.kirsle.net/go/render"
)

func TestBetweenBoxes(t *testing.T) {
	mkrect := func(x, y, w, h int) render.Rect {
		return render.Rect{
			X: x,
			Y: y,
			W: w,
			H: h,
		}
	}
	table := []struct {
		A      render.Rect
		B      render.Rect
		Expect bool
	}{
		{
			A:      mkrect(0, 0, 32, 32),
			B:      mkrect(32, 0, 32, 32),
			Expect: true,
		},
		{
			A:      mkrect(0, 0, 32, 32),
			B:      mkrect(100, 100, 40, 40),
			Expect: false,
		},
		{
			A:      mkrect(100, 100, 50, 50),
			B:      mkrect(80, 110, 100, 30),
			Expect: true,
		},
	}

	var actual bool
	for i, test := range table {
		actual = false
		for range collision.BetweenBoxes([]render.Rect{test.A, test.B}) {
			actual = true
			break
		}

		if test.Expect != actual {
			t.Errorf(
				"Test %d BetweenBoxes: %s cmp %s\n"+
					"Expected: %+v\n"+
					"Actually: %+v",
				i, test.A, test.B, test.Expect, actual,
			)
		}
	}
}
