aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_evaluate.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_evaluate.py')
-rw-r--r--tests/test_evaluate.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/test_evaluate.py b/tests/test_evaluate.py
index 6668b0e..da5b840 100644
--- a/tests/test_evaluate.py
+++ b/tests/test_evaluate.py
@@ -17,9 +17,12 @@
import contextlib
import io
+import json
+import tempfile
import unittest
from pathlib import Path
+from generat3d import Error
from generat3d.evaluate import evaluate
from generat3d.library import Library
from generat3d.scene import load
@@ -37,3 +40,17 @@ class EvaluateTest(unittest.TestCase):
self.assertEqual(rest["hip"]["end_point"], [0, 8, 0])
self.assertEqual(rest["Fig"]["end_point"], [0, 10, 0])
self.assertEqual(scene.figure.verts.tolist()[0], [0, 0, 0]) # base untouched
+
+ def test_overflow_is_error(self):
+ with tempfile.TemporaryDirectory() as d:
+ root = Path(d) / "extra"
+ p = root / "data/Test/Fig/Morphs/Test/Big.dsf"
+ p.parent.mkdir(parents=True)
+ p.write_text(json.dumps({"modifier_library": [{
+ "id": "Big", "parent": "/data/Test/Fig/Fig.dsf#Fig",
+ "channel": {"id": "value", "value": 1e300},
+ "morph": {"vertex_count": 3, "deltas": {"values": [[0, 1e300, 0, 0]]}}}]}))
+ with contextlib.redirect_stderr(io.StringIO()):
+ scene = load(DATA / "scene.duf", Library([DATA / "lib", root]))
+ with self.assertRaisesRegex(Error, "non-finite"):
+ evaluate(scene)