aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_formula.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-28 10:31:32 +0100
committerDanilo M. <danix@danix.xyz>2026-10-28 10:31:32 +0100
commit1402ca7d6c2bb0cea2cf52a4ecce7b809ebf31b1 (patch)
treeebb446e11002b1a5a5ac7a22a95cfeca425f1017 /tests/test_formula.py
parentf5a4bab82e97de7d20d1e6b5cae250a150b71891 (diff)
downloadgenerat3D-1402ca7d6c2bb0cea2cf52a4ecce7b809ebf31b1.tar.gz
generat3D-1402ca7d6c2bb0cea2cf52a4ecce7b809ebf31b1.zip
Reject malformed spline counts and unsorted knots
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/test_formula.py')
-rw-r--r--tests/test_formula.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/test_formula.py b/tests/test_formula.py
index 7440681..10065d2 100644
--- a/tests/test_formula.py
+++ b/tests/test_formula.py
@@ -168,3 +168,29 @@ class SplineTest(unittest.TestCase):
g.add_prop("b")
g.add_formula("b", spline_ops("spline_linear", [[0, 0], [1, 10]]))
self.assertAlmostEqual(g.evaluate()["b"], 5.0)
+
+ def test_fractional_count_is_fatal(self):
+ g = Graph()
+ g.add_prop("a", 0.5)
+ g.add_prop("b")
+ ops = [push("a"), val([0, 0]), val([1, 1]), val(2.5), {"op": "spline_linear"}]
+ g.add_formula("b", ops, source="f")
+ with self.assertRaisesRegex(Error, "malformed formula for b"):
+ g.evaluate()
+
+ def test_unsorted_knots_are_fatal(self):
+ g = Graph()
+ g.add_prop("a", 0.5)
+ g.add_prop("b")
+ g.add_formula("b", spline_ops("spline_linear", [[1, 1], [0, 0], [2, 5]]), source="f")
+ with self.assertRaisesRegex(Error, "malformed formula for b"):
+ g.evaluate()
+
+ def test_count_larger_than_stack_is_fatal(self):
+ g = Graph()
+ g.add_prop("a", 0.5)
+ g.add_prop("b")
+ ops = [push("a"), val(0), val(1), {"op": "spline_linear"}]
+ g.add_formula("b", ops, source="f")
+ with self.assertRaisesRegex(Error, "malformed formula for b"):
+ g.evaluate()