fix up boxes to actually work when moved around the screen

This commit is contained in:
2021-07-03 21:25:32 -04:00
parent 6cd94df521
commit 40b4cd3668
3 changed files with 217 additions and 10 deletions

88
ui/ui_test.go Normal file
View File

@@ -0,0 +1,88 @@
package ui
import (
"fmt"
"testing"
)
func TestContainerOneBox(t *testing.T) {
expect := `┌─ box one ────────┐
│ │
│ │
│ │
└──────────────────┘
`
m := &MockScreen{}
one := NewBox("box one", nil, Contents{})
container := NewContainer(
Contents{{Container: one}},
LayoutHorizontalEven,
)
m.Init()
m.Resize(0, 0, 5, 20)
container.SetSize(0, 0, 5, 20)
container.Draw(m)
result := m.DumpContents()
if result != expect {
fmt.Printf("expected:\n%+v", expect)
fmt.Printf("actual:\n%+v", result)
t.Fail()
}
}
func TestContainerTwoBoxesHStack(t *testing.T) {
expect := `┌─ one ──┐┌─ two ──┐
│ ││ │
│ ││ │
│ ││ │
└────────┘└────────┘
`
m := &MockScreen{}
one := NewBox("one", nil, Contents{})
two := NewBox("two", nil, Contents{})
container := NewContainer(
Contents{{Container: one}, {Container: two}},
LayoutHorizontalEven,
)
m.Init()
m.Resize(0, 0, 5, 20)
container.SetSize(0, 0, 5, 20)
container.Draw(m)
result := m.DumpContents()
if result != expect {
fmt.Printf("expected:\n%+v", expect)
fmt.Printf("actual:\n%+v", result)
t.Fail()
}
}
func TestContainerTwoBoxesVStack(t *testing.T) {
expect := `┌─ one ──┐
│ │
│ │
│ │
└────────┘
┌─ two ──┐
│ │
│ │
│ │
└────────┘
`
m := &MockScreen{}
one := NewBox("one", nil, Contents{})
two := NewBox("two", nil, Contents{})
container := NewContainer(
Contents{{Container: one}, {Container: two}},
LayoutVerticalEven,
)
m.Init()
m.Resize(0, 0, 10, 10)
container.SetSize(0, 0, 10, 10)
container.Draw(m)
result := m.DumpContents()
if result != expect {
fmt.Printf("expected:\n%+v", expect)
fmt.Printf("actual:\n%+v", result)
t.Fail()
}
}