mirror of
https://github.com/ManimCommunity/manim.git
synced 2026-06-22 10:01:47 +00:00
* Format imports using Isort. Add a check for pull requests. Signed-off-by: Naveen M K <naveen@syrusdark.website> * CI: update check's name
79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
import pytest
|
|
|
|
from manim import Container, Mobject, Scene, tempconfig
|
|
|
|
|
|
def test_ABC():
|
|
"""Test that the Container class cannot be instantiated."""
|
|
with pytest.raises(TypeError):
|
|
Container()
|
|
|
|
# The following should work without raising exceptions
|
|
Mobject()
|
|
|
|
with tempconfig({"dry_run": True}):
|
|
Scene()
|
|
|
|
|
|
def container_add(obj, get_submobjects):
|
|
"""Call this function with a Container instance to test its add() method."""
|
|
# check that obj.submobjects is updated correctly
|
|
assert len(get_submobjects()) == 0
|
|
obj.add(Mobject())
|
|
assert len(get_submobjects()) == 1
|
|
obj.add(*(Mobject() for _ in range(10)))
|
|
assert len(get_submobjects()) == 11
|
|
|
|
# check that adding a mobject twice does not actually add it twice
|
|
repeated = Mobject()
|
|
obj.add(repeated)
|
|
assert len(get_submobjects()) == 12
|
|
obj.add(repeated)
|
|
assert len(get_submobjects()) == 12
|
|
|
|
# check that Container.add() returns the Mobject (for chained calls)
|
|
assert obj.add(Mobject()) is obj
|
|
|
|
|
|
def container_remove(obj, get_submobjects):
|
|
"""Call this function with a Container instance to test its remove() method."""
|
|
to_remove = Mobject()
|
|
obj.add(to_remove)
|
|
obj.add(*(Mobject() for _ in range(10)))
|
|
assert len(get_submobjects()) == 11
|
|
obj.remove(to_remove)
|
|
assert len(get_submobjects()) == 10
|
|
obj.remove(to_remove)
|
|
assert len(get_submobjects()) == 10
|
|
|
|
# check that Container.remove() returns the instance (for chained calls)
|
|
assert obj.add(Mobject()) is obj
|
|
|
|
|
|
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)
|
|
|
|
# can only add Mobjects
|
|
with pytest.raises(TypeError):
|
|
obj.add("foo")
|
|
|
|
|
|
def test_mobject_remove():
|
|
"""Test Mobject.remove()."""
|
|
obj = Mobject()
|
|
container_remove(obj, lambda: obj.submobjects)
|
|
|
|
|
|
def test_scene_add_remove():
|
|
"""Test Scene.add() and Scene.remove()."""
|
|
with tempconfig({"dry_run": True}):
|
|
scene = Scene()
|
|
container_add(scene, lambda: scene.mobjects)
|
|
scene = Scene()
|
|
container_remove(scene, lambda: scene.mobjects)
|