def test_inequality(self): first = PropertySet({ "name": "Alice", "age": 33, "colours": ["red", "purple"] }) second = PropertySet({ "name": "Bob", "age": 44, "colours": ["blue", "purple"] }) assert first != second
def test_hashable(self): first = PropertySet({ "name": "Alice", "age": 33, "colours": ["red", "purple"] }) second = PropertySet({ "name": "Bob", "age": 44, "colours": ["blue", "purple"] }) collected = {first, second} assert len(collected) == 2
def test_byte_arrays_are_not_supported(self): try: PropertySet({"value": bytearray(b"hello, world")}) except TypeError: assert True else: assert False
def test_integer_too_low(self): try: PropertySet({"value": -(2**64)}) except ValueError: assert True else: assert False
def test_heterogenous_list(self): try: PropertySet({"value": [True, 2, u"three"]}) except ValueError: assert True else: assert False
def test_integer_too_high(self): try: PropertySet({"value": 2**64}) except ValueError: assert True else: assert False
def test_setdefault_without_default_with_non_existent(self): properties = PropertySet({"name": "Alice"}) value = properties.setdefault("age") assert properties == {"name": "Alice", "age": None} assert value is None
def test_unicode_strings_are_supported(self): props = PropertySet({"value": u"hello, world"}) assert props == {"value": u"hello, world"}
def test_integer_in_range(self): props = PropertySet({"value": 1}) assert props == {"value": 1}
def test_getter(self): properties = PropertySet({"name": "Alice"}) assert properties["name"] == "Alice"
def test_homogenous_list(self): props = PropertySet({"value": [1, 2, 3]}) assert props == {"value": [1, 2, 3]}
def test_setdefault_without_default_with_existing(self): properties = PropertySet({"name": "Alice", "age": 33}) value = properties.setdefault("age") assert properties == {"name": "Alice", "age": 33} assert value == 33
def test_setter_with_none_for_non_existent(self): properties = PropertySet({"name": "Alice"}) properties["age"] = None assert properties == {"name": "Alice"}
def test_setter_with_none(self): properties = PropertySet({"name": "Alice", "age": 33}) properties["age"] = None assert properties == {"name": "Alice"}
def test_setter(self): properties = PropertySet({"name": "Alice"}) properties["age"] = 33 assert properties == {"name": "Alice", "age": 33}
def test_getter_with_none(self): properties = PropertySet({"name": "Alice"}) assert properties["age"] is None
def test_homogenous_list_of_strings(self): props = PropertySet({"value": [u"hello", b"world"]}) assert props == {"value": [u"hello", u"world"]}
def test_setdefault_with_default_with_non_existent(self): properties = PropertySet({"name": "Alice"}) value = properties.setdefault("age", 33) assert properties == {"name": "Alice", "age": 33} assert value == 33
def test_deleter(self): properties = PropertySet({"name": "Alice", "age": 33}) del properties["age"] assert properties == {"name": "Alice"}
def test_boolean(self): props = PropertySet({"value": True}) assert props == {"value": True}