# generat3D - evaluate Daz DSON scenes and write .dbz files # Copyright (C) 2026 Danilo M. # # 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