aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_evaluate.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-28 10:35:56 +0100
committerDanilo M. <danix@danix.xyz>2026-10-28 10:35:56 +0100
commit6304f9b074452af3648266fe23c773f8fb478270 (patch)
tree58435e1bb68f2708aa1421fc41c2cccb692100fe /tests/test_evaluate.py
parent1b811693373c20e48160cf2eca5e723727ec6ca5 (diff)
downloadgenerat3D-6304f9b074452af3648266fe23c773f8fb478270.tar.gz
generat3D-6304f9b074452af3648266fe23c773f8fb478270.zip
Evaluate scenes into morphed vertices and rest data
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/test_evaluate.py')
-rw-r--r--tests/test_evaluate.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/test_evaluate.py b/tests/test_evaluate.py
new file mode 100644
index 0000000..6668b0e
--- /dev/null
+++ b/tests/test_evaluate.py
@@ -0,0 +1,39 @@
+# generat3D - evaluate Daz DSON scenes and write .dbz files
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import contextlib
+import io
+import unittest
+from pathlib import Path
+
+from generat3d.evaluate import evaluate
+from generat3d.library import Library
+from generat3d.scene import load
+
+DATA = Path(__file__).parent / "data"
+
+
+class EvaluateTest(unittest.TestCase):
+ def test_synthetic_scene(self):
+ with contextlib.redirect_stderr(io.StringIO()):
+ scene = load(DATA / "scene.duf", Library([DATA / "lib"]))
+ verts, rest = evaluate(scene)
+ self.assertEqual(verts.tolist(), [[-0.5, 0, 0], [1.5, 2, 0], [0, 1, 0]])
+ self.assertEqual(rest["hip"]["center_point"], [0, 7, 0])
+ 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