def test_read_entire_chunk(self): filename = os.path.join(self.tempdir, 'foo') f = open(filename, 'wb') f.write(b'onetwothreefourfivesixseveneightnineten') f.flush() chunk = ReadFileChunk(filename, start_byte=0, size=3) self.assertEqual(chunk.read(), b'one') self.assertEqual(chunk.read(), b'')
def test_read_past_end_of_file(self): filename = os.path.join(self.tempdir, 'foo') f = open(filename, 'wb') f.write(b'onetwothreefourfivesixseveneightnineten') f.flush() chunk = ReadFileChunk(filename, start_byte=36, size=100000) self.assertEqual(chunk.read(), b'ten') self.assertEqual(chunk.read(), b'') self.assertEqual(len(chunk), 3)
def test_reset_stream_emulation(self): filename = os.path.join(self.tempdir, 'foo') f = open(filename, 'wb') f.write(b'onetwothreefourfivesixseveneightnineten') f.flush() chunk = ReadFileChunk(filename, start_byte=11, size=4) self.assertEqual(chunk.read(), b'four') chunk.seek(0) self.assertEqual(chunk.read(), b'four')
def test_read_with_amount_size(self): filename = os.path.join(self.tempdir, 'foo') f = open(filename, 'wb') f.write(b'onetwothreefourfivesixseveneightnineten') f.flush() chunk = ReadFileChunk(filename, start_byte=11, size=4) self.assertEqual(chunk.read(1), b'f') self.assertEqual(chunk.read(1), b'o') self.assertEqual(chunk.read(1), b'u') self.assertEqual(chunk.read(1), b'r') self.assertEqual(chunk.read(1), b'')
def test_read_with_amount_size(self): filename = os.path.join(self.tempdir, "foo") f = open(filename, "wb") f.write(b"onetwothreefourfivesixseveneightnineten") f.flush() chunk = ReadFileChunk(filename, start_byte=11, size=4) self.assertEqual(chunk.read(1), b"f") self.assertEqual(chunk.read(1), b"o") self.assertEqual(chunk.read(1), b"u") self.assertEqual(chunk.read(1), b"r") self.assertEqual(chunk.read(1), b"")
def test_tell_and_seek(self): filename = os.path.join(self.tempdir, "foo") f = open(filename, "wb") f.write(b"onetwothreefourfivesixseveneightnineten") f.flush() chunk = ReadFileChunk(filename, start_byte=36, size=100000) self.assertEqual(chunk.tell(), 0) self.assertEqual(chunk.read(), b"ten") self.assertEqual(chunk.tell(), 3) chunk.seek(0) self.assertEqual(chunk.tell(), 0)
def _read_part(self): actual_filename = self._filename.src in_file_part_number = self._part_number - 1 starting_byte = in_file_part_number * self._chunk_size return ReadFileChunk(actual_filename, starting_byte, self._chunk_size)