Files
RTSP-Streamer/internal/compositor/compositor_test.go
2026-07-01 18:21:14 -05:00

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)
}
}
}
}