Fix various tests and reveal underlying issues by using get_fill_color() instead of fill_color and related

This commit is contained in:
Francisco Manríquez Novoa 2026-02-14 15:59:38 -03:00
commit 33884470e4
8 changed files with 46 additions and 38 deletions

View file

@ -4,11 +4,11 @@ from manim.mobject.opengl.opengl_vectorized_mobject import OpenGLVMobject as VMo
def test_vmobject_init():
vm = VMobject()
assert vm.fill_color == [col.WHITE]
assert vm.stroke_color == [col.WHITE]
assert vm.get_fill_color() == col.WHITE
assert vm.get_stroke_color() == col.WHITE
vm = VMobject(color=col.RED)
assert vm.fill_color == [col.RED]
assert vm.stroke_color == [col.RED]
assert vm.get_fill_color() == col.RED
assert vm.get_stroke_color() == col.RED
vm = VMobject(fill_color=col.GREEN, stroke_color=col.YELLOW)
assert vm.fill_color == [col.GREEN]
assert vm.stroke_color == [col.YELLOW]
assert vm.get_fill_color() == col.GREEN
assert vm.get_stroke_color() == col.YELLOW

View file

@ -7,33 +7,33 @@ from tests.helpers.path_utils import get_svg_resource
def test_set_fill_color():
expected_color = "#FF862F"
svg = SVGMobject(get_svg_resource("heart.svg"), fill_color=expected_color)
assert svg.fill_color.to_hex() == expected_color
assert svg.get_fill_color().to_hex() == expected_color
def test_set_stroke_color():
expected_color = "#FFFDDD"
svg = SVGMobject(get_svg_resource("heart.svg"), stroke_color=expected_color)
assert svg.stroke_color.to_hex() == expected_color
assert svg.get_stroke_color().to_hex() == expected_color
def test_set_color_sets_fill_and_stroke():
expected_color = "#EEE777"
svg = SVGMobject(get_svg_resource("heart.svg"), color=expected_color)
assert svg.color.to_hex() == expected_color
assert svg.fill_color.to_hex() == expected_color
assert svg.stroke_color.to_hex() == expected_color
assert svg.get_fill_color().to_hex() == expected_color
assert svg.get_stroke_color().to_hex() == expected_color
def test_set_fill_opacity():
expected_opacity = 0.5
svg = SVGMobject(get_svg_resource("heart.svg"), fill_opacity=expected_opacity)
assert svg.fill_opacity == expected_opacity
assert svg.get_fill_opacity() == expected_opacity
def test_stroke_opacity():
expected_opacity = 0.4
svg = SVGMobject(get_svg_resource("heart.svg"), stroke_opacity=expected_opacity)
assert svg.stroke_opacity == expected_opacity
assert svg.get_stroke_opacity() == expected_opacity
def test_fill_overrides_color():
@ -43,7 +43,7 @@ def test_fill_overrides_color():
color="#123123",
fill_color=expected_color,
)
assert svg.fill_color.to_hex() == expected_color
assert svg.get_fill_color().to_hex() == expected_color
def test_stroke_overrides_color():
@ -53,7 +53,7 @@ def test_stroke_overrides_color():
color="#334433",
stroke_color=expected_color,
)
assert svg.stroke_color.to_hex() == expected_color
assert svg.get_stroke_color().to_hex() == expected_color
def test_single_path_turns_into_sequence_of_points():

View file

@ -45,5 +45,5 @@ def test_color_when_number_of_digits_changes():
mob = Integer(color=RED)
mob.set_value(42)
assert all(
submob.stroke_color.to_hex() == RED.to_hex() for submob in mob.submobjects
submob.get_stroke_color().to_hex() == RED.to_hex() for submob in mob.submobjects
)

View file

@ -7,16 +7,16 @@ from manim.mobject.vector_field import StreamLines
def test_stroke_props_in_ctor():
m = VMobject(stroke_color=C.ORANGE, stroke_width=10)
assert m.stroke_color.to_hex() == C.ORANGE.to_hex()
assert m.stroke_width == 10
assert m.get_stroke_color().to_hex() == C.ORANGE.to_hex()
assert m.get_stroke_width() == 10
def test_set_stroke():
m = VMobject()
m.set_stroke(color=C.ORANGE, width=2, opacity=0.8)
assert m.stroke_width == 2
assert m.stroke_opacity == 0.8
assert m.stroke_color.to_hex() == C.ORANGE.to_hex()
assert m.get_stroke_width() == 2
assert m.get_stroke_opacity() == 0.8
assert m.get_stroke_color().to_hex() == C.ORANGE.to_hex()
def test_set_background_stroke():
@ -37,8 +37,8 @@ def test_streamline_attributes_for_single_color():
opacity=0.2,
color=C.BLUE_D,
)
assert vector_field[0].stroke_width == 1.0
assert vector_field[0].stroke_opacity == 0.2
assert vector_field[0].get_stroke_width() == 1.0
assert vector_field[0].get_stroke_opacity() == 0.2
def test_stroke_scale():

View file

