summaryrefslogtreecommitdiffstats
path: root/tests/test_layout.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_layout.py')
-rw-r--r--tests/test_layout.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/test_layout.py b/tests/test_layout.py
new file mode 100644
index 0000000..08beccc
--- /dev/null
+++ b/tests/test_layout.py
@@ -0,0 +1,54 @@
+import sys
+import pytest
+
+from rich.console import Console
+from rich.layout import Layout
+from rich.panel import Panel
+
+
+@pytest.mark.skipif(sys.platform == "win32", reason="does not run on windows")
+def test_render():
+ layout = Layout(name="root")
+ repr(layout)
+
+ layout.split(Layout(name="top"), Layout(name="bottom"))
+ top = layout["top"]
+ top.update(Panel("foo"))
+
+ print(type(top._renderable))
+ assert isinstance(top.renderable, Panel)
+ layout["bottom"].split(
+ Layout(name="left"), Layout(name="right"), direction="horizontal"
+ )
+
+ assert layout["root"].name == "root"
+ assert layout["left"].name == "left"
+ with pytest.raises(KeyError):
+ top["asdasd"]
+
+ layout["left"].update("foobar")
+ print(layout["left"].children)
+
+ console = Console(width=60, color_system=None)
+
+ with console.capture() as capture:
+ console.print(layout, height=10)
+
+ result = capture.get()
+ expected = "╭──────────────────────────────────────────────────────────╮\n│ foo │\n│ │\n│ │\n╰──────────────────────────────────────────────────────────╯\nfoobar ╭───── 'right' (30 x 5) ─────╮\n │ { │\n │ 'size': None, │\n │ 'minimum_size': 1, │\n ╰────────────────────────────╯\n"
+ assert result == expected
+
+
+def test_tree():
+ layout = Layout(name="root")
+ layout.split(Layout("foo", size=2), Layout("bar"))
+
+ console = Console(width=60, color_system=None)
+
+ with console.capture() as capture:
+ console.print(layout.tree, height=10)
+ result = capture.get()
+ print(repr(result))
+ expected = "⬇ 'root' (ratio=1) \n├── ■ (size=2) \n└── ■ (ratio=1) \n"
+
+ assert result == expected