def test_get_slot_from_several_parents(): """ o.parents | |-- p <-- cycle, yay --, | |-- x -> Object() | | |-- y -> Object() | | `-- z -> p --------' | `-- p3 `-- x -> p2 | `-- xex """ val = PrimitiveStrObject("it is xex!") p = Object() p.meta_add_slot("x", Object()) p.meta_add_slot("y", Object()) p.meta_add_slot("z", p) # cycle, yay! p2 = Object() p.meta_add_slot("xex", val) p3 = Object() p.meta_add_slot("x", p2) o = Object() o.meta_add_parent("p", p) o.meta_add_parent("p3", p3) assert o.get_slot("xex") is None assert o.parent_lookup("xex") is val
def test_parent_lookup_from_parent_tree(): """ Based on real case. """ value = PrimitiveStrObject("value") o1 = Object() o2 = Object() o3 = o2.clone() o4 = Object() o5 = Object() o1.scope_parent = o2 o2.scope_parent = o3 o2.meta_add_parent("*", o5) o3.scope_parent = o4 o3.meta_add_parent("*", o5) o4.scope_parent = o5 o4.meta_add_slot("value", value) assert o1.get_slot("value") is None assert o1.parent_lookup("value") is value
def test_get_slot_from_one_parent(): val = PrimitiveStrObject("it is xex!") p = Object() p.meta_add_slot("xex", val) o = Object() o.meta_add_parent("p", p) assert o.get_slot("xex") is None assert o.parent_lookup("xex") is val