def test_recurse_all_components(self):
        # Signature: name
                # Returns an iterator over this component and all subcomponents


        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]))
    def test_recurse_all_components(self):
        # Signature: name
        # Returns an iterator over this component and all subcomponents

        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]))