def test_backward_reader(self): f = tempfile.TemporaryFile(mode='r+') forward_lines = [] backward_lines = [] # test empty files forward_lines = list(f) backward_lines = list(read_backwards(f)) backward_lines.reverse() self.assertEquals(forward_lines, backward_lines) # filling file with content contents = [ 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do', 'eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut', 'enim ad minim veniam, quis nostrud exercitation ullamco laboris', 'nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor', 'in reprehenderit in voluptate velit esse cillum dolore eu fugiat', 'nulla pariatur. Excepteur sint occaecat cupidatat non proident,', 'sunt in culpa qui officia deserunt mollit anim id est laborum.', ] for i in range(5): for line in contents: f.write('%s\n' % line) # test with different buffer sizes for bufsize in (1, 5000): f.seek(0) # test full file reading forward_lines = list(f) backward_lines = list(read_backwards(f, bufsize)) backward_lines.reverse() self.assertEquals(forward_lines, backward_lines) # test partial file reading from middle to beginning forward_lines = [] for i in range(2 * len(contents)): forward_lines.append(f.readline()) backward_lines = list(read_backwards(f, bufsize)) backward_lines.reverse() self.assertEquals(forward_lines, backward_lines) f.close()
def test_backward_reader(self): f = tempfile.TemporaryFile(mode='r+') forward_lines = [] backward_lines = [] # test empty files forward_lines = list(f) backward_lines = list(read_backwards(f)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) # filling file with content contents = [ 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do', 'eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut', 'enim ad minim veniam, quis nostrud exercitation ullamco laboris', 'nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor', 'in reprehenderit in voluptate velit esse cillum dolore eu fugiat', 'nulla pariatur. Excepteur sint occaecat cupidatat non proident,', 'sunt in culpa qui officia deserunt mollit anim id est laborum.', ] for i in range(5): for line in contents: f.write('%s\n' % line) # test with different buffer sizes for bufsize in (1, 5000): f.seek(0) # test full file reading forward_lines = list(f) backward_lines = list(read_backwards(f, bufsize)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) # test partial file reading from middle to beginning forward_lines = [] for i in range(2 * len(contents)): forward_lines.append(f.readline()) backward_lines = list(read_backwards(f, bufsize)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) f.close()
def test_backward_reader(self): f = tempfile.TemporaryFile(mode='r+') forward_lines = [] backward_lines = [] # test empty files forward_lines = list(f) backward_lines = list(read_backwards(f)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) # filling file with content contents = [ 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do', 'eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut', 'enim ad minim veniam, quis nostrud exercitation ullamco laboris', 'nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor', 'in reprehenderit in voluptate velit esse cillum dolore eu fugiat', 'nulla pariatur. Excepteur sint occaecat cupidatat non proident,', 'sunt in culpa qui officia deserunt mollit anim id est laborum.', ] for i in range(5): for line in contents: f.write('%s\n' % line) # test with different buffer sizes for bufsize in (1, 5000): f.seek(0) # test full file reading forward_lines = list(f) backward_lines = list(read_backwards(f, bufsize=bufsize)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) # test partial file reading from middle to beginning forward_lines = [] for i in range(2 * len(contents)): forward_lines.append(f.readline()) backward_lines = list( read_backwards(f, from_byte=f.tell(), bufsize=bufsize) ) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) f.close() # Some special cases not caught by the tests above -- test with # different from_byte's f = tempfile.TemporaryFile(mode='r+') written = '\n'.join(contents) f.write(written) for from_byte in range(1, len(written)): lines = written[:from_byte].split('\n') if lines[-1] == '': lines = lines[:-1] append_newline = written[from_byte - 1] == '\n' if append_newline: lines = ['{0}\n'.format(line) for line in lines] else: lines[:-1] = ['{0}\n'.format(line) for line in lines[:-1]] lines = list(reversed(lines)) for bufsize in range(1, 30): self.assertEqual( list(read_backwards(f, from_byte=from_byte, bufsize=bufsize)), lines )
def test_backward_reader(self): f = tempfile.TemporaryFile(mode='r+') forward_lines = [] backward_lines = [] # test empty files forward_lines = list(f) backward_lines = list(read_backwards(f)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) # filling file with content contents = [ 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do', 'eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut', 'enim ad minim veniam, quis nostrud exercitation ullamco laboris', 'nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor', 'in reprehenderit in voluptate velit esse cillum dolore eu fugiat', 'nulla pariatur. Excepteur sint occaecat cupidatat non proident,', 'sunt in culpa qui officia deserunt mollit anim id est laborum.', ] for i in range(5): for line in contents: f.write('%s\n' % line) # test with different buffer sizes for bufsize in (1, 5000): f.seek(0) # test full file reading forward_lines = list(f) backward_lines = list(read_backwards(f, bufsize=bufsize)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) # test partial file reading from middle to beginning forward_lines = [] for i in range(2 * len(contents)): forward_lines.append(f.readline()) backward_lines = list( read_backwards(f, from_byte=f.tell(), bufsize=bufsize)) backward_lines.reverse() self.assertEqual(forward_lines, backward_lines) f.close() # Some special cases not caught by the tests above -- test with # different from_byte's f = tempfile.TemporaryFile(mode='r+') written = '\n'.join(contents) f.write(written) for from_byte in range(1, len(written)): lines = written[:from_byte].split('\n') if lines[-1] == '': lines = lines[:-1] append_newline = written[from_byte - 1] == '\n' if append_newline: lines = ['{0}\n'.format(line) for line in lines] else: lines[:-1] = ['{0}\n'.format(line) for line in lines[:-1]] lines = list(reversed(lines)) for bufsize in range(1, 30): self.assertEqual( list( read_backwards(f, from_byte=from_byte, bufsize=bufsize)), lines)