def test_recurse_all_components(self): # Signature: name # Returns an iterator over this component and all subcomponents from nineml.abstraction_layer import ComponentClass d = ComponentClass(name="D") e = ComponentClass(name="E") f = ComponentClass(name="F") g = ComponentClass(name="G") b = ComponentClass(name="B") b.insert_subnode(namespace="d", subnode=d) b.insert_subnode(namespace="e", subnode=e) c = ComponentClass(name="C") c.insert_subnode(namespace="f", subnode=f) c.insert_subnode(namespace="g", subnode=g) a = ComponentClass(name="A") a.insert_subnode(namespace="b", subnode=b) a.insert_subnode(namespace="c", subnode=c) # Construction of the objects causes cloning to happen: # Therefore we test by looking up and checking that there # are the correct component names: bNew = a.get_subnode("b") cNew = a.get_subnode("c") dNew = a.get_subnode("b.d") eNew = a.get_subnode("b.e") fNew = a.get_subnode("c.f") gNew = a.get_subnode("c.g") self.assertEquals(set(a.query.recurse_all_components), set([a, bNew, cNew, dNew, eNew, fNew, gNew])) self.assertEquals(set(bNew.query.recurse_all_components), set([bNew, dNew, eNew])) self.assertEquals(set(cNew.query.recurse_all_components), set([cNew, fNew, gNew])) self.assertEquals(set(dNew.query.recurse_all_components), set([dNew])) self.assertEquals(set(eNew.query.recurse_all_components), set([eNew])) self.assertEquals(set(fNew.query.recurse_all_components), set([fNew])) self.assertEquals(set(gNew.query.recurse_all_components), set([gNew]))