summaryrefslogtreecommitdiffstats
path: root/tests/test_pretty.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_pretty.py')
-rw-r--r--tests/test_pretty.py145
1 files changed, 145 insertions, 0 deletions
diff --git a/tests/test_pretty.py b/tests/test_pretty.py
new file mode 100644
index 0000000..4ba8c27
--- /dev/null
+++ b/tests/test_pretty.py
@@ -0,0 +1,145 @@
+from array import array
+from collections import defaultdict
+import io
+import sys
+
+from rich.console import Console
+from rich.pretty import install, Pretty, pprint, pretty_repr, Node
+
+
+def test_install():
+ console = Console(file=io.StringIO())
+ dh = sys.displayhook
+ install(console)
+ sys.displayhook("foo")
+ assert console.file.getvalue() == "'foo'\n"
+ assert sys.displayhook is not dh
+
+
+def test_pretty():
+ test = {
+ "foo": [1, 2, 3, (4, 5, {6}, 7, 8, {9}), {}],
+ "bar": {"egg": "baz", "words": ["Hello World"] * 10},
+ False: "foo",
+ True: "",
+ "text": ("Hello World", "foo bar baz egg"),
+ }
+
+ result = pretty_repr(test, max_width=80)
+ print(result)
+ print(repr(result))
+ expected = "{\n 'foo': [1, 2, 3, (4, 5, {6}, 7, 8, {9}), {}],\n 'bar': {\n 'egg': 'baz',\n 'words': [\n 'Hello World',\n 'Hello World',\n 'Hello World',\n 'Hello World',\n 'Hello World',\n 'Hello World',\n 'Hello World',\n 'Hello World',\n 'Hello World',\n 'Hello World'\n ]\n },\n False: 'foo',\n True: '',\n 'text': ('Hello World', 'foo bar baz egg')\n}"
+ print(expected)
+ assert result == expected
+
+
+def test_small_width():
+ test = ["Hello world! 12345"]
+ result = pretty_repr(test, max_width=10)
+ expected = "[\n 'Hello world! 12345'\n]"
+ assert result == expected
+
+
+def test_broken_repr():
+ class BrokenRepr:
+ def __repr__(self):
+ 1 / 0
+
+ test = [BrokenRepr()]
+ result = pretty_repr(test)
+ expected = "[<repr-error 'division by zero'>]"
+ assert result == expected
+
+
+def test_recursive():
+ test = []
+ test.append(test)
+ result = pretty_repr(test)
+ expected = "[...]"
+ assert result == expected
+
+
+def test_defaultdict():
+ test_dict = defaultdict(int, {"foo": 2})
+ result = pretty_repr(test_dict)
+ assert result == "defaultdict(<class 'int'>, {'foo': 2})"
+
+
+def test_array():
+ test_array = array("I", [1, 2, 3])
+ result = pretty_repr(test_array)
+ assert result == "array('I', [1, 2, 3])"
+
+
+def test_tuple_of_one():
+ assert pretty_repr((1,)) == "(1,)"
+
+
+def test_node():
+ node = Node("abc")
+ assert pretty_repr(node) == "abc: "
+
+
+def test_indent_lines():
+ console = Console(width=100, color_system=None)
+ console.begin_capture()
+ console.print(Pretty([100, 200], indent_guides=True), width=8)
+ expected = """\
+[
+│ 100,
+│ 200
+]
+"""
+ result = console.end_capture()
+ print(repr(result))
+ print(result)
+ assert result == expected
+
+
+def test_pprint():
+ console = Console(color_system=None)
+ console.begin_capture()
+ pprint(1, console=console)
+ assert console.end_capture() == "1\n"
+
+
+def test_pprint_max_values():
+ console = Console(color_system=None)
+ console.begin_capture()
+ pprint([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], console=console, max_length=2)
+ assert console.end_capture() == "[1, 2, ... +8]\n"
+
+
+def test_pprint_max_items():
+ console = Console(color_system=None)
+ console.begin_capture()
+ pprint({"foo": 1, "bar": 2, "egg": 3}, console=console, max_length=2)
+ assert console.end_capture() == """{'foo': 1, 'bar': 2, ... +1}\n"""
+
+
+def test_pprint_max_string():
+ console = Console(color_system=None)
+ console.begin_capture()
+ pprint(["Hello" * 20], console=console, max_string=8)
+ assert console.end_capture() == """['HelloHel'+92]\n"""
+
+
+def test_tuples():
+ console = Console(color_system=None)
+ console.begin_capture()
+ pprint((1,), console=console)
+ pprint((1,), expand_all=True, console=console)
+ pprint(((1,),), expand_all=True, console=console)
+ result = console.end_capture()
+ print(repr(result))
+ expected = "(1,)\n(\n│ 1,\n)\n(\n│ (\n│ │ 1,\n│ ),\n)\n"
+ assert result == expected
+
+
+def test_newline():
+ console = Console(color_system=None)
+ console.begin_capture()
+ console.print(Pretty((1,), insert_line=True, expand_all=True))
+ result = console.end_capture()
+ expected = "\n(\n 1,\n)\n"
+ assert result == expected