Files
krowlog/src/new_big_text/test_file_model.py

54 lines
1.7 KiB
Python

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()