Files
textual/tests/test_segment_tools.py
Will McGugan b9e1022f6e fix test
2022-06-08 12:04:18 +01:00

65 lines
1.8 KiB
Python

from rich.segment import Segment
from rich.style import Style
from textual._segment_tools import line_crop
def test_line_crop():
bold = Style(bold=True)
italic = Style(italic=True)
segments = [
Segment("Hello", bold),
Segment(" World!", italic),
]
total = sum(segment.cell_length for segment in segments)
assert line_crop(segments, 1, 2, total) == [Segment("e", bold)]
assert line_crop(segments, 4, 20, total) == [
Segment("o", bold),
Segment(" World!", italic),
]
def test_line_crop_emoji():
bold = Style(bold=True)
italic = Style(italic=True)
segments = [
Segment("Hello", bold),
Segment("💩💩💩", italic),
]
total = sum(segment.cell_length for segment in segments)
assert line_crop(segments, 8, 11, total) == [Segment(" 💩", italic)]
assert line_crop(segments, 9, 11, total) == [Segment("💩", italic)]
def test_line_crop_edge():
segments = [Segment("foo"), Segment("bar"), Segment("baz")]
total = sum(segment.cell_length for segment in segments)
assert line_crop(segments, 2, 9, total) == [
Segment("o"),
Segment("bar"),
Segment("baz"),
]
assert line_crop(segments, 3, 9, total) == [Segment("bar"), Segment("baz")]
assert line_crop(segments, 4, 9, total) == [Segment("ar"), Segment("baz")]
assert line_crop(segments, 4, 8, total) == [Segment("ar"), Segment("ba")]
def test_line_crop_edge_2():
segments = [
Segment("╭─"),
Segment(
"────── Placeholder ───────",
),
Segment(
"─╮",
),
]
total = sum(segment.cell_length for segment in segments)
result = line_crop(segments, 30, 60, total)
expected = []
print(repr(result))
assert result == expected