コード例 #1
0
    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]))