summaryrefslogtreecommitdiffstats
path: root/tests/test_rule.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/test_rule.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/test_rule.py b/tests/test_rule.py
new file mode 100644
index 0000000..d5edcf4
--- /dev/null
+++ b/tests/test_rule.py
@@ -0,0 +1,83 @@
+import io
+
+import pytest
+
+from rich.console import Console
+from rich.rule import Rule
+from rich.text import Text
+
+
+def test_rule():
+ console = Console(
+ width=16, file=io.StringIO(), force_terminal=True, legacy_windows=False
+ )
+ console.print(Rule())
+ console.print(Rule("foo"))
+ console.rule(Text("foo", style="bold"))
+ console.rule("foobarbazeggfoobarbazegg")
+ expected = "\x1b[92m────────────────\x1b[0m\n"
+ expected += "\x1b[92m───── \x1b[0mfoo\x1b[92m ──────\x1b[0m\n"
+ expected += "\x1b[92m───── \x1b[0m\x1b[1mfoo\x1b[0m\x1b[92m ──────\x1b[0m\n"
+ expected += "\x1b[92m─ \x1b[0mfoobarbazeg…\x1b[92m ─\x1b[0m\n"
+
+ result = console.file.getvalue()
+ assert result == expected
+
+
+def test_rule_error():
+ console = Console(width=16, file=io.StringIO(), legacy_windows=False)
+ with pytest.raises(ValueError):
+ console.rule("foo", align="foo")
+
+
+def test_rule_align():
+ console = Console(width=16, file=io.StringIO(), legacy_windows=False)
+ console.rule("foo")
+ console.rule("foo", align="left")
+ console.rule("foo", align="center")
+ console.rule("foo", align="right")
+ console.rule()
+ result = console.file.getvalue()
+ print(repr(result))
+ expected = "───── foo ──────\nfoo ────────────\n───── foo ──────\n──────────── foo\n────────────────\n"
+ assert result == expected
+
+
+def test_rule_cjk():
+ console = Console(
+ width=16,
+ file=io.StringIO(),
+ force_terminal=True,
+ color_system=None,
+ legacy_windows=False,
+ )
+ console.rule("欢迎!")
+ expected = "──── 欢迎! ────\n"
+ assert console.file.getvalue() == expected
+
+
+def test_characters():
+ console = Console(
+ width=16,
+ file=io.StringIO(),
+ force_terminal=True,
+ color_system=None,
+ legacy_windows=False,
+ )
+ console.rule(characters="+*")
+ console.rule("foo", characters="+*")
+ console.print(Rule(characters=".,"))
+ expected = "+*+*+*+*+*+*+*+*\n"
+ expected += "+*+*+ foo +*+*+*\n"
+ expected += ".,.,.,.,.,.,.,.,\n"
+ assert console.file.getvalue() == expected
+
+
+def test_repr():
+ rule = Rule("foo")
+ assert isinstance(repr(rule), str)
+
+
+def test_error():
+ with pytest.raises(ValueError):
+ Rule(characters="")