def test_md5_creation(self): # Check creation with a real and noop md5 class data = u.ReadableToIterable(None, None, md5=True) self.assertEqual(md5().hexdigest(), data.get_md5sum()) self.assertIs(type(data.md5sum), type(md5())) data = u.ReadableToIterable(None, None, md5=False) self.assertEqual('', data.get_md5sum()) self.assertIs(type(data.md5sum), u.NoopMD5)
def test_iter(self): chunk_size = 4 write_data = tuple(x.encode() for x in ('a', 'b', 'c', 'd')) actual_md5sum = md5() with tempfile.TemporaryFile() as f: for x in write_data: f.write(x * chunk_size) actual_md5sum.update(x * chunk_size) f.seek(0) data = u.ReadableToIterable(f, chunk_size, True) for i, data_chunk in enumerate(data): self.assertEqual(chunk_size, len(data_chunk)) self.assertEqual(data_chunk, write_data[i] * chunk_size) self.assertEqual(actual_md5sum.hexdigest(), data.get_md5sum())
def test_unicode(self): # Check no errors are raised if unicode data is feed in. unicode_data = u'abc' actual_md5sum = md5(unicode_data.encode()).hexdigest() chunk_size = 2 with tempfile.TemporaryFile(mode='w+') as f: f.write(unicode_data) f.seek(0) data = u.ReadableToIterable(f, chunk_size, True) x = next(data) self.assertEqual(2, len(x)) self.assertEqual(unicode_data[:2], x) x = next(data) self.assertEqual(1, len(x)) self.assertEqual(unicode_data[2:], x) self.assertEqual(actual_md5sum, data.get_md5sum())