import unittest from src.new_big_text.bigger_text import FileModel, Line, LineType class FileModelTestCase(unittest.TestCase): def test_read_lines_with_offset_0(self): fm = FileModel("testdata/readlines.txt") actual_lines = fm.read(file_offset=0, lines_to_read=5, max_line_length=16, encoding="utf8") self.assertEqual([ Line(0, 1, '1\n'), Line(2, 4, '12\n'), Line(5, 8, '123\n'), Line(9, 13, '1234\n'), Line(14, 19, '12345\n') ], actual_lines) def test_read_lines_with_offset_in_middle_of_line(self): fm = FileModel("testdata/readlines.txt") file_offset = "1\n12\n123\n".find("123") + 1 actual_lines = fm.read( file_offset=file_offset, # at char 2 in line 3 lines_to_read=5, max_line_length=16, encoding="utf8") self.assertEqual([ Line(5, 8, '123\n'), Line(9, 13, '1234\n'), Line(14, 19, '12345\n'), Line(20, 26, '123456\n'), Line(27, 34, '1234567\n') ], actual_lines) def test_read_long_line__buffer_larger_than_line(self): fm = FileModel("testdata/longLines.txt") fm.BUFFER_SIZE = 512 actual_lines = fm.read( file_offset=0, lines_to_read=3, max_line_length=10, encoding="utf8" ) self.assertEqual([ Line(0, 9, "1aaaaaaaa-", LineType.Begin), Line(10, 19, "bbbbbbbbb-", LineType.Middle), Line(20, 27, "ccccccc\n", LineType.End), ], actual_lines) if __name__ == '__main__': unittest.main()