def test_replace_component(self):
        from libcellml import ComponentEntity, Component

        # bool replaceComponent(size_t index, const ComponentPtr &c)
        x = ComponentEntity()
        a = Component()
        b = Component()
        self.assertFalse(x.replaceComponent(0, b))
        self.assertFalse(x.replaceComponent(1, b))
        self.assertFalse(x.replaceComponent(-1, b))
        x.addComponent(a)
        self.assertTrue(x.containsComponent(a))
        self.assertFalse(x.containsComponent(b))
        self.assertFalse(x.replaceComponent(1, b))
        self.assertFalse(x.replaceComponent(-1, b))
        self.assertTrue(x.replaceComponent(0, b))
        self.assertTrue(x.containsComponent(b))
        self.assertFalse(x.containsComponent(a))

        # bool replaceComponent(const std::string &name, const ComponentPtr &c,
        #   bool searchEncapsulated = true)
        x = ComponentEntity()
        a = Component()
        a.setName('a')
        b = Component()
        b.setName('b')
        self.assertFalse(x.replaceComponent('a', b))
        self.assertFalse(x.replaceComponent('b', a))
        x.addComponent(a)
        self.assertTrue(x.containsComponent(a))
        self.assertFalse(x.containsComponent(b))
        self.assertFalse(x.replaceComponent('b', a))
        self.assertTrue(x.replaceComponent('a', b))
        self.assertTrue(x.containsComponent(b))
        self.assertFalse(x.containsComponent(a))
        self.assertTrue(x.replaceComponent('b', a, True))
        self.assertTrue(x.replaceComponent('a', b, False))
        self.assertTrue(x.replaceComponent('b', a, 100))
        self.assertTrue(x.replaceComponent('a', b, []))
        self.assertTrue(x.replaceComponent('b', a, 'yes'))
        self.assertTrue(x.replaceComponent('a', b, a))
        del(x, a, b)

        # replaceComponent(const ComponentPtr &c1, const ComponentPtr &c2,
        #   bool searchEncapsulated = true)
        x = ComponentEntity()
        a = Component()
        b = Component()
        self.assertFalse(x.replaceComponent(a, b))
        self.assertFalse(x.replaceComponent(b, a))
        x.addComponent(a)
        self.assertTrue(x.containsComponent(a))
        self.assertFalse(x.containsComponent(b))
        self.assertFalse(x.replaceComponent(b, a))
        self.assertTrue(x.replaceComponent(a, b))
        self.assertTrue(x.containsComponent(b))
        self.assertFalse(x.containsComponent(a))
        self.assertTrue(x.replaceComponent(b, a, True))
        self.assertTrue(x.replaceComponent(a, b, False))
        self.assertTrue(x.replaceComponent(b, a, 100))
        self.assertTrue(x.replaceComponent(a, b, []))
        self.assertTrue(x.replaceComponent(b, a, 'yes'))
        self.assertTrue(x.replaceComponent(a, b, a))
    def test_contains_component(self):
        from libcellml import ComponentEntity, Component

        # bool containsComponent(const std::string &name,
        #   bool searchEncapsulated)
        x = ComponentEntity()
        y = Component()
        name = 'blue'
        y.setName(name)
        self.assertFalse(x.containsComponent(name))
        self.assertFalse(x.containsComponent(name, True))
        self.assertFalse(x.containsComponent(name, False))
        self.assertFalse(x.containsComponent(name, name))
        x.addComponent(y)
        self.assertTrue(x.containsComponent(name))
        z = Component()
        name2 = 'green'
        z.setName(name2)
        y.addComponent(z)
        self.assertFalse(x.containsComponent(name2, False))
        self.assertFalse(x.containsComponent(name2, 0))
        self.assertTrue(x.containsComponent(name2, True))
        self.assertTrue(x.containsComponent(name2, name2))
        del(x, y, z, name, name2)

        # bool containsComponent(const ComponentPtr &component,
        #   bool searchEncapsulated)
        x = ComponentEntity()
        y = Component()
        self.assertFalse(x.containsComponent(y))
        self.assertFalse(x.containsComponent(y, True))
        self.assertFalse(x.containsComponent(y, False))
        self.assertFalse(x.containsComponent(y, y))
        x.addComponent(y)
        self.assertTrue(x.containsComponent(y))
        z = Component()
        y.addComponent(z)
        self.assertFalse(x.containsComponent(z, False))
        self.assertFalse(x.containsComponent(z, 0))
        self.assertTrue(x.containsComponent(z, True))
        self.assertTrue(x.containsComponent(z, z))
        del(x, y, z)