Regression Testing: Running tests based on blend files
Runs tests based on blend files with minimum python interaction.
Developed as part of GSoC 2021 - Regression Testing of Geometry Nodes.
Earlier, tests were built from scratch by adding a modifier/operation
from the Python API.
Now, tests can also be created inside blender and are compared using
Python script.
Features: Automatically adding expected object if it doesn't exist.
This patch adds tests for the following Geometry Nodes category:
* Curves
* Geometry
* Mesh
* Points
The implemented UML diagram for refactoring of mesh test framework.
{F10225906}
Technical Changes:
SpecMeshTest: It adds the modifier/operation based on the Spec provided.
BlendFileTest: It applies already existing modifier/operation from the blend file.
Test folders hierarchy with tests. This folder should be extracted to `lib\tests\modeling`
{F10240651}
Note: The `geometry_nodes` folder might lie under another `geometry_nodes` folder while extracting, please double check. Use the inner-most one.
The hierarchy should be:
-`lib\tests\modeling\geometry_nodes\mesh`
-`lib\tests\modeling\geometry_nodes\points`
and so on.
* From `ctest` the tests should be run as `ctest -R geo_node -C [Configuration]` on Windows.
* Each single test can be run with its entire name e..g `ctest -R geo_node_geometry_join_geometry`.(just an example). Run `ctest -N -R geo_node` to see all tests.
* From blender, the tests can be run `blender -b path\to\blend\file --python path\to\geo_node_test.py`
Reviewed By: zazizizou, JacquesLucke
Differential Revision: https://developer.blender.org/D11611
This commit is contained in:
@@ -26,7 +26,7 @@ from random import shuffle, seed
|
||||
seed(0)
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
|
||||
from modules.mesh_test import MeshTest, OperatorSpecEditMode, RunTest
|
||||
from modules.mesh_test import SpecMeshTest, OperatorSpecEditMode, RunTest
|
||||
|
||||
# Central vertical loop of Suzanne
|
||||
MONKEY_LOOP_VERT = {68, 69, 71, 73, 74, 75, 76, 77, 90, 129, 136, 175, 188, 189, 198, 207,
|
||||
@@ -38,242 +38,242 @@ MONKEY_LOOP_EDGE = {131, 278, 299, 305, 307, 334, 337, 359, 384, 396, 399, 412,
|
||||
def main():
|
||||
tests = [
|
||||
# bisect
|
||||
MeshTest("CubeBisect", "testCubeBisect", "expectedCubeBisect",
|
||||
SpecMeshTest("CubeBisect", "testCubeBisect", "expectedCubeBisect",
|
||||
[OperatorSpecEditMode("bisect",
|
||||
{"plane_co": (0, 0, 0), "plane_no": (0, 1, 1), "clear_inner": True,
|
||||
"use_fill": True}, 'FACE', {0, 1, 2, 3, 4, 5}, )]),
|
||||
|
||||
# blend from shape
|
||||
MeshTest("CubeBlendFromShape", "testCubeBlendFromShape", "expectedCubeBlendFromShape",
|
||||
SpecMeshTest("CubeBlendFromShape", "testCubeBlendFromShape", "expectedCubeBlendFromShape",
|
||||
[OperatorSpecEditMode("blend_from_shape", {"shape": "Key 1"}, 'FACE', {0, 1, 2, 3, 4, 5})]),
|
||||
|
||||
# bridge edge loops
|
||||
MeshTest("CubeBridgeEdgeLoop", "testCubeBrigeEdgeLoop", "expectedCubeBridgeEdgeLoop",
|
||||
SpecMeshTest("CubeBridgeEdgeLoop", "testCubeBrigeEdgeLoop", "expectedCubeBridgeEdgeLoop",
|
||||
[OperatorSpecEditMode("bridge_edge_loops", {}, "FACE", {0, 1})]),
|
||||
|
||||
# decimate
|
||||
MeshTest("MonkeyDecimate", "testMonkeyDecimate", "expectedMonkeyDecimate",
|
||||
SpecMeshTest("MonkeyDecimate", "testMonkeyDecimate", "expectedMonkeyDecimate",
|
||||
[OperatorSpecEditMode("decimate",
|
||||
{"ratio": 0.1}, "FACE", {i for i in range(500)})]),
|
||||
|
||||
# delete
|
||||
MeshTest("CubeDeleteVertices", "testCubeDeleteVertices", "expectedCubeDeleteVertices",
|
||||
SpecMeshTest("CubeDeleteVertices", "testCubeDeleteVertices", "expectedCubeDeleteVertices",
|
||||
[OperatorSpecEditMode("delete", {}, "VERT", {3})]),
|
||||
MeshTest("CubeDeleteFaces", "testCubeDeleteFaces", "expectedCubeDeleteFaces",
|
||||
SpecMeshTest("CubeDeleteFaces", "testCubeDeleteFaces", "expectedCubeDeleteFaces",
|
||||
[OperatorSpecEditMode("delete", {}, "FACE", {0})]),
|
||||
MeshTest("CubeDeleteEdges", "testCubeDeleteEdges", "expectedCubeDeleteEdges",
|
||||
SpecMeshTest("CubeDeleteEdges", "testCubeDeleteEdges", "expectedCubeDeleteEdges",
|
||||
[OperatorSpecEditMode("delete", {}, "EDGE", {0, 1, 2, 3})]),
|
||||
|
||||
# delete edge loop
|
||||
MeshTest("MonkeyDeleteEdgeLoopVertices", "testMokneyDeleteEdgeLoopVertices",
|
||||
SpecMeshTest("MonkeyDeleteEdgeLoopVertices", "testMokneyDeleteEdgeLoopVertices",
|
||||
"expectedMonkeyDeleteEdgeLoopVertices",
|
||||
[OperatorSpecEditMode("delete_edgeloop", {}, "VERT", MONKEY_LOOP_VERT)]),
|
||||
|
||||
MeshTest("MonkeyDeleteEdgeLoopEdges", "testMokneyDeleteEdgeLoopEdges",
|
||||
SpecMeshTest("MonkeyDeleteEdgeLoopEdges", "testMokneyDeleteEdgeLoopEdges",
|
||||
"expectedMonkeyDeleteEdgeLoopEdges",
|
||||
[OperatorSpecEditMode("delete_edgeloop", {}, "EDGE", MONKEY_LOOP_EDGE)]),
|
||||
|
||||
# delete loose
|
||||
MeshTest("CubeDeleteLooseVertices", "testCubeDeleteLooseVertices",
|
||||
SpecMeshTest("CubeDeleteLooseVertices", "testCubeDeleteLooseVertices",
|
||||
"expectedCubeDeleteLooseVertices",
|
||||
[OperatorSpecEditMode("delete_loose", {"use_verts": True, "use_edges": False, "use_faces": False},
|
||||
"VERT",
|
||||
{i for i in range(12)})]),
|
||||
MeshTest("CubeDeleteLooseEdges", "testCubeDeleteLooseEdges",
|
||||
SpecMeshTest("CubeDeleteLooseEdges", "testCubeDeleteLooseEdges",
|
||||
"expectedCubeDeleteLooseEdges",
|
||||
[OperatorSpecEditMode("delete_loose", {"use_verts": False, "use_edges": True, "use_faces": False},
|
||||
"EDGE",
|
||||
{i for i in range(14)})]),
|
||||
MeshTest("CubeDeleteLooseFaces", "testCubeDeleteLooseFaces",
|
||||
SpecMeshTest("CubeDeleteLooseFaces", "testCubeDeleteLooseFaces",
|
||||
"expectedCubeDeleteLooseFaces",
|
||||
[OperatorSpecEditMode("delete_loose", {"use_verts": False, "use_edges": False, "use_faces": True},
|
||||
"FACE",
|
||||
{i for i in range(7)})]),
|
||||
|
||||
# dissolve degenerate
|
||||
MeshTest("CubeDissolveDegenerate", "testCubeDissolveDegenerate",
|
||||
SpecMeshTest("CubeDissolveDegenerate", "testCubeDissolveDegenerate",
|
||||
"expectedCubeDissolveDegenerate",
|
||||
[OperatorSpecEditMode("dissolve_degenerate", {}, "VERT", {i for i in range(8)})]),
|
||||
|
||||
# dissolve edges
|
||||
MeshTest("CylinderDissolveEdges", "testCylinderDissolveEdges", "expectedCylinderDissolveEdges",
|
||||
SpecMeshTest("CylinderDissolveEdges", "testCylinderDissolveEdges", "expectedCylinderDissolveEdges",
|
||||
[OperatorSpecEditMode("dissolve_edges", {}, "EDGE", {0, 5, 6, 9})]),
|
||||
|
||||
# dissolve faces
|
||||
MeshTest("CubeDissolveFaces", "testCubeDissolveFaces", "expectedCubeDissolveFaces",
|
||||
SpecMeshTest("CubeDissolveFaces", "testCubeDissolveFaces", "expectedCubeDissolveFaces",
|
||||
[OperatorSpecEditMode("dissolve_faces", {}, "VERT", {5, 34, 47, 49, 83, 91, 95})]),
|
||||
|
||||
# dissolve verts
|
||||
MeshTest("CubeDissolveVerts", "testCubeDissolveVerts", "expectedCubeDissolveVerts",
|
||||
SpecMeshTest("CubeDissolveVerts", "testCubeDissolveVerts", "expectedCubeDissolveVerts",
|
||||
[OperatorSpecEditMode("dissolve_verts", {}, "VERT", {16, 20, 22, 23, 25})]),
|
||||
|
||||
# duplicate
|
||||
MeshTest("ConeDuplicateVertices", "testConeDuplicateVertices",
|
||||
SpecMeshTest("ConeDuplicateVertices", "testConeDuplicateVertices",
|
||||
"expectedConeDuplicateVertices",
|
||||
[OperatorSpecEditMode("duplicate", {}, "VERT", {i for i in range(33)} - {23})]),
|
||||
|
||||
MeshTest("ConeDuplicateOneVertex", "testConeDuplicateOneVertex", "expectedConeDuplicateOneVertex",
|
||||
SpecMeshTest("ConeDuplicateOneVertex", "testConeDuplicateOneVertex", "expectedConeDuplicateOneVertex",
|
||||
[OperatorSpecEditMode("duplicate", {}, "VERT", {23})]),
|
||||
MeshTest("ConeDuplicateFaces", "testConeDuplicateFaces", "expectedConeDuplicateFaces",
|
||||
SpecMeshTest("ConeDuplicateFaces", "testConeDuplicateFaces", "expectedConeDuplicateFaces",
|
||||
[OperatorSpecEditMode("duplicate", {}, "FACE", {6, 9})]),
|
||||
MeshTest("ConeDuplicateEdges", "testConeDuplicateEdges", "expectedConeDuplicateEdges",
|
||||
SpecMeshTest("ConeDuplicateEdges", "testConeDuplicateEdges", "expectedConeDuplicateEdges",
|
||||
[OperatorSpecEditMode("duplicate", {}, "EDGE", {i for i in range(64)})]),
|
||||
|
||||
# edge collapse
|
||||
MeshTest("CylinderEdgeCollapse", "testCylinderEdgeCollapse", "expectedCylinderEdgeCollapse",
|
||||
SpecMeshTest("CylinderEdgeCollapse", "testCylinderEdgeCollapse", "expectedCylinderEdgeCollapse",
|
||||
[OperatorSpecEditMode("edge_collapse", {}, "EDGE", {1, 9, 4})]),
|
||||
|
||||
# edge face add
|
||||
MeshTest("CubeEdgeFaceAddFace", "testCubeEdgeFaceAddFace", "expectedCubeEdgeFaceAddFace",
|
||||
SpecMeshTest("CubeEdgeFaceAddFace", "testCubeEdgeFaceAddFace", "expectedCubeEdgeFaceAddFace",
|
||||
[OperatorSpecEditMode("edge_face_add", {}, "VERT", {1, 3, 4, 5, 7})]),
|
||||
MeshTest("CubeEdgeFaceAddEdge", "testCubeEdgeFaceAddEdge", "expectedCubeEdgeFaceAddEdge",
|
||||
SpecMeshTest("CubeEdgeFaceAddEdge", "testCubeEdgeFaceAddEdge", "expectedCubeEdgeFaceAddEdge",
|
||||
[OperatorSpecEditMode("edge_face_add", {}, "VERT", {4, 5})]),
|
||||
|
||||
# edge rotate
|
||||
MeshTest("CubeEdgeRotate", "testCubeEdgeRotate", "expectedCubeEdgeRotate",
|
||||
SpecMeshTest("CubeEdgeRotate", "testCubeEdgeRotate", "expectedCubeEdgeRotate",
|
||||
[OperatorSpecEditMode("edge_rotate", {}, "EDGE", {1})]),
|
||||
|
||||
# edge split
|
||||
MeshTest("CubeEdgeSplit", "testCubeEdgeSplit", "expectedCubeEdgeSplit",
|
||||
SpecMeshTest("CubeEdgeSplit", "testCubeEdgeSplit", "expectedCubeEdgeSplit",
|
||||
[OperatorSpecEditMode("edge_split", {}, "EDGE", {2, 5, 8, 11, 14, 17, 20, 23})]),
|
||||
|
||||
# edge ring select - Cannot be tested. Need user input.
|
||||
# MeshTest("CubeEdgeRingSelect", "testCubeEdgeRingSelect", "expectedCubeEdgeRingSelect",
|
||||
# SpecMeshTest("CubeEdgeRingSelect", "testCubeEdgeRingSelect", "expectedCubeEdgeRingSelect",
|
||||
# [OperatorSpecEditMode("edgering_select", {}, "EDGE", {5, 20, 25, 26})]),
|
||||
# MeshTest("EmptyMeshEdgeRingSelect", "testGridEdgeRingSelect", "expectedGridEdgeRingSelect",
|
||||
# SpecMeshTest("EmptyMeshEdgeRingSelect", "testGridEdgeRingSelect", "expectedGridEdgeRingSelect",
|
||||
# [OperatorSpecEditMode("edgering_select", {}, "VERT", {65, 66, 67})]),
|
||||
# MeshTest("EmptyMeshEdgeRingSelect", "testEmptyMeshdgeRingSelect", "expectedEmptyMeshEdgeRingSelect",
|
||||
# SpecMeshTest("EmptyMeshEdgeRingSelect", "testEmptyMeshdgeRingSelect", "expectedEmptyMeshEdgeRingSelect",
|
||||
# [OperatorSpecEditMode("edgering_select", {}, "VERT", {})]),
|
||||
|
||||
# edges select sharp
|
||||
MeshTest("CubeEdgesSelectSharp", "testCubeEdgeSelectSharp", "expectedCubeEdgeSelectSharp",
|
||||
SpecMeshTest("CubeEdgesSelectSharp", "testCubeEdgeSelectSharp", "expectedCubeEdgeSelectSharp",
|
||||
[OperatorSpecEditMode("edges_select_sharp", {}, "EDGE", {20})]),
|
||||
MeshTest("SphereEdgesSelectSharp", "testSphereEdgesSelectSharp", "expectedSphereEdgeSelectSharp",
|
||||
SpecMeshTest("SphereEdgesSelectSharp", "testSphereEdgesSelectSharp", "expectedSphereEdgeSelectSharp",
|
||||
[OperatorSpecEditMode("edges_select_sharp", {"sharpness": 0.25}, "EDGE", {288})]),
|
||||
MeshTest("HoledSphereEdgesSelectSharp", "testHoledSphereEdgesSelectSharp", "expectedHoledSphereEdgeSelectSharp",
|
||||
SpecMeshTest("HoledSphereEdgesSelectSharp", "testHoledSphereEdgesSelectSharp", "expectedHoledSphereEdgeSelectSharp",
|
||||
[OperatorSpecEditMode("edges_select_sharp", {"sharpness": 0.18}, "VERT", {})]),
|
||||
MeshTest("EmptyMeshEdgesSelectSharp", "testEmptyMeshEdgeSelectSharp", "expectedEmptyMeshEdgeSelectSharp",
|
||||
SpecMeshTest("EmptyMeshEdgesSelectSharp", "testEmptyMeshEdgeSelectSharp", "expectedEmptyMeshEdgeSelectSharp",
|
||||
[OperatorSpecEditMode("edges_select_sharp", {}, "VERT", {})]),
|
||||
|
||||
# face make planar
|
||||
MeshTest("MonkeyFaceMakePlanar", "testMonkeyFaceMakePlanar",
|
||||
SpecMeshTest("MonkeyFaceMakePlanar", "testMonkeyFaceMakePlanar",
|
||||
"expectedMonkeyFaceMakePlanar",
|
||||
[OperatorSpecEditMode("face_make_planar", {}, "FACE", {i for i in range(500)})]),
|
||||
|
||||
# face split by edges
|
||||
MeshTest("PlaneFaceSplitByEdges", "testPlaneFaceSplitByEdges",
|
||||
SpecMeshTest("PlaneFaceSplitByEdges", "testPlaneFaceSplitByEdges",
|
||||
"expectedPlaneFaceSplitByEdges",
|
||||
[OperatorSpecEditMode("face_split_by_edges", {}, "VERT", {i for i in range(6)})]),
|
||||
|
||||
# faces select linked flat
|
||||
MeshTest("CubeFacesSelectLinkedFlat", "testCubeFaceSelectLinkedFlat", "expectedCubeFaceSelectLinkedFlat",
|
||||
SpecMeshTest("CubeFacesSelectLinkedFlat", "testCubeFaceSelectLinkedFlat", "expectedCubeFaceSelectLinkedFlat",
|
||||
[OperatorSpecEditMode("faces_select_linked_flat", {}, "FACE", {7})]),
|
||||
MeshTest("PlaneFacesSelectLinkedFlat", "testPlaneFaceSelectLinkedFlat", "expectedPlaneFaceSelectLinkedFlat",
|
||||
SpecMeshTest("PlaneFacesSelectLinkedFlat", "testPlaneFaceSelectLinkedFlat", "expectedPlaneFaceSelectLinkedFlat",
|
||||
[OperatorSpecEditMode("faces_select_linked_flat", {}, "VERT", {1})]),
|
||||
MeshTest("EmptyMeshFacesSelectLinkedFlat", "testEmptyMeshFaceSelectLinkedFlat",
|
||||
SpecMeshTest("EmptyMeshFacesSelectLinkedFlat", "testEmptyMeshFaceSelectLinkedFlat",
|
||||
"expectedEmptyMeshFaceSelectLinkedFlat",
|
||||
[OperatorSpecEditMode("faces_select_linked_flat", {}, "VERT", {})]),
|
||||
|
||||
# fill
|
||||
MeshTest("IcosphereFill", "testIcosphereFill", "expectedIcosphereFill",
|
||||
SpecMeshTest("IcosphereFill", "testIcosphereFill", "expectedIcosphereFill",
|
||||
[OperatorSpecEditMode("fill", {}, "EDGE", {20, 21, 22, 23, 24, 45, 46, 47, 48, 49})]),
|
||||
MeshTest("IcosphereFillUseBeautyFalse",
|
||||
SpecMeshTest("IcosphereFillUseBeautyFalse",
|
||||
"testIcosphereFillUseBeautyFalse", "expectedIcosphereFillUseBeautyFalse",
|
||||
[OperatorSpecEditMode("fill", {"use_beauty": False}, "EDGE",
|
||||
{20, 21, 22, 23, 24, 45, 46, 47, 48, 49})]),
|
||||
|
||||
# fill grid
|
||||
MeshTest("PlaneFillGrid", "testPlaneFillGrid",
|
||||
SpecMeshTest("PlaneFillGrid", "testPlaneFillGrid",
|
||||
"expectedPlaneFillGrid",
|
||||
[OperatorSpecEditMode("fill_grid", {}, "EDGE", {1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 15})]),
|
||||
MeshTest("PlaneFillGridSimpleBlending",
|
||||
SpecMeshTest("PlaneFillGridSimpleBlending",
|
||||
"testPlaneFillGridSimpleBlending",
|
||||
"expectedPlaneFillGridSimpleBlending",
|
||||
[OperatorSpecEditMode("fill_grid", {"use_interp_simple": True}, "EDGE",
|
||||
{1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 15})]),
|
||||
|
||||
# fill holes
|
||||
MeshTest("SphereFillHoles", "testSphereFillHoles", "expectedSphereFillHoles",
|
||||
SpecMeshTest("SphereFillHoles", "testSphereFillHoles", "expectedSphereFillHoles",
|
||||
[OperatorSpecEditMode("fill_holes", {"sides": 9}, "VERT", {i for i in range(481)})]),
|
||||
|
||||
# face shade smooth (not a real test)
|
||||
MeshTest("CubeShadeSmooth", "testCubeShadeSmooth", "expectedCubeShadeSmooth",
|
||||
SpecMeshTest("CubeShadeSmooth", "testCubeShadeSmooth", "expectedCubeShadeSmooth",
|
||||
[OperatorSpecEditMode("faces_shade_smooth", {}, "VERT", {i for i in range(8)})]),
|
||||
|
||||
# faces shade flat (not a real test)
|
||||
MeshTest("CubeShadeFlat", "testCubeShadeFlat", "expectedCubeShadeFlat",
|
||||
SpecMeshTest("CubeShadeFlat", "testCubeShadeFlat", "expectedCubeShadeFlat",
|
||||
[OperatorSpecEditMode("faces_shade_flat", {}, "FACE", {i for i in range(6)})]),
|
||||
|
||||
# inset faces
|
||||
MeshTest("CubeInset",
|
||||
SpecMeshTest("CubeInset",
|
||||
"testCubeInset", "expectedCubeInset", [OperatorSpecEditMode("inset", {"thickness": 0.2}, "VERT",
|
||||
{5, 16, 17, 19, 20, 22, 23, 34, 47, 49, 50,
|
||||
52,
|
||||
59, 61, 62, 65, 83, 91, 95})]),
|
||||
MeshTest("CubeInsetEvenOffsetFalse",
|
||||
SpecMeshTest("CubeInsetEvenOffsetFalse",
|
||||
"testCubeInsetEvenOffsetFalse", "expectedCubeInsetEvenOffsetFalse",
|
||||
[OperatorSpecEditMode("inset", {"thickness": 0.2, "use_even_offset": False}, "VERT",
|
||||
{5, 16, 17, 19, 20, 22, 23, 34, 47, 49, 50, 52, 59, 61, 62, 65, 83, 91, 95})]),
|
||||
MeshTest("CubeInsetDepth",
|
||||
SpecMeshTest("CubeInsetDepth",
|
||||
"testCubeInsetDepth",
|
||||
"expectedCubeInsetDepth", [OperatorSpecEditMode("inset", {"thickness": 0.2, "depth": 0.2}, "VERT",
|
||||
{5, 16, 17, 19, 20, 22, 23, 34, 47, 49, 50, 52, 59, 61,
|
||||
62,
|
||||
65, 83, 91, 95})]),
|
||||
MeshTest("GridInsetRelativeOffset", "testGridInsetRelativeOffset",
|
||||
SpecMeshTest("GridInsetRelativeOffset", "testGridInsetRelativeOffset",
|
||||
"expectedGridInsetRelativeOffset",
|
||||
[OperatorSpecEditMode("inset", {"thickness": 0.4,
|
||||
"use_relative_offset": True}, "FACE",
|
||||
{35, 36, 37, 45, 46, 47, 55, 56, 57})]),
|
||||
|
||||
# loop multi select
|
||||
MeshTest("MokeyLoopMultiSelect", "testMonkeyLoopMultiSelect", "expectedMonkeyLoopMultiSelect",
|
||||
SpecMeshTest("MokeyLoopMultiSelect", "testMonkeyLoopMultiSelect", "expectedMonkeyLoopMultiSelect",
|
||||
[OperatorSpecEditMode("loop_multi_select", {}, "VERT", {355, 359, 73, 301, 302})]),
|
||||
MeshTest("HoledGridLoopMultiSelect", "testGridLoopMultiSelect", "expectedGridLoopMultiSelect",
|
||||
SpecMeshTest("HoledGridLoopMultiSelect", "testGridLoopMultiSelect", "expectedGridLoopMultiSelect",
|
||||
[OperatorSpecEditMode("loop_multi_select", {}, "VERT", {257, 169, 202, 207, 274, 278, 63})]),
|
||||
MeshTest("EmptyMeshLoopMultiSelect", "testEmptyMeshLoopMultiSelect", "expectedEmptyMeshLoopMultiSelect",
|
||||
SpecMeshTest("EmptyMeshLoopMultiSelect", "testEmptyMeshLoopMultiSelect", "expectedEmptyMeshLoopMultiSelect",
|
||||
[OperatorSpecEditMode("loop_multi_select", {}, "VERT", {})]),
|
||||
|
||||
# mark seam
|
||||
MeshTest("CubeMarkSeam", "testCubeMarkSeam", "expectedCubeMarkSeam",
|
||||
SpecMeshTest("CubeMarkSeam", "testCubeMarkSeam", "expectedCubeMarkSeam",
|
||||
[OperatorSpecEditMode("mark_seam", {}, "EDGE", {1})]),
|
||||
|
||||
# select all
|
||||
MeshTest("CircleSelectAll", "testCircleSelectAll", "expectedCircleSelectAll",
|
||||
SpecMeshTest("CircleSelectAll", "testCircleSelectAll", "expectedCircleSelectAll",
|
||||
[OperatorSpecEditMode("select_all", {}, "VERT", {1})]),
|
||||
MeshTest("IsolatedVertsSelectAll", "testIsolatedVertsSelectAll", "expectedIsolatedVertsSelectAll",
|
||||
SpecMeshTest("IsolatedVertsSelectAll", "testIsolatedVertsSelectAll", "expectedIsolatedVertsSelectAll",
|
||||
[OperatorSpecEditMode("select_all", {}, "VERT", {})]),
|
||||
MeshTest("EmptyMeshSelectAll", "testEmptyMeshSelectAll", "expectedEmptyMeshSelectAll",
|
||||
SpecMeshTest("EmptyMeshSelectAll", "testEmptyMeshSelectAll", "expectedEmptyMeshSelectAll",
|
||||
[OperatorSpecEditMode("select_all", {}, "VERT", {})]),
|
||||
|
||||
# select axis - Cannot be tested. Needs active vert selection
|
||||
# MeshTest("MonkeySelectAxisX", "testMonkeySelectAxisX", "expectedMonkeySelectAxisX",
|
||||
# SpecMeshTest("MonkeySelectAxisX", "testMonkeySelectAxisX", "expectedMonkeySelectAxisX",
|
||||
# [OperatorSpecEditMode("select_axis", {"axis": "X"}, "VERT", {13})]),
|
||||
# MeshTest("MonkeySelectAxisY", "testMonkeySelectAxisY", "expectedMonkeySelectAxisY",
|
||||
# SpecMeshTest("MonkeySelectAxisY", "testMonkeySelectAxisY", "expectedMonkeySelectAxisY",
|
||||
# [OperatorSpecEditMode("select_axis", {"axis": "Y", "sign": "NEG"}, "FACE", {317})]),
|
||||
# MeshTest("MonkeySelectAxisXYZ", "testMonkeySelectAxisXYZ", "expectedMonkeySelectAxisXYZ",
|
||||
# SpecMeshTest("MonkeySelectAxisXYZ", "testMonkeySelectAxisXYZ", "expectedMonkeySelectAxisXYZ",
|
||||
# [OperatorSpecEditMode("select_axis", {"axis": "X", "sign": "NEG"}, "FACE", {317}),
|
||||
# OperatorSpecEditMode("select_axis", {"axis": "Y", "sign": "POS"}, "FACE", {}),
|
||||
# OperatorSpecEditMode("select_axis", {"axis": "Z", "sign": "NEG"}, "FACE", {})]),
|
||||
|
||||
# select faces by sides
|
||||
MeshTest("CubeSelectFacesBySide", "testCubeSelectFacesBySide", "expectedCubeSelectFacesBySide",
|
||||
SpecMeshTest("CubeSelectFacesBySide", "testCubeSelectFacesBySide", "expectedCubeSelectFacesBySide",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {"number": 4}, "FACE", {})]),
|
||||
MeshTest("CubeSelectFacesBySideGreater", "testCubeSelectFacesBySideGreater", "expectedCubeSelectFacesBySideGreater",
|
||||
SpecMeshTest("CubeSelectFacesBySideGreater", "testCubeSelectFacesBySideGreater", "expectedCubeSelectFacesBySideGreater",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {"number": 4, "type": "GREATER", "extend": True}, "FACE", {})]),
|
||||
MeshTest("CubeSelectFacesBySideLess", "testCubeSelectFacesBySideLess", "expectedCubeSelectFacesBySideLess",
|
||||
SpecMeshTest("CubeSelectFacesBySideLess", "testCubeSelectFacesBySideLess", "expectedCubeSelectFacesBySideLess",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {"number": 4, "type": "GREATER", "extend": True}, "FACE", {})]),
|
||||
|
||||
# select interior faces
|
||||
MeshTest("CubeSelectInteriorFaces", "testCubeSelectInteriorFaces", "expectedCubeSelectInteriorFaces",
|
||||
SpecMeshTest("CubeSelectInteriorFaces", "testCubeSelectInteriorFaces", "expectedCubeSelectInteriorFaces",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {"number": 4}, "FACE", {})]),
|
||||
MeshTest("HoledCubeSelectInteriorFaces", "testHoledCubeSelectInteriorFaces", "expectedHoledCubeSelectInteriorFaces",
|
||||
SpecMeshTest("HoledCubeSelectInteriorFaces", "testHoledCubeSelectInteriorFaces", "expectedHoledCubeSelectInteriorFaces",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {"number": 4}, "FACE", {})]),
|
||||
MeshTest("EmptyMeshSelectInteriorFaces", "testEmptyMeshSelectInteriorFaces", "expectedEmptyMeshSelectInteriorFaces",
|
||||
SpecMeshTest("EmptyMeshSelectInteriorFaces", "testEmptyMeshSelectInteriorFaces", "expectedEmptyMeshSelectInteriorFaces",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {"number": 4}, "FACE", {})]),
|
||||
|
||||
# select less
|
||||
MeshTest("MonkeySelectLess", "testMonkeySelectLess", "expectedMonkeySelectLess",
|
||||
SpecMeshTest("MonkeySelectLess", "testMonkeySelectLess", "expectedMonkeySelectLess",
|
||||
[OperatorSpecEditMode("select_less", {}, "VERT", {2, 8, 24, 34, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 68,
|
||||
69, 70, 71, 74, 75, 78, 80, 81, 82, 83, 90, 91, 93, 95, 97, 99,
|
||||
101, 109, 111, 115, 117, 119, 121, 123, 125, 127, 129, 130, 131,
|
||||
@@ -295,37 +295,37 @@ def main():
|
||||
462, 463, 464, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481,
|
||||
482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 495,
|
||||
496, 497, 498, 499, 502, 505})]),
|
||||
MeshTest("HoledCubeSelectLess", "testHoledCubeSelectLess", "expectedHoledCubeSelectLess",
|
||||
SpecMeshTest("HoledCubeSelectLess", "testHoledCubeSelectLess", "expectedHoledCubeSelectLess",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {}, "FACE", {})]),
|
||||
MeshTest("EmptyMeshSelectLess", "testEmptyMeshSelectLess", "expectedEmptyMeshSelectLess",
|
||||
SpecMeshTest("EmptyMeshSelectLess", "testEmptyMeshSelectLess", "expectedEmptyMeshSelectLess",
|
||||
[OperatorSpecEditMode("select_face_by_sides", {}, "VERT", {})]),
|
||||
|
||||
# select linked
|
||||
MeshTest("PlanesSelectLinked", "testPlanesSelectLinked", "expectedPlanesSelectedLinked",
|
||||
SpecMeshTest("PlanesSelectLinked", "testPlanesSelectLinked", "expectedPlanesSelectedLinked",
|
||||
[OperatorSpecEditMode("select_linked", {}, "VERT", {7})]),
|
||||
MeshTest("CubesSelectLinked", "testCubesSelectLinked", "expectedCubesSelectLinked",
|
||||
SpecMeshTest("CubesSelectLinked", "testCubesSelectLinked", "expectedCubesSelectLinked",
|
||||
[OperatorSpecEditMode("select_linked", {}, "VERT", {11})]),
|
||||
MeshTest("EmptyMeshSelectLinked", "testEmptyMeshSelectLinked", "expectedEmptyMeshSelectLinked",
|
||||
SpecMeshTest("EmptyMeshSelectLinked", "testEmptyMeshSelectLinked", "expectedEmptyMeshSelectLinked",
|
||||
[OperatorSpecEditMode("select_linked", {}, "VERT", {})]),
|
||||
|
||||
# select nth (checkered deselect)
|
||||
MeshTest("CircleSelect2nd", "testCircleSelect2nd", "expectedCircleSelect2nd",
|
||||
SpecMeshTest("CircleSelect2nd", "testCircleSelect2nd", "expectedCircleSelect2nd",
|
||||
[OperatorSpecEditMode("select_nth", {}, "VERT", {i for i in range(32)})]),
|
||||
|
||||
# unsubdivide
|
||||
# normal case
|
||||
MeshTest("CubeFaceUnsubdivide", "testCubeUnsubdivide", "expectedCubeUnsubdivide",
|
||||
SpecMeshTest("CubeFaceUnsubdivide", "testCubeUnsubdivide", "expectedCubeUnsubdivide",
|
||||
[OperatorSpecEditMode("unsubdivide", {}, "FACE", {i for i in range(6)})]),
|
||||
|
||||
# T87259 - test cases
|
||||
MeshTest("CubeEdgeUnsubdivide", "testCubeEdgeUnsubdivide", "expectedCubeEdgeUnsubdivide",
|
||||
SpecMeshTest("CubeEdgeUnsubdivide", "testCubeEdgeUnsubdivide", "expectedCubeEdgeUnsubdivide",
|
||||
[OperatorSpecEditMode("unsubdivide", {}, "EDGE", {i for i in range(6)})]),
|
||||
MeshTest("UVSphereUnsubdivide", "testUVSphereUnsubdivide", "expectedUVSphereUnsubdivide",
|
||||
[OperatorSpecEditMode("unsubdivide", {'iterations': 9}, "FACE", {i for i in range(512)})]),
|
||||
SpecMeshTest("UVSphereUnsubdivide", "testUVSphereUnsubdivide", "expectedUVSphereUnsubdivide",
|
||||
[OperatorSpecEditMode("unsubdivide", {'iterations': 9}, "FACE", {i for i in range(512)})]),
|
||||
|
||||
# vert connect path
|
||||
# Tip: It works only if there is an already existing face or more than 2 vertices.
|
||||
MeshTest("CubeVertConnectPath", "testCubeVertConnectPath", "expectedCubeVertConnectPath",
|
||||
SpecMeshTest("CubeVertConnectPath", "testCubeVertConnectPath", "expectedCubeVertConnectPath",
|
||||
[OperatorSpecEditMode("vert_connect_path", {}, "VERT", {0, 5})]),
|
||||
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user