-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpadding_test.go
97 lines (85 loc) · 2.57 KB
/
padding_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package goey
import (
"errors"
"testing"
"bitbucket.org/rj/goey/base"
"bitbucket.org/rj/goey/mock"
)
func (w *paddingElement) Props() base.Widget {
child := base.Widget(nil)
if w.child != nil {
child = w.child.(Proper).Props()
}
return &Padding{
Insets: w.insets,
Child: child,
}
}
func TestPaddingMount(t *testing.T) {
// These should all be able to mount without error.
testingMountWidgets(t,
&Padding{Child: &Button{Text: "A"}},
&Padding{Insets: DefaultInsets(), Child: &Button{Text: "B"}},
&Padding{Insets: UniformInsets(48 * DIP), Child: &Button{Text: "C"}},
&Padding{},
)
// These should mount with an error.
err := errors.New("Mock error 1")
testingMountWidgetsFail(t, err,
&Padding{Child: &mock.Widget{Err: err}},
)
testingMountWidgetsFail(t, err,
&Padding{Insets: DefaultInsets(), Child: &mock.Widget{Err: err}},
)
}
func TestPaddingClose(t *testing.T) {
testingCloseWidgets(t,
&Padding{Child: &Button{Text: "A"}},
&Padding{Insets: DefaultInsets(), Child: &Button{Text: "B"}},
&Padding{Insets: UniformInsets(48 * DIP), Child: &Button{Text: "C"}},
&Padding{},
)
}
func TestPaddingUpdateProps(t *testing.T) {
testingUpdateWidgets(t, []base.Widget{
&Padding{Child: &Button{Text: "A"}},
&Padding{Insets: DefaultInsets(), Child: &Button{Text: "B"}},
&Padding{Insets: UniformInsets(48 * DIP), Child: &Button{Text: "C"}},
&Padding{},
}, []base.Widget{
&Padding{Insets: DefaultInsets(), Child: &Button{Text: "AB"}},
&Padding{Insets: UniformInsets(48 * DIP), Child: &Button{Text: "BC"}},
&Padding{},
&Padding{Child: &Button{Text: "CD"}},
})
}
func TestPaddingMinIntrinsicSize(t *testing.T) {
size1 := base.Size{10 * DIP, 20 * DIP}
size2 := base.Size{15 * DIP, 25 * DIP}
sizeZ := base.Size{}
insets := Insets{1 * DIP, 2 * DIP, 3 * DIP, 4 * DIP}
cases := []struct {
mockSize base.Size
insets Insets
out base.Size
}{
{size1, Insets{}, size1},
{size2, Insets{}, size2},
{sizeZ, Insets{}, sizeZ},
{size1, insets, base.Size{16 * DIP, 24 * DIP}},
{size2, insets, base.Size{21 * DIP, 29 * DIP}},
{sizeZ, insets, base.Size{6 * DIP, 4 * DIP}},
}
for i, v := range cases {
elem := paddingElement{
child: mock.NewIfNotZero(v.mockSize),
insets: v.insets,
}
if out := elem.MinIntrinsicWidth(base.Inf); out != v.out.Width {
t.Errorf("Case %d: Returned min intrinsic width does not match, got %v, want %v", i, out, v.out.Width)
}
if out := elem.MinIntrinsicHeight(base.Inf); out != v.out.Height {
t.Errorf("Case %d: Returned min intrinsic width does not match, got %v, want %v", i, out, v.out.Height)
}
}
}