diff --git a/doc/changelog.d/1645.test.md b/doc/changelog.d/1645.test.md new file mode 100644 index 0000000000..289409cf3c --- /dev/null +++ b/doc/changelog.d/1645.test.md @@ -0,0 +1 @@ +add more find and fix tests for repair tools \ No newline at end of file diff --git a/tests/integration/files/DuplicateFaces.scdocx b/tests/integration/files/DuplicateFaces.scdocx new file mode 100644 index 0000000000..b122fd6936 Binary files /dev/null and b/tests/integration/files/DuplicateFaces.scdocx differ diff --git a/tests/integration/files/ExtraEdges.scdocx b/tests/integration/files/ExtraEdges.scdocx new file mode 100644 index 0000000000..5b9b0efc3b Binary files /dev/null and b/tests/integration/files/ExtraEdges.scdocx differ diff --git a/tests/integration/files/ExtraEdges_NoComponents.scdocx b/tests/integration/files/ExtraEdges_NoComponents.scdocx new file mode 100644 index 0000000000..686ac81e20 Binary files /dev/null and b/tests/integration/files/ExtraEdges_NoComponents.scdocx differ diff --git a/tests/integration/files/gear.scdocx b/tests/integration/files/gear.scdocx new file mode 100644 index 0000000000..70378d6cae Binary files /dev/null and b/tests/integration/files/gear.scdocx differ diff --git a/tests/integration/test_repair_tools.py b/tests/integration/test_repair_tools.py index e6ddd3e0e9..04f791563b 100644 --- a/tests/integration/test_repair_tools.py +++ b/tests/integration/test_repair_tools.py @@ -267,3 +267,66 @@ def test_fix_short_edges(modeler: Modeler): design = modeler.open_file(FILES_DIR / "ShortEdgesBefore.scdocx") problem_areas = modeler.repair_tools.find_short_edges(design.bodies, 10) assert problem_areas[0].fix().success is True + + +def test_find_and_fix_duplicate_faces(modeler: Modeler): + """Test to read geometry, find and fix duplicate faces and validate they are removed.""" + design = modeler.open_file(FILES_DIR / "DuplicateFaces.scdocx") + assert len(design.bodies) == 7 + areas = modeler.repair_tools.find_duplicate_faces(design.bodies) + assert len(areas) == 6 + for area in areas: + area.fix() + assert len(design.bodies) == 1 + + +def test_find_and_fix_extra_edges(modeler: Modeler): + """Test to read geometry, find and fix extra edges and validate they are removed.""" + design = modeler.open_file(FILES_DIR / "ExtraEdges_NoComponents.scdocx") + assert len(design.bodies) == 3 + starting_edge_count = 0 + for body in design.bodies: + starting_edge_count += len(body.edges) + assert starting_edge_count == 69 + extra_edges = modeler.repair_tools.find_extra_edges(design.bodies) + assert len(extra_edges) == 6 + for edge in extra_edges: + edge.fix() + final_edge_count = 0 + for body in design.bodies: + final_edge_count += len(body.edges) + assert final_edge_count == 36 + + +def test_find_and_fix_extra_edges_in_components(modeler: Modeler): + """ + Test to read geometry, find and fix extra edges in components and validate they are + removed. + """ + design = modeler.open_file(FILES_DIR / "ExtraEdges.scdocx") + len(design.components) + starting_edge_count = 0 + for components in design.components: + starting_edge_count += len(components.bodies[0].edges) + assert starting_edge_count == 69 + for components in design.components: + extra_edges = modeler.repair_tools.find_extra_edges(components.bodies) + for edge in extra_edges: + edge.fix() + final_edge_count = 0 + for components in design.components: + final_edge_count += len(components.bodies[0].edges) + assert final_edge_count == 36 + + +def test_find_and_fix_inexact_edges(modeler: Modeler): + """Test to read geometry, find and fix inexact edges and validate they are fixed removed.""" + design = modeler.open_file(FILES_DIR / "gear.scdocx") + assert len(design.bodies[0].edges) == 993 + inexact_edges = modeler.repair_tools.find_inexact_edges(design.bodies) + assert len(inexact_edges) == 272 + for i in inexact_edges: + i.fix() + assert len(design.bodies[0].edges) == 993 + inexact_edges = modeler.repair_tools.find_inexact_edges(design.bodies) + assert len(inexact_edges) == 0