aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_scene.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-28 12:25:51 +0100
committerDanilo M. <danix@danix.xyz>2026-10-28 12:25:51 +0100
commit89b1fb6f88ef2ea60f28623e04d46072ef15ba21 (patch)
tree25c542717a4bf7e6208411c9a6bc0731ae37841d /tests/test_scene.py
parentd658a24d2da58064c0dceaa8688246625ff9ef75 (diff)
downloadgenerat3D-89b1fb6f88ef2ea60f28623e04d46072ef15ba21.tar.gz
generat3D-89b1fb6f88ef2ea60f28623e04d46072ef15ba21.zip
Skip non-numeric morph channels, summarize other-geometry morphs
Genesis 9 Starter Essentials ships file-launcher channels (type "file") in its Morphs folder and morphs whose vertex count belongs to other geometry. The first made loading fatal, the second printed one warning per morph. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/test_scene.py')
-rw-r--r--tests/test_scene.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/test_scene.py b/tests/test_scene.py
index fe6c34d..812ea60 100644
--- a/tests/test_scene.py
+++ b/tests/test_scene.py
@@ -182,6 +182,21 @@ class SceneTest(unittest.TestCase):
_, err = load_quiet(DATA / "scene.duf", [root])
self.assertEqual(err.count("2 HD morphs"), 1)
+ def test_non_numeric_channel_skipped(self):
+ launcher = self.mod("Tools")
+ launcher["channel"] = {"id": "value", "type": "file", "value": "/x/tool.dsa"}
+ root = self.root(self.MORPHS + "Tools.dsf", self.morph_doc(launcher))
+ scene, _ = load_quiet(DATA / "scene.duf", [root])
+ self.assertNotIn("Fig:Tools?value", scene.graph.props)
+
+ def test_other_geometry_warning_once(self):
+ other = {"vertex_count": 99, "deltas": {"values": [[0, 1, 0, 0]]}}
+ root = self.root(self.MORPHS + "Other.dsf", self.morph_doc(
+ self.mod("Lash1", other), self.mod("Lash2", other)))
+ scene, err = load_quiet(DATA / "scene.duf", [root])
+ self.assertEqual(err.count("2 morphs for other geometry skipped"), 1)
+ self.assertNotIn("Fig:Lash1?value", scene.figure.morphs)
+
def test_on_demand_morph_outside_morphs_dir(self):
root = self.root("data/Test/Extra/Bulk.dsf", self.morph_doc(
self.mod("Bulk", {"vertex_count": 3, "deltas": {"values": [[2, 0, 0, 1]]}})))