Ejemplo n.º 1
0
 def test_callback_is_invoked_on_read(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.read(1)
     chunk.read(1)
     chunk.read(1)
     self.assertEqual(self.amounts_seen, [1, 1, 1])
 def test_file_chunk_supports_context_manager(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'abc')
     with ReadFileChunk.from_filename(filename, start_byte=0,
                                      chunk_size=2) as chunk:
         val = chunk.read()
         self.assertEqual(val, b'ab')
Ejemplo n.º 3
0
 def test_iter_is_always_empty(self):
     # This tests the workaround for the httplib bug (see
     # the source for more info).
     filename = os.path.join(self.tempdir, 'foo')
     open(filename, 'wb').close()
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=0, chunk_size=10)
     self.assertEqual(list(chunk), [])
Ejemplo n.º 4
0
 def test_read_entire_chunk(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=0, chunk_size=3)
     self.assertEqual(chunk.read(), b'one')
     self.assertEqual(chunk.read(), b'')
Ejemplo n.º 5
0
 def test_callback_can_be_disabled(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.disable_callback()
     # Now reading from the ReadFileChunk should not invoke
     # the callback.
     chunk.read()
     self.assertEqual(self.amounts_seen, [])
Ejemplo n.º 6
0
 def test_reset_stream_emulation(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=11, chunk_size=4)
     self.assertEqual(chunk.read(), b'four')
     chunk.seek(0)
     self.assertEqual(chunk.read(), b'four')
Ejemplo n.º 7
0
 def test_signal_transferring(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.signal_not_transferring()
     chunk.read(1)
     self.assertEqual(self.amounts_seen, [])
     chunk.signal_transferring()
     chunk.read(1)
     self.assertEqual(self.amounts_seen, [1])
Ejemplo n.º 8
0
 def test_callback_will_also_be_triggered_by_seek(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback])
     chunk.read(2)
     chunk.seek(0)
     chunk.read(2)
     chunk.seek(1)
     chunk.read(2)
     self.assertEqual(self.amounts_seen, [2, -2, 2, -1, 2])
Ejemplo n.º 9
0
 def test_all_callbacks_invoked_on_read(self):
     chunk = ReadFileChunk.from_filename(
         self.filename, start_byte=0, chunk_size=3,
         callbacks=[self.callback, self.callback])
     chunk.read(1)
     chunk.read(1)
     chunk.read(1)
     # The list should be twice as long because there are two callbacks
     # recording the amount read.
     self.assertEqual(self.amounts_seen, [1, 1, 1, 1, 1, 1])
Ejemplo n.º 10
0
 def test_tell_and_seek(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=36, chunk_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)
Ejemplo n.º 11
0
 def test_read_with_amount_size(self):
     filename = os.path.join(self.tempdir, 'foo')
     with open(filename, 'wb') as f:
         f.write(b'onetwothreefourfivesixseveneightnineten')
     chunk = ReadFileChunk.from_filename(
         filename, start_byte=11, chunk_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'')