def test_mobject_add(): """Test Mobject.add().""" obj = Mobject() container_add(obj, lambda: obj.submobjects) # a Mobject cannot contain itself with pytest.raises(ValueError): obj.add(obj)
def test_mobject_copy(): """Test that a copy is a deepcopy.""" orig = Mobject() orig.add(*[Mobject() for _ in range(10)]) copy = orig.copy() assert orig is orig assert orig is not copy assert orig.submobjects is not copy.submobjects for i in range(10): assert orig.submobjects[i] is not copy.submobjects[i]
def test_overlapping_family(): """Check that each member of the family is only gathered once.""" mob, child1, child2, = Mobject(), Mobject(), Mobject(), gchild1, gchild2, gchild_common = Mobject(), Mobject(), Mobject() child1.add(gchild1, gchild_common) child2.add(gchild2, gchild_common) mob.add(child1, child2) family = mob.get_family() assert mob in family assert len(family) == 6 assert family.count(gchild_common) == 1
def test_mobject_remove(): """Test Mobject.remove().""" obj = Mobject() to_remove = Mobject() obj.add(to_remove) obj.add(*(Mobject() for _ in range(10))) assert len(obj.submobjects) == 11 obj.remove(to_remove) assert len(obj.submobjects) == 10 obj.remove(to_remove) assert len(obj.submobjects) == 10 assert obj.remove(Mobject()) is obj
def test_family(): """Check that the family is gathered correctly.""" # Check that an empty mobject's family only contains itself mob = Mobject() assert mob.get_family() == [mob] # Check that all children are in the family mob = Mobject() children = [Mobject() for _ in range(10)] mob.add(*children) family = mob.get_family() assert len(family) == 1 + 10 assert mob in family for c in children: assert c in family # Nested children should be in the family mob = Mobject() grandchildren = {} for _ in range(10): child = Mobject() grandchildren[child] = [Mobject() for _ in range(10)] child.add(*grandchildren[child]) mob.add(*list(grandchildren.keys())) family = mob.get_family() assert len(family) == 1 + 10 + 10 * 10 assert mob in family for c in grandchildren: assert c in family for gc in grandchildren[c]: assert gc in family
def test_mobject_add(): """Test Mobject.add().""" """Call this function with a Container instance to test its add() method.""" # check that obj.submobjects is updated correctly obj = Mobject() assert len(obj.submobjects) == 0 obj.add(Mobject()) assert len(obj.submobjects) == 1 obj.add(*(Mobject() for _ in range(10))) assert len(obj.submobjects) == 11 # check that adding a mobject twice does not actually add it twice repeated = Mobject() obj.add(repeated) assert len(obj.submobjects) == 12 obj.add(repeated) assert len(obj.submobjects) == 12 # check that Mobject.add() returns the Mobject (for chained calls) assert obj.add(Mobject()) is obj obj = Mobject() # a Mobject cannot contain itself with pytest.raises(ValueError): obj.add(obj) # can only add Mobjects with pytest.raises(TypeError): obj.add("foo")