36 lines
1.1 KiB
Go
36 lines
1.1 KiB
Go
package compositor
|
|
|
|
import "testing"
|
|
|
|
func TestGridRectsCoverExactly(t *testing.T) {
|
|
cases := []struct {
|
|
w, h, cols, rows int
|
|
}{
|
|
{1920, 1080, 2, 2},
|
|
{1920, 1080, 3, 3},
|
|
{1920, 1080, 1, 1},
|
|
{1366, 768, 3, 2}, // odd dimensions to exercise remainder handling
|
|
}
|
|
for _, tc := range cases {
|
|
rects := GridRects(tc.w, tc.h, tc.cols, tc.rows)
|
|
if len(rects) != tc.cols*tc.rows {
|
|
t.Fatalf("%dx%d grid %dx%d: got %d rects", tc.w, tc.h, tc.cols, tc.rows, len(rects))
|
|
}
|
|
// Sum of areas must equal the whole output with no gaps or overlap on
|
|
// the axis boundaries: verify the last column reaches the right edge
|
|
// and the last row reaches the bottom edge.
|
|
last := rects[len(rects)-1]
|
|
if last.X+last.W != tc.w {
|
|
t.Errorf("%dx%d grid %dx%d: last cell right edge %d != %d", tc.w, tc.h, tc.cols, tc.rows, last.X+last.W, tc.w)
|
|
}
|
|
if last.Y+last.H != tc.h {
|
|
t.Errorf("%dx%d grid %dx%d: last cell bottom edge %d != %d", tc.w, tc.h, tc.cols, tc.rows, last.Y+last.H, tc.h)
|
|
}
|
|
for i, r := range rects {
|
|
if r.W <= 0 || r.H <= 0 {
|
|
t.Errorf("cell %d has non-positive size %+v", i, r)
|
|
}
|
|
}
|
|
}
|
|
}
|