-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathtest_arrange.py
More file actions
125 lines (106 loc) · 3.49 KB
/
test_arrange.py
File metadata and controls
125 lines (106 loc) · 3.49 KB
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import pytest
from textual._arrange import TOP_Z, arrange
from textual._context import active_app
from textual.app import App
from textual.geometry import NULL_OFFSET, Region, Size, Spacing
from textual.layout import WidgetPlacement
from textual.widget import Widget
async def test_arrange_empty():
container = Widget(id="container")
result = arrange(container, [], Size(80, 24), Size(80, 24))
assert result.placements == []
assert result.widgets == set()
async def test_arrange_dock_top():
container = Widget(id="container")
app = App()
active_app.set(app)
container._parent = app
child = Widget(id="child")
header = Widget(id="header")
header.styles.dock = "top"
header.styles.height = "1"
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
assert result.placements == [
WidgetPlacement(
Region(0, 0, 80, 1), NULL_OFFSET, Spacing(), header, order=TOP_Z, fixed=True
),
WidgetPlacement(
Region(0, 1, 80, 23), NULL_OFFSET, Spacing(), child, order=0, fixed=False
),
]
assert result.widgets == {child, header}
async def test_arrange_dock_left():
container = Widget(id="container")
container._parent = App()
child = Widget(id="child")
header = Widget(id="header")
header.styles.dock = "left"
header.styles.width = "10"
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
assert result.placements == [
WidgetPlacement(
Region(0, 0, 10, 24),
NULL_OFFSET,
Spacing(),
header,
order=TOP_Z,
fixed=True,
),
WidgetPlacement(
Region(10, 0, 70, 24), NULL_OFFSET, Spacing(), child, order=0, fixed=False
),
]
assert result.widgets == {child, header}
async def test_arrange_dock_right():
container = Widget(id="container")
app = App()
active_app.set(app)
container._parent = app
child = Widget(id="child")
header = Widget(id="header")
header.styles.dock = "right"
header.styles.width = "10"
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
assert result.placements == [
WidgetPlacement(
Region(70, 0, 10, 24),
NULL_OFFSET,
Spacing(),
header,
order=TOP_Z,
fixed=True,
),
WidgetPlacement(
Region(0, 0, 70, 24), NULL_OFFSET, Spacing(), child, order=0, fixed=False
),
]
assert result.widgets == {child, header}
async def test_arrange_dock_bottom():
container = Widget(id="container")
app = App()
active_app.set(app)
container._parent = app
child = Widget(id="child")
header = Widget(id="header")
header.styles.dock = "bottom"
header.styles.height = "1"
result = arrange(container, [child, header], Size(80, 24), Size(80, 24))
assert result.placements == [
WidgetPlacement(
Region(0, 23, 80, 1),
NULL_OFFSET,
Spacing(),
header,
order=TOP_Z,
fixed=True,
),
WidgetPlacement(
Region(0, 0, 80, 23), NULL_OFFSET, Spacing(), child, order=0, fixed=False
),
]
assert result.widgets == {child, header}
async def test_arrange_dock_badly():
child = Widget(id="child")
child.styles.dock = "nowhere"
with pytest.raises(AssertionError):
_ = arrange(Widget(), [child], Size(80, 24), Size(80, 24))