from unittest import TestCase, main from mypy.util import trim_source_line, split_words class FancyErrorFormattingTestCases(TestCase): def test_trim_source(self) -> None: assert trim_source_line('0123456789abcdef', max_len=16, col=5, min_width=2) == ('0123456789abcdef', 0) # Locations near start. assert trim_source_line('0123456789abcdef', max_len=7, col=0, min_width=2) == ('0123456...', 0) assert trim_source_line('0123456789abcdef', max_len=7, col=4, min_width=2) == ('0123456...', 0) # Middle locations. assert trim_source_line('0123456789abcdef', max_len=7, col=5, min_width=2) == ('...1234567...', -2) assert trim_source_line('0123456789abcdef', max_len=7, col=6, min_width=2) == ('...2345678...', -1) assert trim_source_line('0123456789abcdef', max_len=7, col=8, min_width=2) == ('...456789a...', 1) # Locations near the end. assert trim_source_line('0123456789abcdef', max_len=7, col=11, min_width=2) == ('...789abcd...', 4) assert trim_source_line('0123456789abcdef', max_len=7, col=13, min_width=2) == ('...9abcdef', 6) assert trim_source_line('0123456789abcdef', max_len=7, col=15, min_width=2) == ('...9abcdef', 6) def test_split_words(self) -> None: assert split_words('Simple message') == ['Simple', 'message'] assert split_words('Message with "Some[Long, Types]"' ' in it') == ['Message', 'with', '"Some[Long, Types]"', 'in', 'it'] assert split_words('Message with "Some[Long, Types]"' ' and [error-code]') == ['Message', 'with', '"Some[Long, Types]"', 'and', '[error-code]'] assert split_words('"Type[Stands, First]" then words') == ['"Type[Stands, First]"', 'then', 'words'] assert split_words('First words "Then[Stands, Type]"') == ['First', 'words', '"Then[Stands, Type]"'] assert split_words('"Type[Only, Here]"') == ['"Type[Only, Here]"'] assert split_words('OneWord') == ['OneWord'] assert split_words(' ') == ['', ''] if __name__ == '__main__': main()