@ -104,7 +104,7 @@ def test_to_rgb() -> None:
def test_to_hex() -> None:
color = ManimColor((0x1, 0x2, 0x3, 0x4))
nt.assert_equal(color.to_hex(), "#010203")
nt.assert_equal(color.to_hex(True), "#01020304")
nt.assert_equal(color.to_hex(with_alpha=True), "#01020304")
def test_to_hsv() -> None:
@ -143,7 +143,7 @@ def test_invert() -> None:
def test_invert_with_alpha() -> None:
color = ManimColor((0x1, 0x2, 0x3, 0x4))
rgba = color._internal_value
inverted = color.invert(True)
inverted = color.invert(with_alpha=True)
nt.assert_array_equal(
inverted._internal_value, (1 - rgba[0], 1 - rgba[1], 1 - rgba[2], 1 - rgba[3])
)
@ -182,10 +182,10 @@ def test_mc_from_functions() -> None:
nt.assert_equal(color.to_hex(), "#FFFF00")
color = ManimColor.from_rgba((1.0, 1.0, 0.0, 1.0))
nt.assert_equal(color.to_hex(True), "#FFFF00FF")
nt.assert_equal(color.to_hex(with_alpha=True), "#FFFF00FF")
color = ManimColor.from_hsv((1.0, 1.0, 1.0), alpha=0.0)
nt.assert_equal(color.to_hex(True), "#FF000000")
nt.assert_equal(color.to_hex(with_alpha=True), "#FF000000")
def test_hsv_init() -> None:

View file

@ -31,7 +31,7 @@ def test_code_initialization_from_file():
background_config={"fill_color": "#101010"},
)
assert len(rendered_code.code_lines) == len(rendered_code.line_numbers)
assert rendered_code.background.fill_color == ManimColor("#101010")
assert rendered_code.background.get_fill_color() == ManimColor("#101010")
def test_line_heights_initial_whitespace():

View file

@ -33,24 +33,30 @@ def test_preserve_tex_color():
txt = Tex(r"\textcolor{red}{Hello} World")
assert len(txt[0].submobjects) == 10
assert all(char.fill_color.to_hex() == "#FF0000" for char in txt[0][:5]) # "Hello"
assert all(
char.fill_color.to_hex() == WHITE.to_hex() for char in txt[0][-5:]
char.get_fill_color().to_hex() == "#FF0000" for char in txt[0][:5]
) # "Hello"
assert all(
char.get_fill_color().to_hex() == WHITE.to_hex() for char in txt[0][-5:]
) # "World"
txt = Tex(r"\textcolor{red}{Hello} World", color=BLUE)
assert len(txt[0].submobjects) == 10
assert all(char.fill_color.to_hex() == "#FF0000" for char in txt[0][:5]) # "Hello"
assert all(
char.fill_color.to_hex() == BLUE.to_hex() for char in txt[0][-5:]
char.get_fill_color().to_hex() == "#FF0000" for char in txt[0][:5]
) # "Hello"
assert all(
char.get_fill_color().to_hex() == BLUE.to_hex() for char in txt[0][-5:]
) # "World"
Tex.set_default(color=GREEN)
txt = Tex(r"\textcolor{red}{Hello} World")
assert len(txt[0].submobjects) == 10
assert all(char.fill_color.to_hex() == "#FF0000" for char in txt[0][:5]) # "Hello"
assert all(
char.fill_color.to_hex() == GREEN.to_hex() for char in txt[0][-5:]
char.get_fill_color().to_hex() == "#FF0000" for char in txt[0][:5]
) # "Hello"
assert all(
char.get_fill_color().to_hex() == GREEN.to_hex() for char in txt[0][-5:]
) # "World"
Tex.set_default()

View file

@ -11,11 +11,13 @@ def test_Text2Color():
disable_ligatures=True,
)
assert len(txt.submobjects) == 29
assert all(char.fill_color.to_hex() == "#FFFFFF" for char in txt[:4]) # "this"
assert all(
char.fill_color.to_hex() == RED.to_hex() for char in txt[-7:-1]
char.get_fill_color().to_hex() == "#FFFFFF" for char in txt[:4]
) # "this"
assert all(
char.get_fill_color().to_hex() == RED.to_hex() for char in txt[-7:-1]
) # "spaces"
assert txt[-1].fill_color.to_hex() == "#FFFFFF" # "!"
assert txt[-1].get_fill_color().to_hex() == "#FFFFFF" # "!"
def test_text_color_inheritance():
@ -27,8 +29,8 @@ def test_text_color_inheritance():
text = Text("test_color_inheritance", font="Sans")
markup_text = MarkupText("test_color_inheritance", font="Sans")
assert all(char.fill_color.to_hex() == RED.to_hex() for char in text)
assert all(char.fill_color.to_hex() == RED.to_hex() for char in markup_text)
assert all(char.get_fill_color().to_hex() == RED.to_hex() for char in text)
assert all(char.get_fill_color().to_hex() == RED.to_hex() for char in markup_text)
# reset the default color so that future tests aren't affected by this change.
VMobject.set_default()