Files
prevara/testutil_test.go
2025-11-30 16:45:22 +00:00

81 lines
1.9 KiB
Go

package gel
import (
"image"
"image/color"
"testing"
"github.com/p9c/p9/pkg/gel/fonts/p9fonts"
"github.com/p9c/p9/pkg/opts/binary"
"github.com/p9c/p9/pkg/opts/meta"
"github.com/p9c/p9/pkg/qu"
l "github.com/p9c/p9/pkg/gel/gio/layout"
"github.com/p9c/p9/pkg/gel/gio/op"
)
// testWindow creates a Window suitable for testing without actual GUI.
func testWindow(t *testing.T) *Window {
t.Helper()
quit := qu.T()
th := NewTheme(
binary.New(meta.Data{}, false, nil),
p9fonts.Collection(),
quit,
)
w := &Window{
Theme: th,
scale: &scaledConfig{1},
}
th.WidgetPool = w.NewPool()
return w
}
// testContext creates a layout.Context for testing with the given size.
func testContext(t *testing.T, size image.Point) l.Context {
t.Helper()
ops := new(op.Ops)
return l.Context{
Ops: ops,
Constraints: l.Constraints{
Min: image.Point{},
Max: size,
},
}
}
// assertDimensionsNonZero checks that dimensions have non-zero width and height.
func assertDimensionsNonZero(t *testing.T, dims l.Dimensions, msg string) {
t.Helper()
if dims.Size.X == 0 && dims.Size.Y == 0 {
t.Errorf("%s: got zero dimensions", msg)
}
}
// assertDimensionsWithin checks dimensions are within expected bounds.
func assertDimensionsWithin(t *testing.T, dims l.Dimensions, maxX, maxY int, msg string) {
t.Helper()
if dims.Size.X > maxX {
t.Errorf("%s: width %d exceeds max %d", msg, dims.Size.X, maxX)
}
if dims.Size.Y > maxY {
t.Errorf("%s: height %d exceeds max %d", msg, dims.Size.Y, maxY)
}
}
// assertColorEqual checks two colors are equal.
func assertColorEqual(t *testing.T, got, want color.NRGBA, msg string) {
t.Helper()
if got != want {
t.Errorf("%s: got color %v, want %v", msg, got, want)
}
}
// assertNoError fails the test if err is not nil.
func assertNoError(t *testing.T, err error, msg string) {
t.Helper()
if err != nil {
t.Errorf("%s: unexpected error: %v", msg, err)
}
}