def parse_shard_size(size): """ Parse a string, expected to be in the format of, for example: 250m, 512k, 1024b. A string without a trailing letter is assumed to be bytes. Accepts the following: m as mebibytes, k as kibibytes, b as bytes, :param size: :return: """ size = str(size) if size.isdigit(): return int(size) last = size[-1].lower() number = size[:-1] choices = ['b', 'k', 'm'] if last not in choices: return if last == 'b': return int(number) elif last == 'k': return SizeHelpers.kib_to_bytes(int(number)) elif last == 'm': return SizeHelpers.mib_to_bytes(int(number))
def test_tell(self): number = random.randint(1, SizeHelpers.kib_to_bytes(768)) self.shard.seek(number) self.assertEqual(self.shard.tell(), number)
def test_read_with_size(self): fivetwelvekay = SizeHelpers.kib_to_bytes(512) read = self.shard.read(fivetwelvekay) self.assertEqual(fivetwelvekay, len(read))
def test__len__(self): fivetwelvekay = SizeHelpers.kib_to_bytes(512) self.shard.read(fivetwelvekay) self.assertTrue(self.shard.__len__() < self.shard.max_seek)
def test_calc_max_seek_beginning_small_shard(self): self.shard.shard_size = SizeHelpers.kib_to_bytes(512) self.shard._calc_max_seek() self.assertEqual(self.shard.max_seek, self.shard.shard_size)
def test_seek(self): number = random.randint(1, SizeHelpers.kib_to_bytes(768)) self.shard.seek(number) self.assertEqual(self.shard._f_obj.tell(), number)