aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_scene.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-28 10:44:16 +0100
committerDanilo M. <danix@danix.xyz>2026-10-28 10:44:16 +0100
commit0838881b87f3a59ccd841d247e4b975347529220 (patch)
treede0684bcf35e91c75ed5c615f88bc639fe4e2e44 /tests/test_scene.py
parentd368de4b30d8a1dc9bb72ba45c55b07d3f034c82 (diff)
downloadgenerat3D-0838881b87f3a59ccd841d247e4b975347529220.tar.gz
generat3D-0838881b87f3a59ccd841d247e4b975347529220.zip
Turn remaining malformed-input crashes into Error
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/test_scene.py')
-rw-r--r--tests/test_scene.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/test_scene.py b/tests/test_scene.py
index 76a28b6..056f3e1 100644
--- a/tests/test_scene.py
+++ b/tests/test_scene.py
@@ -233,3 +233,35 @@ class SceneTest(unittest.TestCase):
"output": "hip:/data/Test/Fig2/Fig2.dsf#hip?center_point/y",
"operations": [{"op": "push", "val": 1}]}]})
self.assertEqual(len(scene.graph.formulas["hip:hip?center_point/y"]), 1)
+
+ def raw_fig2(self, text):
+ """Load the temp figure from raw JSON text (for literals json.dumps rejects)."""
+ root = self.dir / "raw"
+ p = root / "data/Test/Fig2/Fig2.dsf"
+ p.parent.mkdir(parents=True)
+ p.write_text(text)
+ nodes = [{"id": "Fig2", "url": "/data/Test/Fig2/Fig2.dsf#Fig2", "name": "Fig2"}]
+ return load_quiet(self.duf({"nodes": nodes}), [root])
+
+ def test_bone_value_not_a_number(self):
+ xyz = [{"id": "x", "value": "a"}]
+ with self.assertRaisesRegex(Error, "hip: center_point is not a finite number"):
+ self.fig2(hip_extra={"center_point": xyz})
+
+ def test_bone_value_not_finite(self):
+ text = json.dumps(self.fig_doc()).replace(
+ '"orientation": [{"id": "x", "value": 0}', '"orientation": [{"id": "x", "value": 1e400}', 1)
+ self.assertIn("1e400", text)
+ with self.assertRaisesRegex(Error, "is not a finite number"):
+ self.raw_fig2(text)
+
+ def test_modifier_value_nan(self):
+ root = self.root(self.MORPHS + "Nan.dsf", self.morph_doc(self.mod("Nan")))
+ p = root / (self.MORPHS + "Nan.dsf")
+ p.write_text(p.read_text().replace('"value": 0', '"value": NaN'))
+ with self.assertRaisesRegex(Error, "Nan: value is not a finite number"):
+ load_quiet(DATA / "scene.duf", [root])
+
+ def test_bad_vertices(self):
+ with self.assertRaisesRegex(Error, "bad vertices"):
+ self.fig2(verts=[[0, 0], [1, 0], [0, 1]])