import unittest import numpy as np from pathlib import Path import tempfile import os import sys PROJECT_ROOT = Path(__file__).resolve().parent.parent sys.path.append(str(PROJECT_ROOT)) from NodeSlicer.core.nodeslicer.nodes.inputs import SLICENODE_WipeTower from NodeSlicer.infra.prusaslicer_profiles.models import ConfigWriter from NodeSlicer.infra.blender.blender_mesh_capture import SlicingGroup class TestWipeTowerNode(unittest.TestCase): def test_wipe_tower_node_output(self): node = SLICENODE_WipeTower() node.resolve = lambda key: 180.5 if key == "Position X" else 135.2 res = node.evaluate_output("Settings") self.assertIn("wipe_tower_position", res) self.assertEqual(res["wipe_tower_position"], (180.5, 135.2)) def test_config_writer_excludes_wipe_tower_position(self): conf = { "layer_height": "0.2", "wipe_tower_position": "(180.5, 135.2)", "nozzle_diameter": "0.4" } writer = ConfigWriter(conf) with tempfile.TemporaryDirectory() as temp_dir: ini_path = Path(temp_dir) / "Slic3r_PE.config" writer.write_ini_3mf(ini_path) with open(ini_path, 'r', encoding='utf-8') as f: content = f.read() self.assertIn("; layer_height = 0.2", content) self.assertIn("; nozzle_diameter = 0.4", content) self.assertNotIn("wipe_tower_position", content) if __name__ == "__main__": unittest.main()