mirror of
https://github.com/anotherhadi/ilovetui.git
synced 2026-08-21 12:05:49 +02:00
init layout, notifications, tabs & more
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package layout
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestComputeLayoutEvenSplit(t *testing.T) {
|
||||
root := HSplit(0.5, Leaf("a", newStub()), Leaf("b", newStub()))
|
||||
leaves := computeLayout(root, Rect{W: 100, H: 40})
|
||||
|
||||
want := map[string]Rect{
|
||||
"a": {X: 0, Y: 0, W: 50, H: 40},
|
||||
"b": {X: 50, Y: 0, W: 50, H: 40},
|
||||
}
|
||||
assertLeafRects(t, leaves, want)
|
||||
}
|
||||
|
||||
func TestComputeLayoutVerticalRatio(t *testing.T) {
|
||||
root := VSplit(0.25, Leaf("top", newStub()), Leaf("bottom", newStub()))
|
||||
leaves := computeLayout(root, Rect{W: 80, H: 40})
|
||||
|
||||
want := map[string]Rect{
|
||||
"top": {X: 0, Y: 0, W: 80, H: 10},
|
||||
"bottom": {X: 0, Y: 10, W: 80, H: 30},
|
||||
}
|
||||
assertLeafRects(t, leaves, want)
|
||||
}
|
||||
|
||||
func TestComputeLayoutMinimum(t *testing.T) {
|
||||
root := HSplit(0.1, Leaf("a", newStub()), Leaf("b", newStub())).WithMinimum(20)
|
||||
leaves := computeLayout(root, Rect{W: 100, H: 10})
|
||||
|
||||
want := map[string]Rect{
|
||||
"a": {X: 0, Y: 0, W: 20, H: 10},
|
||||
"b": {X: 20, Y: 0, W: 80, H: 10},
|
||||
}
|
||||
assertLeafRects(t, leaves, want)
|
||||
}
|
||||
|
||||
func TestComputeLayoutMaximum(t *testing.T) {
|
||||
root := HSplit(0.9, Leaf("a", newStub()), Leaf("b", newStub())).WithMaximum(20)
|
||||
leaves := computeLayout(root, Rect{W: 100, H: 10})
|
||||
|
||||
want := map[string]Rect{
|
||||
"a": {X: 0, Y: 0, W: 20, H: 10},
|
||||
"b": {X: 20, Y: 0, W: 80, H: 10},
|
||||
}
|
||||
assertLeafRects(t, leaves, want)
|
||||
}
|
||||
|
||||
func TestComputeLayoutFixedWhenMinEqualsMax(t *testing.T) {
|
||||
root := HSplit(0.9, Leaf("a", newStub()), Leaf("b", newStub())).WithMinimum(20).WithMaximum(20)
|
||||
leaves := computeLayout(root, Rect{W: 100, H: 10})
|
||||
|
||||
want := map[string]Rect{
|
||||
"a": {X: 0, Y: 0, W: 20, H: 10},
|
||||
"b": {X: 20, Y: 0, W: 80, H: 10},
|
||||
}
|
||||
assertLeafRects(t, leaves, want)
|
||||
}
|
||||
|
||||
func TestComputeLayoutNested(t *testing.T) {
|
||||
root := HSplit(0.3,
|
||||
Leaf("sidebar", newStub()),
|
||||
VSplit(0.5, Leaf("top", newStub()), Leaf("bottom", newStub())),
|
||||
)
|
||||
leaves := computeLayout(root, Rect{W: 100, H: 20})
|
||||
|
||||
want := map[string]Rect{
|
||||
"sidebar": {X: 0, Y: 0, W: 30, H: 20},
|
||||
"top": {X: 30, Y: 0, W: 70, H: 10},
|
||||
"bottom": {X: 30, Y: 10, W: 70, H: 10},
|
||||
}
|
||||
assertLeafRects(t, leaves, want)
|
||||
}
|
||||
|
||||
func assertLeafRects(t *testing.T, leaves []LeafRect, want map[string]Rect) {
|
||||
t.Helper()
|
||||
if len(leaves) != len(want) {
|
||||
t.Fatalf("got %d leaves, want %d (%v)", len(leaves), len(want), leaves)
|
||||
}
|
||||
for _, lr := range leaves {
|
||||
wr, ok := want[lr.ID]
|
||||
if !ok {
|
||||
t.Fatalf("unexpected leaf %q", lr.ID)
|
||||
}
|
||||
if lr.Rect != wr {
|
||||
t.Errorf("leaf %q: got %+v, want %+v", lr.ID, lr.Rect, wr)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user