示例#1
0
def test_hash_openstruct_produce_the_same_keys():
    dave = OpenStruct({"name": "Dave", "age": 25})
    anna = OpenStruct({"name": "Dave", "age": 25})
    h = {}
    h[dave] = 1
    h[anna] = 2
    assert len(h) == 1
示例#2
0
def test_hash_openstruct_produce_different_keys():
    dave = OpenStruct({"name": "Dave", "age": 25})
    anna = OpenStruct({"name": "Anna", "age": 23})
    h = {}
    h[dave] = 1
    h[anna] = 2
    assert len(h) == 2
示例#3
0
def main():
    Dog = Struct(
        "Dog",
        "name",
        "age",
        methods={
            "say": lambda self: print("Hello {}".format(self.__dict__["name"]))
        },
    )

    d = Dog()
    d.name = "rex"
    d.age = 54
    d.say()
    print(d.members())

    d2 = Dog()
    d2.name = "Wolfie"
    d2.age = 22
    print("Age: {}".format(d2.age))
    d2.say()

    d3 = Dog()
    d3.name = "Wolfie"
    d3.age = 22
    d3.say()
    print("d2 == d3", d2 == d3)

    h = {}
    h[d] = 1
    h[d2] = 2
    h[d3] = 3
    print(len(h))

    o = OpenStruct()
    o.dog_name = "Rex"
    print(o.dog_name)
    print(o)

    b = OpenStruct({"age": 12})
    print(b.age)
示例#4
0
def test_delete_field_openstruct_name_not_exists():
    dave = OpenStruct({"name": "Dave"})
    dave.delete_field("age")
    assert "age=12" not in str(dave)
示例#5
0
def test_setitem_openstruct():
    dave = OpenStruct()
    dave["name"] = "Dave"
    assert "Dave" == dave.name and "Dave" == dave["name"]
示例#6
0
def test_getitem_openstruct_name_not_exists():
    dave = OpenStruct()
    assert None == dave.name and None == dave["name"]
示例#7
0
def test_getitem_openstruct_name_exists():
    dave = OpenStruct()
    dave["name"] = "Dave"
    assert dave.name == "Dave"
示例#8
0
def test_setattr_openstruct():
    dave = OpenStruct()
    dave.name = "Dave"
    assert "Dave" == dave.name
示例#9
0
def test_getattr_openstruct_name_not_exists():
    dave = OpenStruct()
    assert None == dave.name
示例#10
0
def test_to_dict_openstruct():
    dave = OpenStruct({"name": "Dave", "age": 12})
    assert dave.to_dict() == {"name": "Dave", "age": 12}
示例#11
0
def test_init_openstruct_with_fields():
    dave = OpenStruct({"name": "Dave", "age": 25})
    assert dave["name"] == "Dave" and dave["age"] == 25
示例#12
0
def test_str_openstruct():
    dave = OpenStruct({"name": "Dave", "age": 25})
    assert "name=Dave" in str(dave) and "age=25" in str(dave)
示例#13
0
def test_eq_openstruct_if_other_is_different():
    dave = OpenStruct({"name": "Dave", "age": 25})
    assert dave != 12
示例#14
0
def test_eq_openstruct_if_two_are_not_equivalent():
    dave = OpenStruct({"name": "Dave", "age": 25})
    anna = OpenStruct({"name": "Anna", "age": 23})
    assert dave != anna
示例#15
0
def test_each_pair_openstruct():
    dave = OpenStruct({"name": "Dave", "age": 12})
    res = dave.each_pair(lambda name, value: (name, value))
    assert ("name", "Dave") in res and ("age", 12) in res
示例#16
0
def test_getattr_openstruct_name_exists():
    dave = OpenStruct({"name": "Dave", "age": 25})
    assert "Dave" == dave.name
示例#17
0
def test_eq_openstruct_if_two_are_equivalent():
    dave = OpenStruct({"name": "Dave", "age": 25})
    double = OpenStruct({"name": "Dave", "age": 25})
    assert dave == double