summaryrefslogtreecommitdiffstats
path: root/tests/test_align.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_align.py')
-rw-r--r--tests/test_align.py146
1 files changed, 146 insertions, 0 deletions
diff --git a/tests/test_align.py b/tests/test_align.py
new file mode 100644
index 0000000..6473334
--- /dev/null
+++ b/tests/test_align.py
@@ -0,0 +1,146 @@
+import io
+
+import pytest
+
+from rich.console import Console
+from rich.align import Align, VerticalCenter
+from rich.measure import Measurement
+
+
+def test_bad_align_legal():
+
+ # Legal
+ Align("foo", "left")
+ Align("foo", "center")
+ Align("foo", "right")
+
+ # illegal
+ with pytest.raises(ValueError):
+ Align("foo", None)
+ with pytest.raises(ValueError):
+ Align("foo", "middle")
+ with pytest.raises(ValueError):
+ Align("foo", "")
+ with pytest.raises(ValueError):
+ Align("foo", "LEFT")
+ with pytest.raises(ValueError):
+ Align("foo", vertical="somewhere")
+
+
+def test_repr():
+ repr(Align("foo", "left"))
+ repr(Align("foo", "center"))
+ repr(Align("foo", "right"))
+
+
+def test_align_left():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo", "left"))
+ assert console.file.getvalue() == "foo \n"
+
+
+def test_align_center():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo", "center"))
+ assert console.file.getvalue() == " foo \n"
+
+
+def test_align_right():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo", "right"))
+ assert console.file.getvalue() == " foo\n"
+
+
+def test_align_top():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo", vertical="top"), height=5)
+ expected = "foo \n \n \n \n \n"
+ result = console.file.getvalue()
+ print(repr(result))
+ assert result == expected
+
+
+def test_align_middle():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo", vertical="middle"), height=5)
+ expected = " \n \nfoo \n \n \n"
+ result = console.file.getvalue()
+ print(repr(result))
+ assert result == expected
+
+
+def test_align_bottom():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo", vertical="bottom"), height=5)
+ expected = " \n \n \n \nfoo \n"
+ result = console.file.getvalue()
+ print(repr(result))
+ assert result == expected
+
+
+def test_align_center_middle():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo\nbar", "center", vertical="middle"), height=5)
+ expected = " \n foo \n bar \n \n \n"
+ result = console.file.getvalue()
+ print(repr(result))
+ assert result == expected
+
+
+def test_align_fit():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foobarbaze", "center"))
+ assert console.file.getvalue() == "foobarbaze\n"
+
+
+def test_align_right_style():
+ console = Console(
+ file=io.StringIO(), width=10, color_system="truecolor", force_terminal=True
+ )
+ console.print(Align("foo", "right", style="on blue"))
+ assert console.file.getvalue() == "\x1b[44m \x1b[0m\x1b[44mfoo\x1b[0m\n"
+
+
+def test_measure():
+ console = Console(file=io.StringIO(), width=20)
+ _min, _max = Measurement.get(console, Align("foo bar", "left"), 20)
+ assert _min == 3
+ assert _max == 7
+
+
+def test_align_no_pad():
+ console = Console(file=io.StringIO(), width=10)
+ console.print(Align("foo", "center", pad=False))
+ console.print(Align("foo", "left", pad=False))
+ assert console.file.getvalue() == " foo\nfoo\n"
+
+
+def test_align_width():
+ console = Console(file=io.StringIO(), width=40)
+ words = "Deep in the human unconscious is a pervasive need for a logical universe that makes sense. But the real universe is always one step beyond logic"
+ console.print(Align(words, "center", width=30))
+ result = console.file.getvalue()
+ expected = " Deep in the human unconscious \n is a pervasive need for a \n logical universe that makes \n sense. But the real universe \n is always one step beyond \n logic \n"
+ assert result == expected
+
+
+def test_shortcuts():
+ assert Align.left("foo").align == "left"
+ assert Align.left("foo").renderable == "foo"
+ assert Align.right("foo").align == "right"
+ assert Align.right("foo").renderable == "foo"
+ assert Align.center("foo").align == "center"
+ assert Align.center("foo").renderable == "foo"
+
+
+def test_vertical_center():
+ console = Console(color_system=None, height=6)
+ console.begin_capture()
+ vertical_center = VerticalCenter("foo")
+ repr(vertical_center)
+ console.print(vertical_center)
+ result = console.end_capture()
+ print(repr(result))
+ expected = " \n \nfoo\n \n \n \n"
+ assert result == expected
+ assert Measurement.get(console, vertical_center) == Measurement(3, 3)