def test_b_suffix_is_valid(self): s = "500MB" actual = Memory.from_str(s) expected = Memory(500, Unit.MEGA) assert actual == expected
def test_no_suffix_and_float_returns_bytes(self): s = "500.8" actual = Memory.from_str(s) expected = Memory(500.8) assert actual == expected
def test_suffix_is_case_insensitive(self): s = "500zb" actual = Memory.from_str(s).bytes() expected = Memory(500, Unit.ZETTA).bytes() assert actual == expected
def test_multiple_spaces_between_size_and_suffix_is_valid(self): s = "500 MB" actual = Memory.from_str(s) expected = Memory(500, Unit.MEGA) assert actual == expected
def test_same_value_and_unit(self): value = 50 unit = Unit.PETA mem1 = Memory(value, unit) mem2 = Memory(value, unit) assert mem1 == mem2
def test_bytes_suffix_is_valid(self): s = "7B" actual = Memory.from_str(s) expected = Memory(7) assert actual == expected
def test_no_suffix_returns_bytes(self): s = "500" actual = Memory.from_str(s) expected = Memory(500) assert actual == expected
def test_terabytes_to_kilobytes_in_binary(self): memory = Memory(30, Unit.TERA) desired_units = Unit.KILO actual = memory.to(desired_units, decimal_multiples=False) expected = Memory(32_212_254_720, desired_units) assert actual == expected
def test_terabytes_to_megabytes(self): memory = Memory(30, Unit.TERA) desired_units = Unit.MEGA actual = memory.to(desired_units) expected = Memory(30_000_000, desired_units) assert actual == expected
def test_bytes_to_kilobytes(self): memory = Memory(10) desired_units = Unit.KILO actual = memory.to(desired_units) expected = Memory(0.01, desired_units) assert actual == expected
def test_bytes_to_bytes(self): memory = Memory(10) desired_units = Unit.BYTES actual = memory.to(desired_units) expected = Memory(10, desired_units) assert actual == expected
def test_different_value_same_unit(self): value1 = 50 unit = Unit.PETA mem1 = Memory(value1, unit) value2 = 60 mem2 = Memory(value2, unit) assert mem1 != mem2
def test_same_value_different_unit(self): value = 50 unit1 = Unit.PETA mem1 = Memory(value, unit1) unit2 = Unit.KILO mem2 = Memory(value, unit2) assert mem1 != mem2
def test_memory_is_bytes_no_conversion_needed(self): value = 40 mem = Memory(value) actual = mem.bytes() expected = value assert actual == expected
def test_large_floats_comparison(self): value = 500 unit = Unit.ZETTA mem = Memory(value, unit) actual = mem.bytes() expected = float(500_000_000_000_000_000_000_000) assert actual == expected
def test_memory_is_kilobytes_nondecimal_returns_power_of_two(self): value = 40 unit = Unit.KILO mem = Memory(value, unit) actual = mem.bytes(decimal_multiples=False) expected = 40_960 assert actual == expected
def test_float_as_value(self): value = 0.5 unit = Unit.GIGA mem = Memory(value, unit) actual = mem.bytes() expected = 500_000_000 assert actual == expected
def test_memory_is_megabytes_conversion_needed(self): value = 40 unit = Unit.MEGA mem = Memory(value, unit) actual = mem.bytes() expected = 40_000_000 assert actual == expected
def test_memory_suffix(): mem = Memory(3, Unit.EXA) actual = mem.suffix expected = "EB" assert actual == expected
def test_round_float_number_returns_int(self): memory = Memory(50.0, Unit.KILO) actual = str(memory) expected = "50KB" assert actual == expected
def test_float_number_returns_float(self): memory = Memory(50.2, Unit.ZETTA) actual = str(memory) expected = "50.2ZB" assert actual == expected
def test_memory_power(): mem = Memory(3, Unit.MEGA) actual = mem.power expected = 2 assert actual == expected
def test_bytes_to_megabytes(self): memory = Memory(2_500) desired_units = Unit.MEGA actual = memory.to(desired_units) expected = Memory(0.0025, desired_units) assert actual == expected
def test_kilobytes_to_gigabytes(self): memory = Memory(2_500, Unit.KILO) desired_units = Unit.GIGA actual = memory.to(desired_units) expected = Memory(0.0025, desired_units) assert actual == expected
def test_empty_string_raises_error(self): s = "" with pytest.raises(InvalidMemoryString): Memory.from_str(s)
def test_string_with_other_characters_raises_error(self): s = "7KBY" with pytest.raises(InvalidMemoryString): Memory.from_str(s)
def test_invalid_suffix_raises_error(self): s = "7LB" with pytest.raises(InvalidMemoryString): Memory.from_str(s)
def test_suffix_only_raises_error(self): s = "TB" with pytest.raises(InvalidMemoryString): Memory.from_str(s)
def test_different_value_different_unit_same_bytes(self): mem1 = Memory(500, Unit.MEGA) mem2 = Memory(0.5, Unit.GIGA) assert mem1 == mem2
def test_different_value_different_unit_different_bytes(self): mem1 = Memory(500, Unit.KILO) mem2 = Memory(0.5, Unit.GIGA) assert mem1 != mem2