def test_console_width(): console = Console() test = Text("Hello World!\nfoobarbaz") assert test.__rich_measure__(console, 80) == Measurement(9, 12) assert Text(" " * 4).__rich_measure__(console, 80) == Measurement(4, 4) assert Text(" \n \n ").__rich_measure__(console, 80) == Measurement(3, 3)
def test_rich_measure(): console = Console() assert Table("test_header", width=-1).__rich_measure__( console, console.options) == Measurement(0, 0) # Check __rich_measure__() for a positive width passed as an argument assert Table("test_header", width=None).__rich_measure__( console, console.options.update_width(10)) == Measurement(10, 10)
def render_tables(): console = Console( width=60, force_terminal=True, file=io.StringIO(), legacy_windows=False, color_system=None, ) table = Table(title="test table", caption="table caption", expand=True) table.add_column("foo", footer=Text("total"), no_wrap=True, overflow="ellipsis") table.add_column("bar", justify="center") table.add_column("baz", justify="right") table.add_row("Averlongwordgoeshere", "banana pancakes", None) assert Measurement.get(console, table, 80) == Measurement(41, 48) for width in range(10, 60, 5): console.print(table, width=width) table.expand = False console.print(table, justify="left") console.print(table, justify="center") console.print(table, justify="right") assert table.row_count == 1 table.row_styles = ["red", "yellow"] table.add_row("Coffee") table.add_row("Coffee", "Chocolate", None, "cinnamon") assert table.row_count == 3 console.print(table) table.show_lines = True console.print(table) table.show_footer = True console.print(table) table.show_edge = False console.print(table) table.padding = 1 console.print(table) table.width = 20 assert Measurement.get(console, table, 80) == Measurement(20, 20) console.print(table) return console.file.getvalue()
def test_rich_measure(): # Check __rich_measure__() for a negative width passed as an argument assert Table("test_header", width=None).__rich_measure__(Console(), -1) == Measurement(0, 0) # Check __rich_measure__() for a negative Table.width attribute assert Table("test_header", width=-1).__rich_measure__(Console(), 1) == Measurement(0, 0) # Check __rich_measure__() for a positive width passed as an argument assert Table("test_header", width=None).__rich_measure__(Console(), 10) == Measurement(10, 10) # Check __rich_measure__() for a positive Table.width attribute assert Table("test_header", width=10).__rich_measure__(Console(), -1) == Measurement(10, 10)
def test_tree_measure(): tree = Tree("foo") tree.add("bar") tree.add("musroom risotto") console = Console() measurement = Measurement.get(console, tree) assert measurement == Measurement(11, 19)
def test_styled(): styled_foo = Styled("foo", "on red") console = Console(file=io.StringIO(), force_terminal=True) assert Measurement.get(console, styled_foo, 80) == Measurement(3, 3) console.print(styled_foo) result = console.file.getvalue() expected = "\x1b[41mfoo\x1b[0m\n" assert result == expected
def test_measure_pretty(): """Test measure respects expand_all""" # https://github.com/Textualize/rich/issues/1998 console = Console() pretty = Pretty(["alpha", "beta", "delta", "gamma"], expand_all=True) measurement = console.measure(pretty) assert measurement == Measurement(12, 12)
def test_min_width(): table = Table("foo", min_width=30) table.add_row("bar") assert table.__rich_measure__(Console(), 100) == Measurement(30, 30) console = Console(color_system=None) console.begin_capture() console.print(table) output = console.end_capture() print(output) assert all(len(line) == 30 for line in output.splitlines())
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)
def test_clamp(): measurement = Measurement(20, 100) assert measurement.clamp(10, 50) == Measurement(20, 50) assert measurement.clamp(30, 50) == Measurement(30, 50) assert measurement.clamp(None, 50) == Measurement(20, 50) assert measurement.clamp(30, None) == Measurement(30, 100) assert measurement.clamp(None, None) == Measurement(20, 100)
def __rich_measure__(self, console: Console, max_width: int) -> Measurement: width = 0 for backend in self.backends.values(): panel = Panel.fit( Backend(backend.used, backend.available), box=box.SQUARE, title=emojify_device(backend.device), ) size = measure_renderables(console, console.options, [panel]) width += size.minimum width += len(self.backends) - 1 return Measurement(width, width)
def __rich_measure__(self, console: "Console", options: ConsoleOptions) -> Measurement: return Measurement(1, options.max_width)
def test_span(): measurement = Measurement(10, 100) assert measurement.span == 90
def test_null_get(): # Test negative console.width passed into get method assert Measurement.get(Console(width=-1), None) == Measurement(0, 0) # Test negative max_width passed into get method assert Measurement.get(Console(), None, -1) == Measurement(0, 0)
def test_measure_renderables(): # Test measure_renderables returning a null Measurement object assert measure_renderables(Console(), None, None) == Measurement(0, 0) # Test measure_renderables returning a valid Measurement object assert measure_renderables(Console(width=1), ["test"], 1) == Measurement(1, 1)
def __rich_measure__(self, console: "Console", max_width: int) -> Measurement: return Measurement(1, max_width)
def test_measure_renderables(): console = Console() assert measure_renderables(console, console.options, "") == Measurement(0, 0) assert measure_renderables(console, console.options.update_width(0), "hello") == Measurement(0, 0)