ref: bee85da05585c5f6d73208d10659f5860d3d8524
dir: /box/box_test.go/
package box
import (
"9fans.net/go/draw"
"9fans.net/go/draw/memdraw"
"image"
imagecolor "image/color"
"testing"
"github.com/psilva261/xui/element"
"github.com/psilva261/xui/internal/color"
"github.com/psilva261/xui/label"
"github.com/psilva261/xui/space"
"github.com/psilva261/xui/xuitest"
)
func TestMarginPadding(t *testing.T) {
memdraw.Init()
inner := New([]element.Interface{})
inner.Width = 130
inner.Height = 70
inner.Colorset.Normal.Background = color.MustMake(draw.Red)
inner.Margin = space.New(7)
t.Logf("inner.Margin=%v", inner.Margin)
outer := New([]element.Interface{inner})
outer.Colorset.Normal.Background = color.MustMake(draw.Green)
outer.Margin = space.New(3)
outer.Padding = space.New(11)
img := outer.Render()
t.Logf("TestMarginPadding: img.R=%v", img.R)
info, err := xuitest.Analyze(img)
if err != nil {
panic(err.Error())
}
t.Logf("info=%v", info.BboxByColor)
xuitest.Dump(img)
bboxGreen := info.BboxByColor[imagecolor.RGBA{G:255,A:255}]
if bboxGreen.Dx() != (130+2*7+2*11) || bboxGreen.Dy() != (70+2*7+2*11) {
t.Fail()
}
}
func TestRenderRect(t *testing.T) {
memdraw.Init()
b := New([]element.Interface{})
b.Width = 130
b.Height = 70
b.Colorset.Normal.Background = color.MustMake(draw.Black)
img := b.Render()
info, err := xuitest.Analyze(img)
if err != nil {
panic(err.Error())
}
t.Logf("info=%v", info.Bbox)
if info.Bbox.Dx() != 130 || info.Bbox.Dy() != 70 {
t.Fail()
}
}
func TestRenderLabel(t *testing.T) {
memdraw.Init()
l := label.New(image.ZP, "hello")
imgTestLabel := l.Render()
infoTestLabel, err := xuitest.Analyze(imgTestLabel)
if err != nil {
panic(err.Error())
}
t.Logf("infoTestLabel=%v", infoTestLabel.Bbox)
rScreen := image.Rect(0, 0, 800, 600)
b := New([]element.Interface{l})
img := b.Render()
info, err := xuitest.Analyze(img)
if err != nil {
panic(err.Error())
}
t.Logf("info=%v", info.Bbox)
if !info.Bbox.In(rScreen) {
t.Fatalf("bbox outside screen rect")
}
if !infoTestLabel.Bbox.Eq(info.Bbox) {
t.Fail()
}
}