PROJECT(k3d-tests)

MACRO(K3D_ADD_TEST TEST_NAME)
	
	SET(REQUIREMENTS_MET 1)
	SET(USER_INTERFACE --ui=${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/uiplugins/k3d-nui.module)
	SET(WILL_FAIL 0)

	SET(REQUIRES_KEYWORD 0)
	SET(TUTORIAL_KEYWORD 0)

	FOREACH(ARGUMENT ${ARGN})
		SET(KEYWORD 0)

		IF(ARGUMENT STREQUAL "NGUI")
			IF(NOT K3D_BUILD_NGUI_MODULE)
#				MESSAGE(STATUS "Test \"${TEST_NAME}\" skipped by configuration: K3D_BUILD_NGUI_MODULE")
				SET(REQUIREMENTS_MET 0)
			ENDIF(NOT K3D_BUILD_NGUI_MODULE)
			SET(USER_INTERFACE --ui=${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/uiplugins/k3d-ngui.module --batch --no-custom-layouts --no-splash)
			SET(KEYWORD 1)
		ENDIF(ARGUMENT STREQUAL "NGUI")

		IF(ARGUMENT STREQUAL "SCRIPT")
			SET(SCRIPT_NAME ${TEST_NAME})
			SET(SCRIPT "--script=${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}")
			SET(KEYWORD 1)
		ENDIF(ARGUMENT STREQUAL "SCRIPT")

		IF(ARGUMENT STREQUAL "K3DSCRIPT")
			IF(NOT K3D_BUILD_K3DSCRIPT_MODULE)
#				MESSAGE(STATUS "Test \"${TEST_NAME}\" skipped by configuration: K3D_BUILD_K3DSCRIPT_MODULE")
				SET(REQUIREMENTS_MET 0)
			ENDIF(NOT K3D_BUILD_K3DSCRIPT_MODULE)
			SET(SCRIPT_NAME ${TEST_NAME})
			SET(SCRIPT "--script=${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}")
			SET(KEYWORD 1)
		ENDIF(ARGUMENT STREQUAL "K3DSCRIPT")

		IF(ARGUMENT STREQUAL "PYTHON")
			IF(NOT K3D_BUILD_PYTHON_MODULE)
#				MESSAGE(STATUS "Test \"${TEST_NAME}\" skipped by configuration: K3D_BUILD_PYTHON_MODULE")
				SET(REQUIREMENTS_MET 0)
			ENDIF(NOT K3D_BUILD_PYTHON_MODULE)
			SET(SCRIPT_NAME ${TEST_NAME})
			SET(SCRIPT "--script=${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}")
			SET(PYTHONPATH --setenv "PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR}")
			SET(KEYWORD 1)
		ENDIF(ARGUMENT STREQUAL "PYTHON")

		IF(ARGUMENT STREQUAL "XFAIL")
			SET(WILL_FAIL 1)
			SET(KEYWORD 1)
		ENDIF(ARGUMENT STREQUAL "XFAIL")

		IF(ARGUMENT STREQUAL "REQUIRES")
			SET(REQUIRES_KEYWORD 1)
			SET(KEYWORD 1)
		ENDIF(ARGUMENT STREQUAL "REQUIRES")

		IF(ARGUMENT STREQUAL "TUTORIAL")
			SET(TUTORIAL_KEYWORD 1)
			SET(KEYWORD 1)
		ENDIF(ARGUMENT STREQUAL "TUTORIAL")
    
		IF(NOT KEYWORD)
			IF(REQUIRES_KEYWORD)
				SET(REQUIRES_KEYWORD 0)
				IF(NOT ${ARGUMENT})
#					MESSAGE(STATUS "Test \"${TEST_NAME}\" skipped by configuration: ${ARGUMENT}")
					SET(REQUIREMENTS_MET 0)
				ENDIF(NOT ${ARGUMENT})
			ENDIF(REQUIRES_KEYWORD)

			IF(TUTORIAL_KEYWORD)
				SET(TUTORIAL_KEYWORD 0)
				SET(SCRIPT "--script=${k3d_SOURCE_DIR}/share/tutorials/${ARGUMENT}")
			ENDIF(TUTORIAL_KEYWORD)
		ENDIF(NOT KEYWORD)
	ENDFOREACH(ARGUMENT)

	IF(REQUIREMENTS_MET)
		ADD_TEST(${TEST_NAME}
			${k3d_BINARY_DIR}/bin/k3d
			--log-level=debug
			--plugins=${k3d_BINARY_DIR}/${K3D_LIBDIR}/k3d/plugins
			--share=${k3d_SOURCE_DIR}/share
			${USER_INTERFACE}
			${SCRIPT}
			${PYTHONPATH}
			--setenv "K3D_TEST_SOURCE_PATH=${CMAKE_CURRENT_SOURCE_DIR}"
			--setenv "K3D_TEST_BINARY_PATH=${CMAKE_CURRENT_BINARY_DIR}"
			--exit
			)

		IF(WILL_FAIL)
			SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES WILL_FAIL TRUE)
		ENDIF(WILL_FAIL)
	ENDIF(REQUIREMENTS_MET)
ENDMACRO(K3D_ADD_TEST)

MACRO(K3D_ADD_CMAKE_TEST TEST_NAME TEST_SCRIPT TEST_WORKING_DIRECTORY)
	ADD_TEST(${TEST_NAME} "${CMAKE_COMMAND}" -E chdir "${TEST_WORKING_DIRECTORY}" "${CMAKE_COMMAND}" -P "${TEST_SCRIPT}")
ENDMACRO(K3D_ADD_CMAKE_TEST)

K3D_ADD_CMAKE_TEST(code.filename.case ${CMAKE_CURRENT_SOURCE_DIR}/code.filename.case.cmake ${CMAKE_SOURCE_DIR})
K3D_ADD_CMAKE_TEST(code.filename.length ${CMAKE_CURRENT_SOURCE_DIR}/code.filename.length.cmake ${CMAKE_SOURCE_DIR})
K3D_ADD_CMAKE_TEST(code.header_guard ${CMAKE_CURRENT_SOURCE_DIR}/code.header_guard.cmake ${CMAKE_SOURCE_DIR})
K3D_ADD_CMAKE_TEST(code.pretty_function ${CMAKE_CURRENT_SOURCE_DIR}/code.pretty_function.cmake ${CMAKE_SOURCE_DIR})
K3D_ADD_CMAKE_TEST(code.printf ${CMAKE_CURRENT_SOURCE_DIR}/code.printf.cmake ${CMAKE_SOURCE_DIR})
K3D_ADD_CMAKE_TEST(code.typed_array.uint_t ${CMAKE_CURRENT_SOURCE_DIR}/code.typed_array.uint_t.cmake ${CMAKE_SOURCE_DIR})

K3D_ADD_TEST(test.startup)

K3D_ADD_TEST(test.script.detect.lang.null SCRIPT XFAIL)
K3D_ADD_TEST(test.script.detect.lang.k3dscript K3DSCRIPT)
K3D_ADD_TEST(test.script.detect.lang.python.py PYTHON)
K3D_ADD_TEST(test.script.failure.lang.k3dscript K3DSCRIPT XFAIL)
K3D_ADD_TEST(test.script.failure.lang.python.py PYTHON XFAIL)
K3D_ADD_TEST(test.script.failure.lang.python.exception.py PYTHON XFAIL)

K3D_ADD_TEST(test.platform.py PYTHON)
K3D_ADD_TEST(test.measurements.py PYTHON)
K3D_ADD_TEST(test.PipelineProfiler.py PYTHON)

K3D_ADD_TEST(property.linking.enumeration.py PYTHON)

K3D_ADD_TEST(document.create.py PYTHON)
K3D_ADD_TEST(document.stress.high_node_count.py PYTHON)
K3D_ADD_TEST(document.stress.all_node_types.py PYTHON)
#K3D_ADD_TEST(document.stress.read_all_properties.py PYTHON)

K3D_ADD_TEST(document.serialization.properties.py PYTHON)

K3D_ADD_TEST(bitmap.source.BitmapSourceScript.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(color.source.ColorSourceScript.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(double.source.DoubleSourceScript.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(int32.source.Int32SourceScript.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.bezier_triangle_patches.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.bicubic.patches.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.bilinear.patches.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.blobby.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.cones.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.cubic.curves.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.cylinders.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.disks.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.hyperboloids.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.linear.curves.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.nurbs.curves.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.nurbs.patches.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.paraboloids.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.point_groups.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.polyhedra.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.simple_polyhedron.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.spheres.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.teapots.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(mesh.source.MeshSourceScript.tori.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(string.source.StringSourceScript.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)
K3D_ADD_TEST(vector3.source.Vector3SourceScript.py PYTHON REQUIRES K3D_BUILD_SCRIPTING_MODULE)

K3D_ADD_TEST(bitmap.source.JPEGBitmapReader.py PYTHON REQUIRES K3D_BUILD_JPEG_IO_MODULE)
K3D_ADD_TEST(bitmap.source.PNGBitmapReader.py PYTHON REQUIRES K3D_BUILD_PNG_IO_MODULE)
K3D_ADD_TEST(bitmap.source.TIFFBitmapReader.py PYTHON REQUIRES K3D_BUILD_TIFF_IO_MODULE)

K3D_ADD_TEST(bitmap.source.BitmapChecker.py PYTHON REQUIRES K3D_BUILD_TIFF_IO_MODULE REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.source.BitmapReader.bmp.py PYTHON REQUIRES K3D_BUILD_IMAGEMAGICK_IO_MODULE REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.source.BitmapReader.jpeg.py PYTHON REQUIRES K3D_BUILD_JPEG_IO_MODULE REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.source.BitmapReader.png.py PYTHON REQUIRES K3D_BUILD_PNG_IO_MODULE REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.source.BitmapReader.sun.py PYTHON REQUIRES K3D_BUILD_IMAGEMAGICK_IO_MODULE REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.source.BitmapReader.tiff.py PYTHON REQUIRES K3D_BUILD_TIFF_IO_MODULE REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.source.BitmapSolid.py PYTHON REQUIRES K3D_BUILD_TIFF_IO_MODULE REQUIRES K3D_BUILD_BITMAP_MODULE)

K3D_ADD_TEST(test.mesh.solid.py PYTHON)
K3D_ADD_TEST(test.mesh.solid.failure.py PYTHON XFAIL)

K3D_ADD_TEST(mesh.serialization.py PYTHON)

K3D_ADD_TEST(mesh.source.3DSMeshReader.py PYTHON REQUIRES K3D_BUILD_3DS_IO_MODULE)
K3D_ADD_TEST(mesh.source.BlobbyEllipsoid.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.source.BlobbySegment.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.source.COLLADAMeshReader.py PYTHON REQUIRES K3D_BUILD_COLLADA_IO_MODULE)
K3D_ADD_TEST(mesh.source.Cone.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)
K3D_ADD_TEST(mesh.source.Cylinder.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)
K3D_ADD_TEST(mesh.source.Disk.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)
K3D_ADD_TEST(mesh.source.GTSMeshReader.cube.py PYTHON REQUIRES K3D_BUILD_GTS_IO_MODULE)
K3D_ADD_TEST(mesh.source.GTSMeshReader.gz.cube.py PYTHON REQUIRES K3D_BUILD_GTS_IO_MODULE)
K3D_ADD_TEST(mesh.source.Hyperboloid.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)
K3D_ADD_TEST(mesh.source.InvertMatrix.py PYTHON REQUIRES K3D_BUILD_MATRIX_MODULE)
K3D_ADD_TEST(mesh.source.KnotCurve.py PYTHON REQUIRES K3D_BUILD_LINEAR_CURVE_MODULE)
K3D_ADD_TEST(mesh.source.LeastSquaresPlot.py PYTHON REQUIRES K3D_BUILD_PLOT_MODULE)
K3D_ADD_TEST(mesh.source.LSystemParser.py PYTHON REQUIRES K3D_BUILD_LSYSTEM_MODULE)
K3D_ADD_TEST(mesh.source.LissajousCurve.py PYTHON REQUIRES K3D_BUILD_LINEAR_CURVE_MODULE)
K3D_ADD_TEST(mesh.source.MD2MeshReader.py PYTHON REQUIRES K3D_BUILD_MD2_IO_MODULE)
K3D_ADD_TEST(mesh.source.Newell.teacup.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.Newell.teapot.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.Newell.teaspoon.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.NurbsCircle.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsCone.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsCurve.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsCylinder.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsDisk.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsGrid.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsHyperboloid.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsParaboloid.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsPolygon.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsSphere.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.NurbsTorus.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.source.OBJMeshReader.nurbs.py PYTHON REQUIRES K3D_BUILD_OBJ_IO_MODULE)
K3D_ADD_TEST(mesh.source.OBJMeshReader.polyhedron.py PYTHON REQUIRES K3D_BUILD_OBJ_IO_MODULE)
K3D_ADD_TEST(mesh.source.PLYMeshReader.py PYTHON REQUIRES K3D_BUILD_PLY_IO_MODULE)
K3D_ADD_TEST(mesh.source.Paraboloid.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)
K3D_ADD_TEST(mesh.source.PolyCone.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolyCube.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolyCushion.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolyCylinder.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolyDisk.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolyGrid.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolyIcosahedron.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolySphere.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.PolyText.py PYTHON REQUIRES K3D_BUILD_FREETYPE2_MODULE)
K3D_ADD_TEST(mesh.source.PolyTorus.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.Polyhedron.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.ScalarExpression.py PYTHON REQUIRES K3D_BUILD_SCALAR_MODULE)
K3D_ADD_TEST(mesh.source.SphereEversion.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.Sphere.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)
K3D_ADD_TEST(mesh.source.SurfacePlot.py PYTHON REQUIRES K3D_BUILD_PLOT_MODULE)
K3D_ADD_TEST(mesh.source.STLMeshReader.py PYTHON REQUIRES K3D_BUILD_STL_IO_MODULE)
K3D_ADD_TEST(mesh.source.SVGMeshReader.py PYTHON REQUIRES K3D_BUILD_SVG_IO_MODULE)
K3D_ADD_TEST(mesh.source.Teapot.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)
K3D_ADD_TEST(mesh.source.Torus.py PYTHON REQUIRES K3D_BUILD_QUADRICS_MODULE)

K3D_ADD_TEST(mesh.diff.py PYTHON)
K3D_ADD_TEST(mesh.diff.MeshDiff.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.diff.MeshDiff.BevelPoints.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.diff.MeshDiff.ConnectVertices.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.diff.MeshDiff.Dissolve.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.diff.MeshDiff.ExtrudeFaces.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.diff.MeshDiff.SubdivideEdges.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)

K3D_ADD_TEST(mesh.conversion.point_group.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.conversion.curve.linear.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.conversion.curve.cubic.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.conversion.curve.nurbs.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.conversion.patch.bicubic.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.conversion.patch.bilinear.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.conversion.patch.nurbs.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)
K3D_ADD_TEST(mesh.conversion.polyhedron.py PYTHON REQUIRES K3D_BUILD_TEST_MODULE)

K3D_ADD_TEST(mesh.selection.null.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.selection.none.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.selection.all.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.selection.points.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)

K3D_ADD_TEST(mesh.metrics.GTSMeshArea.PolyCube.py PYTHON REQUIRES K3D_BUILD_GTS_MODULE REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.metrics.GTSMeshArea.self_intersection.py PYTHON REQUIRES K3D_BUILD_GTS_MODULE REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.metrics.GTSMeshVolume.PolyCube.py PYTHON REQUIRES K3D_BUILD_GTS_MODULE REQUIRES K3D_BUILD_PRIMITIVES_MODULE)

K3D_ADD_TEST(mesh.modifier.BendPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.modifier.BevelFaces.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.modifier.BevelPoints.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.BlobbyAdd.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.BlobbyDivide.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.BlobbyMaximum.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.BlobbyMinimum.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.BlobbyMultiply.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.BlobbyNegate.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.BlobbySubtract.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.BulgePoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.CalculateNormals.py PYTHON REQUIRES K3D_BUILD_MESH_ATTRIBUTES_MODULE)
K3D_ADD_TEST(mesh.modifier.CalculateNormals.2.py PYTHON REQUIRES K3D_BUILD_MESH_ATTRIBUTES_MODULE)
K3D_ADD_TEST(mesh.modifier.CatmullClark.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.CatmullClark.complex.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.CenterPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.CGALBoolean.benchmark.py PYTHON REQUIRES K3D_BUILD_BOOLEANS_MODULE)
K3D_ADD_TEST(mesh.modifier.CGALBoolean.cubes.py PYTHON REQUIRES K3D_BUILD_BOOLEANS_MODULE)
K3D_ADD_TEST(mesh.modifier.CGALBoolean.cylinders.py PYTHON REQUIRES K3D_BUILD_BOOLEANS_MODULE)
#K3D_ADD_TEST(mesh.modifier.CreateTrimCurve.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.CylindricalWavePoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.Delete.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.Delete.complex.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.EdgesToBlobby.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.EulerKillEdgeAndVertex.py PYTHON REQUIRES K3D_BUILD_EULER_OPERATIONS_MODULE)
K3D_ADD_TEST(mesh.modifier.EulerKillEdgeMakeLoop.py PYTHON REQUIRES K3D_BUILD_EULER_OPERATIONS_MODULE)
K3D_ADD_TEST(mesh.modifier.ExtrudeFaces.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.LinearPointNoise.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.LinearWavePoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.MakePointGroup.py PYTHON REQUIRES K3D_BUILD_POINT_GROUP_MODULE)
K3D_ADD_TEST(mesh.modifier.MakeBilinearPatches.py PYTHON REQUIRES K3D_BUILD_BILINEAR_PATCH_MODULE)
K3D_ADD_TEST(mesh.modifier.MergeCollinearEdges.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.MergeCoplanarFaces.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.MergeMesh.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.MergeMesh.generic.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.MeshArray1D.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.MeshArray2D.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.MeshArray3D.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.MorphPoints.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsCloseCurve1.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsCloseCurve2.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsConnectCurves.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsCreateCap.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsCurveInsertKnot.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsCurveTraversal1.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsCurveTraversal2.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsDegreeElevateCurve.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsEditKnotVector1.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsExtrudeCurve.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsExtrudePatch.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsPatchDegreeElevation.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsPatchInsertKnot.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsPolygonizeCurve.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsPolygonizePatch.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsRevolveCurve.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsRuledSurface.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsSetWeight1.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsSetWeight2.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsSkinnedSurface.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsSplitCurve.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsSplitCurve2.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsSplitPatch.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.NurbsSplitPatch2.py PYTHON REQUIRES K3D_BUILD_NURBS_MODULE)
K3D_ADD_TEST(mesh.modifier.PGPRemesh.py PYTHON REQUIRES K3D_BUILD_PGP_REMESH_MODULE)
K3D_ADD_TEST(mesh.modifier.PGPRemesh.high.py PYTHON REQUIRES K3D_BUILD_PGP_REMESH_MODULE)
K3D_ADD_TEST(mesh.modifier.PGPRemesh.ply.bunny.py PYTHON REQUIRES K3D_BUILD_PGP_REMESH_MODULE)
K3D_ADD_TEST(mesh.modifier.PGPRemesh.ply.torus.py PYTHON REQUIRES K3D_BUILD_PGP_REMESH_MODULE)
K3D_ADD_TEST(mesh.modifier.PGPRemesh.triang.py PYTHON REQUIRES K3D_BUILD_PGP_REMESH_MODULE)
K3D_ADD_TEST(mesh.modifier.PGPRemesh.bun_zipper_res4.py PYTHON REQUIRES K3D_BUILD_PGP_REMESH_MODULE)
K3D_ADD_TEST(mesh.modifier.PointsToBlobby.py PYTHON REQUIRES K3D_BUILD_BLOBBY_MODULE)
K3D_ADD_TEST(mesh.modifier.QuadrilateralRemeshing.py PYTHON REQUIRES K3D_BUILD_QUADRILATERAL_REMESHING_MODULE)
K3D_ADD_TEST(mesh.modifier.RotatePoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.ScalePoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.ShearPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.SmoothPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.SphereizePoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.SubdivideEdges.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.SubdivideEdges.benchmark.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.SubdivideFaces.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.TaperPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.TransformPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.TranslatePoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)
K3D_ADD_TEST(mesh.modifier.TriangulateFaces.PolyCube.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.TriangulateFaces.PolyGrid.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.TriangulateFaces.PolyGrid.selection.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.TriangulateFaces.face_varying.py PYTHON REQUIRES K3D_BUILD_DEVELOPMENT_MODULE)
K3D_ADD_TEST(mesh.modifier.TriangulateFaces.self_intersection.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE)
K3D_ADD_TEST(mesh.modifier.TwistPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)

K3D_ADD_TEST(notifier.InotifyFileChangeNotifier.py PYTHON REQUIRES K3D_BUILD_INOTIFY_MODULE)

K3D_ADD_TEST(parallel.grain_size.ScalePoints.py PYTHON REQUIRES K3D_BUILD_PARALLEL)
K3D_ADD_TEST(parallel.thread_count.ScalePoints.py PYTHON REQUIRES K3D_BUILD_PARALLEL)

K3D_ADD_TEST(mesh.sink.K3DMeshWriter.py PYTHON REQUIRES K3D_BUILD_K3D_IO_MODULE)
K3D_ADD_TEST(mesh.sink.OBJMeshWriter.py PYTHON REQUIRES K3D_BUILD_OBJ_IO_MODULE)
K3D_ADD_TEST(mesh.sink.PLYMeshWriter.py PYTHON REQUIRES K3D_BUILD_PLY_IO_MODULE)
K3D_ADD_TEST(mesh.sink.STLMeshWriter.py PYTHON REQUIRES K3D_BUILD_STL_IO_MODULE)

K3D_ADD_TEST(offscreen.GLXCameraToBitmap.py PYTHON REQUIRES K3D_BUILD_GLX_MODULE)
K3D_ADD_TEST(offscreen.OpenGLFramebufferCameraToBitmap.py PYTHON REQUIRES K3D_BUILD_OPENGL_FRAMEBUFFER_MODULE)
K3D_ADD_TEST(offscreen.VirtualCameraToBitmap.py PYTHON REQUIRES K3D_BUILD_VIRTUAL_OFFSCREEN_MODULE)
K3D_ADD_TEST(offscreen.WGLCameraToBitmap.py PYTHON REQUIRES K3D_BUILD_WGL_MODULE)

K3D_ADD_TEST(python.api.module.py PYTHON)
K3D_ADD_TEST(python.api.angle_axis.py PYTHON)
K3D_ADD_TEST(python.api.get_dependency.py PYTHON)
K3D_ADD_TEST(python.api.named_arrays.py PYTHON)
K3D_ADD_TEST(python.api.node.selection.py PYTHON)
K3D_ADD_TEST(python.api.property.value.py PYTHON)
K3D_ADD_TEST(python.api.renderman.attributes.py PYTHON)
K3D_ADD_TEST(python.api.renderman.options.py PYTHON)
K3D_ADD_TEST(python.api.user_properties.py PYTHON)

K3D_ADD_TEST(ngui.startup K3DSCRIPT NGUI)
K3D_ADD_TEST(ngui.menu.activate.001 K3DSCRIPT NGUI)
K3D_ADD_TEST(ngui.menu.activate.002 K3DSCRIPT NGUI)
K3D_ADD_TEST(ngui.add_viewport K3DSCRIPT NGUI)
K3D_ADD_TEST(ngui.assign_hotkeys.py PYTHON NGUI)

K3D_ADD_TEST(ngui.bitmap.modifier.BitmapAdd.py PYTHON NGUI)
K3D_ADD_TEST(ngui.bitmap.modifier.BitmapColorMonochrome.py PYTHON NGUI)
K3D_ADD_TEST(ngui.bitmap.modifier.BitmapGamma.py PYTHON NGUI)
K3D_ADD_TEST(ngui.bitmap.modifier.BitmapMatteColorDiff.py PYTHON NGUI)
K3D_ADD_TEST(ngui.bitmap.modifier.BitmapMultiply.py PYTHON NGUI)
K3D_ADD_TEST(ngui.bitmap.modifier.BitmapSubtract.py PYTHON NGUI)
K3D_ADD_TEST(ngui.bitmap.modifier.BitmapThreshold.py PYTHON NGUI)

K3D_ADD_TEST(ngui.MaterialManager.init.py PYTHON NGUI)

K3D_ADD_TEST(ngui.mesh.modifier.BevelPoints.undo.py PYTHON NGUI)
K3D_ADD_TEST(ngui.primitives.transform.py PYTHON NGUI)
K3D_ADD_TEST(ngui.shaders.undo_selection.py PYTHON NGUI)
K3D_ADD_TEST(ngui.tools.unparent K3DSCRIPT NGUI)
K3D_ADD_TEST(ngui.tools.undo_delete_rotate.py PYTHON NGUI)

K3D_ADD_TEST(ngui.tutorials.getting_started NGUI TUTORIAL getting_started.k3dscript)
K3D_ADD_TEST(ngui.tutorials.panel_basics NGUI TUTORIAL panel_basics.k3dscript)
K3D_ADD_TEST(ngui.tutorials.navigation NGUI TUTORIAL navigation.k3dscript)
K3D_ADD_TEST(ngui.tutorials.basic_selection NGUI TUTORIAL basic_selection.k3dscript)
K3D_ADD_TEST(ngui.tutorials.mug NGUI TUTORIAL mug.k3dscript)
K3D_ADD_TEST(ngui.tutorials.nurbs_skinned_surface NGUI TUTORIAL nurbs_skinned_surface.k3dscript)

K3D_ADD_TEST(ngui.performance.sds.polycube.py PYTHON NGUI)
K3D_ADD_TEST(ngui.performance.sds.init.legacy.py PYTHON NGUI)
K3D_ADD_TEST(ngui.performance.sds.init.py PYTHON NGUI)

K3D_ADD_TEST(bitmap.modifier.CUDABitmapAdd.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapMultiply.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapSubtract.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapColorMonochrome.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapGamma.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapInvert.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapMatteColorDiff.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapMatteInvert.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapThreshold.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(bitmap.modifier.CUDABitmapAdd.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapMultiply.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapSubtract.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapColorMonochrome.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapGamma.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapInvert.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapMatteColorDiff.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapMatteInvert.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(bitmap.modifier.CUDABitmapThreshold.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(bitmap.modifier.BitmapAdd.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapMultiply.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapSubtract.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapColorMonochrome.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapGamma.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapInvert.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapMatteColorDiff.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapMatteInvert.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)
K3D_ADD_TEST(bitmap.modifier.BitmapThreshold.benchmark.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE)

K3D_ADD_TEST(mesh.modifier.CUDATransformPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.modifier.CUDATransformPoints.benchmark.py PYTHON REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.modifier.CUDATransformPointsAsynchronous.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.modifier.CUDATransformPointsAsynchronous.benchmark.py PYTHON REQUIRES K3D_BUILD_CUDA_MODULE)


K3D_ADD_TEST(cuda.mesh.Conversion.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(mesh.modifier.CUDASubdivideEdges.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.modifier.CUDASubdivideEdgesSimple.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.modifier.CUDASubdivideEdges.benchmark.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(mesh.modifier.TransformPoints.benchmark.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE)

K3D_ADD_TEST(bitmap.modifier.BenchmarkComparison.py PYTHON REQUIRES K3D_BUILD_BITMAP_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.modifier.BenchmarkComparison.py PYTHON REQUIRES K3D_BUILD_MESH_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(benchmark.CompareResults.py PYTHON REQUIRED K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(mesh.source.CUDAPolyGrid.py PYTHON REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.source.CUDAPolyGridAndTransformPoints.py PYTHON REQUIRES K3D_BUILD_DEFORMATION_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(mesh.source.CUDAPolyGrid.benchmark.py PYTHON REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.source.PolyGrid.benchmark.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE)
K3D_ADD_TEST(mesh.source.BenchmarkComparison.py PYTHON REQUIRES K3D_BUILD_PRIMITIVES_MODULE REQUIRES K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(mesh.source.CUDAPolyGridAndTransformPoints.benchmark.py PYTHON REQUIRES K3D_BUILD_CUDA_MODULE)

K3D_ADD_TEST(mesh.source.CUDA.Breakdown.py PYTHON REQUIRES K3D_BUILD_CUDA_MODULE)
K3D_ADD_TEST(mesh.modifier.CUDA.Breakdown.py PYTHON REQUIRES K3D_BUILD_CUDA_MODULE)
