${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON_SHARED})
SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS})
+# For salome test
+# ===============
+SET(GEOM_TEST_DIR ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test)
+IF(SALOME_BUILD_TESTS)
+ INSTALL(FILES CTestTestfileInstall.cmake
+ DESTINATION ${GEOM_TEST_DIR}
+ RENAME CTestTestfile.cmake)
+ENDIF()
+
# Sources
# ========
ADD_SUBDIRECTORY(idl)
ADD_SUBDIRECTORY(resources)
ADD_SUBDIRECTORY(bin)
ADD_SUBDIRECTORY(src)
-IF(SALOME_BUILD_DOC)
- ADD_SUBDIRECTORY(doc)
+ADD_SUBDIRECTORY(doc)
+IF(SALOME_BUILD_TESTS)
+ ADD_SUBDIRECTORY(test)
ENDIF()
# Header configuration
# Install the export set for use with the install-tree
INSTALL(EXPORT ${PROJECT_NAME}TargetGroup DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}"
FILE ${PROJECT_NAME}Targets.cmake)
-
-# Application tests
-INSTALL(FILES CTestTestfileInstall.cmake
- DESTINATION ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test
- RENAME CTestTestfile.cmake)
#
SET(PYTHON_TEST_DRIVER "$ENV{KERNEL_ROOT_DIR}/bin/salome/appliskel/python_test_driver.py")
-
SET(COMPONENT_NAME GEOM)
SET(TIMEOUT 300)
-SUBDIRS(examples)
-SUBDIRS(xao)
+SUBDIRS(examples xao other)
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-ADD_SUBDIRECTORY(tui)
-ADD_SUBDIRECTORY(gui)
-ADD_SUBDIRECTORY(examples)
\ No newline at end of file
+ADD_SUBDIRECTORY(examples)
+IF(SALOME_BUILD_DOC)
+ ADD_SUBDIRECTORY(tui)
+ ADD_SUBDIRECTORY(gui)
+ENDIF()
--- /dev/null
+This folder contains example Python scripts which are used in the documentation of Geometry module,
+i.e. those mentioned in *.doc files in {root_src}/doc/salome/gui/GEOM/input folder.
+
+These tests are exported into the ${GEOM_ROOT_DIR}/share/doc/salome/examples/GEOM folder and can be
+executed with the `salome test` command, as a part of whole testing procedure.
+
+Other Python scripts aimed for testing purposes must be put into the ${root_src}/test folder!
INCLUDE(tests.set)
-SET(TEST_REINIT_SALOME "False")
-SALOME_CONFIGURE_FILE(tests.py.in tests.py)
+SET(TEST_INSTALL_DIRECTORY ${GEOM_TEST_DIR}/examples)
+SET(EXAMPLES_INSTALL_DIRECTORY ${SALOME_INSTALL_DOC}/examples/GEOM)
-SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
+IF(SALOME_BUILD_TESTS)
+
+ # Install 'salome test' staff
+ # ---------------------------
+
+ INSTALL(FILES CTestTestfileInstall.cmake
+ DESTINATION ${TEST_INSTALL_DIRECTORY}
+ RENAME CTestTestfile.cmake)
+ INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY})
+
+ # Add tests for 'make test'
+ # -------------------------
+
+ SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
-IF(GEOM_JOIN_TESTS)
- ADD_TEST(NAME GEOM_examples COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/doc/salome/examples/testme.py tests.py)
-ELSE(GEOM_JOIN_TESTS)
FOREACH(test ${GOOD_TESTS})
GET_FILENAME_COMPONENT(testname ${test} NAME_WE)
ADD_TEST(NAME ${testname}
- COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/doc/salome/examples/testme.py ${CMAKE_CURRENT_SOURCE_DIR}/${test})
- SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}")
+ COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/test/test_helper.py ${CMAKE_CURRENT_SOURCE_DIR}/${test})
+ SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}" LABELS "examples")
ENDFOREACH()
-ENDIF(GEOM_JOIN_TESTS)
-
-# install Python scripts
-SALOME_INSTALL_SCRIPTS("${EXAMPLES_TESTS}" ${SALOME_INSTALL_DOC}/examples/GEOM)
-# Application tests
+ENDIF()
-SET(TEST_INSTALL_DIRECTORY ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test/examples)
-INSTALL(FILES ${GOOD_TESTS} DESTINATION ${TEST_INSTALL_DIRECTORY})
+# Install example scripts and data
+# --------------------------------
-INSTALL(FILES CTestTestfileInstall.cmake
- DESTINATION ${TEST_INSTALL_DIRECTORY}
- RENAME CTestTestfile.cmake)
-INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY})
+IF(SALOME_BUILD_TESTS OR SALOME_BUILD_DOC)
+ INSTALL(FILES ${GOOD_TESTS} ${BAD_TESTS} DESTINATION ${EXAMPLES_INSTALL_DIRECTORY})
+ENDIF()
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+SET(SCRIPTS_DIR "../../../../share/doc/salome/examples/GEOM")
+
INCLUDE(tests.set)
FOREACH(tfile ${GOOD_TESTS})
GET_FILENAME_COMPONENT(BASE_NAME ${tfile} NAME_WE)
- SET(TEST_NAME GEOM_${BASE_NAME})
- ADD_TEST(${TEST_NAME} python ${PYTHON_TEST_DRIVER} ${TIMEOUT} ${tfile})
- SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}")
+ SET(TEST_NAME ${COMPONENT_NAME}_${BASE_NAME})
+ ADD_TEST(${TEST_NAME} python ${PYTHON_TEST_DRIVER} ${TIMEOUT} ${SCRIPTS_DIR}/${tfile})
+ SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME};${COMPONENT_NAME}_examples")
ENDFOREACH()
+++ /dev/null
-#!/usr/bin/env python3
-# Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-
-import unittest, sys, os
-
-class SalomeSession(object):
- def __init__(self, script):
- import runSalomeOld as runSalome
- run_script = "runSalomeOld.py"
- if sys.platform == 'win32':
- module_dir = os.getenv("KERNEL_ROOT_DIR")
- if module_dir: run_script = os.path.join(module_dir, "bin", "salome", run_script)
- pass
- sys.argv = [run_script]
- sys.argv += ["--terminal"]
- sys.argv += ["--modules=GEOM"]
- sys.argv += ["%s" % script]
- if sys.platform == 'win32':
- main_module_path = sys.modules['__main__'].__file__
- sys.modules['__main__'].__file__ = ''
- clt, d = runSalome.main()
- if sys.platform == 'win32':
- sys.modules['__main__'].__file__ = main_module_path
- return
-
- def __del__(self):
- port = os.getenv('NSPORT')
- import killSalomeWithPort
- killSalomeWithPort.killMyPort(port)
- return
- pass
-
-class MyTest(unittest.TestCase):
- def testFunction(self):
- SalomeSession(sys.argv[1])
- pass
-
-unittest.main(argv=sys.argv[:1])
+++ /dev/null
-# Copyright (C) 2018-2021 CEA/DEN, EDF R&D, OPEN CASCADE
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-DIR='@CMAKE_CURRENT_SOURCE_DIR@'
-TESTS='@GOOD_TESTS@'
-REINIT_SALOME=@TEST_REINIT_SALOME@
-
-import os
-import unittest
-import salome
-
-class MyTest(unittest.TestCase):
- def setUp(self):
- if REINIT_SALOME:
- salome.salome_init()
- def tearDown(self):
- if REINIT_SALOME:
- salome.salome_close()
- pass
-
-if __name__ == "__main__":
- tests = TESTS.split(';')
- for test in tests:
- file_name = os.path.basename(test)
- if os.path.isabs(test):
- file_path = file_name
- else:
- file_path = os.path.join(DIR, file_name)
- case_name = 'test_' + file_name[:-3]
- code = """
-def func(self):
- with open('{}') as f:
- exec(f.read())
-"""
- exec(code.format(file_path))
- setattr(MyTest, case_name, func)
-
- unittest.main()
GEOM_Field.py
check_self_intersections_fast.py # OCC > 6.9.0
)
-
-SET(EXAMPLES_TESTS ${BAD_TESTS} ${GOOD_TESTS} testme.py)
SET(TEST_INSTALL_DIRECTORY ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test/xao)
ADD_TEST(TestXAO TestXAO)
-SET_TESTS_PROPERTIES(TestXAO PROPERTIES ENVIRONMENT "XAO_DATA_DIR=${CMAKE_CURRENT_SOURCE_DIR}/data;${tests_env}")
+SET_TESTS_PROPERTIES(TestXAO PROPERTIES ENVIRONMENT "XAO_DATA_DIR=${CMAKE_CURRENT_SOURCE_DIR}/data;${tests_env}" LABELS "xao")
INSTALL(TARGETS TestXAO DESTINATION ${SALOME_INSTALL_BINS})
ADD_TEST(GEOM_TestXAO python ${PYTHON_TEST_DRIVER} ${TIMEOUT} TestXAO)
SET_TESTS_PROPERTIES(GEOM_TestXAO PROPERTIES
- LABELS "${COMPONENT_NAME}"
+ LABELS "${COMPONENT_NAME};${COMPONENT_NAME}_xao"
ENVIRONMENT "XAO_DATA_DIR=$ENV{GEOM_ROOT_DIR}/bin/salome/test/xao/data")
--- /dev/null
+This folder contains test scripts for GEOM module.
+
+These tests are exported into the ${GEOM_ROOT_DIR}/bin/test folder and can be executed with the
+`salome test` command, as a part of whole testing procedure.
+
+The example Python scripts to be used in the documentation of Geometry module, must be put into the
+{root_src}/doc/salome/examples folder!
--- /dev/null
+# Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE(tests.set)
+
+SET(RESTRICTED_ROOT_DIR $ENV{RESTRICTED_ROOT_DIR} CACHE PATH "Path to the restricted repository")
+SET(TEST_INSTALL_DIRECTORY ${GEOM_TEST_DIR}/other)
+
+# Install 'salome test' staff
+# ---------------------------
+
+INSTALL(FILES CTestTestfileInstall.cmake
+ DESTINATION ${TEST_INSTALL_DIRECTORY}
+ RENAME CTestTestfile.cmake)
+INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY})
+INSTALL(FILES ${ALL_TESTS} DESTINATION ${TEST_INSTALL_DIRECTORY})
+INSTALL(DIRECTORY data DESTINATION ${TEST_INSTALL_DIRECTORY})
+
+# Add tests for 'make test'
+# -------------------------
+
+SALOME_GENERATE_TESTS_ENVIRONMENT(_test_env)
+
+# 1. Tests from here
+# ------------------
+
+FOREACH(_test ${ALL_TESTS})
+ GET_FILENAME_COMPONENT(testname ${_test} NAME_WE)
+ ADD_TEST(NAME ${testname}
+ COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/test/test_helper.py ${CMAKE_CURRENT_SOURCE_DIR}/${_test})
+ SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}" LABELS "tests")
+ENDFOREACH()
+
+# 2. Tests from RESTRICTED repository
+# -----------------------------------
+
+IF(EXISTS ${RESTRICTED_ROOT_DIR}/GEOM)
+ FILE(GLOB _restricted_tests "${RESTRICTED_ROOT_DIR}/GEOM/*.py")
+ FOREACH(_test ${_restricted_tests})
+ GET_FILENAME_COMPONENT(_test_name ${_test} NAME_WE)
+ ADD_TEST(NAME ${_test_name}
+ COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/test/test_helper.py ${_test})
+ SET_TESTS_PROPERTIES(${_test_name} PROPERTIES ENVIRONMENT "${_test_env}" LABELS "restricted")
+ ENDFOREACH()
+ENDIF()
--- /dev/null
+# Copyright (C) 2015-2021 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE(tests.set)
+
+FOREACH(tfile ${ALL_TESTS})
+ GET_FILENAME_COMPONENT(BASE_NAME ${tfile} NAME_WE)
+ SET(TEST_NAME ${COMPONENT_NAME}_${BASE_NAME})
+ ADD_TEST(${TEST_NAME} python ${tfile})
+ SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME};${COMPONENT_NAME}_tests")
+endforeach()
--- /dev/null
+DBRep_DrawableShape
+
+CASCADE Topology V1, (c) Matra-Datavision
+Locations 8
+1
+ 1 2.44929359829471e-16 0 0
+-2.44929359829471e-16 1 0 -4.89858719658941e-15
+ 0 0 1 0
+1
+ 1 0 -2.44929359829471e-16 4.89858719658941e-15
+ 0 1 0 0
+2.44929359829471e-16 0 1 0
+2 1 1 2 1 0
+1
+ -1 0 1.22464679914735e-16 -2.44929359829471e-15
+ 0 1 0 0
+-1.22464679914735e-16 0 -1 40
+2 1 1 2 1 4 1 0
+2 2 -1 0
+2 4 -1 2 -1 0
+2 2 1 4 1 0
+Curve2ds 10
+1 0 0 1 0
+1 0 6.2831853071795862 1 0
+2 0 0 -1 0 0 1 9.9999999999766942e-05
+1 0 0 0 1
+1 3.1415926535897931 0 0 1
+1 0 0 1 0
+1 0 6.2831853071795862 1 0
+2 0 0 -1 -4.8988262214224833e-28 -4.8988262214224833e-28 1 2
+1 0 0 0 1
+1 3.1415926535897931 0 0 1
+Curves 4
+2 0 -2.4492935982841007e-20 20 0 1 0 -1 0 -1.7763657212288565e-16 -1.7763657212288565e-16 0 1 19.9999
+2 -20 0 20 0 0 1 1 -2.4492935982898091e-16 0 2.4492935982898091e-16 1 -0 9.9999999999766942e-05
+2 0 -4.8985871965894138e-16 20 0 1 0 -1 0 -1.9737298215558337e-16 -1.9737298215558337e-16 0 1 18
+2 -20 0 20 0 0 1 1 -2.4492935982947069e-16 0 2.4492935982947069e-16 1 -0 2
+Polygon3D 0
+PolygonOnTriangulations 0
+Surfaces 3
+7 0 0 20 0 1 0
+8 0 6.2831853071795862
+2 -20 0 19.999999999999996 -2.4492935982947064e-16 0 1 1 -2.4492935982898091e-16 2.4492935982947064e-16 2.4492935982898091e-16 1 5.9990391306354351e-32 9.9999999999766942e-05
+1 -20 0 20 0 0 1 -1 2.4492935982898091e-16 -0 2.4492935982898091e-16 1 -0
+7 0 0 20 0 1 0
+8 0 6.2831853071795862
+2 -20 0 19.999999999999996 -2.4492935982947064e-16 0 1 1 -2.4492935982947069e-16 2.4492935982947064e-16 2.4492935982947069e-16 1 5.9990391306474315e-32 2
+Triangulations 0
+
+TShapes 15
+Ve
+1e-07
+-19.9999 0 20
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1 1 0 0 3.14159265358979
+3 1 2CN 1 0 0 3.14159265358979
+0
+
+0101000
++15 3 -15 5 *
+Ed
+ 1e-07 1 1 0
+1 2 0 0 6.28318530717959
+2 3 2 0 0 6.28318530717959
+2 4 1 6 0 6.28318530717959
+2 5 1 7 0 6.28318530717959
+0
+
+0101000
++15 1 -15 1 *
+Wi
+
+0101100
++14 0 -14 0 -13 2 +13 8 *
+Fa
+0 1e-07 1 0
+
+0101000
++12 0 *
+Ve
+1e-07
+-18 0 20
+0 0
+
+0101101
+*
+Ed
+ 1e-07 1 1 0
+1 3 0 0 3.14159265358979
+3 6 7CN 3 0 0 3.14159265358979
+0
+
+0101000
++10 3 -10 5 *
+Ed
+ 1e-07 1 1 0
+1 4 0 0 6.28318530717959
+2 8 2 0 0 6.28318530717959
+2 9 3 6 0 6.28318530717959
+2 10 3 7 0 6.28318530717959
+0
+
+0101000
++10 1 -10 1 *
+Wi
+
+0101100
++9 0 -9 0 -8 2 +8 8 *
+Fa
+0 1e-07 3 0
+
+0101000
++7 0 *
+Wi
+
+0101100
++13 0 *
+Wi
+
+0101100
+-8 0 *
+Fa
+0 1e-07 2 0
+
+0101000
++5 0 +4 0 *
+Sh
+
+0101100
++11 0 -6 0 +3 2 -3 8 *
+So
+
+1100000
++2 0 *
+
++1 0
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env python3
+# Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+
+import unittest, sys, os
+
+class SalomeSession(object):
+ def __init__(self, script):
+ import runSalomeOld as runSalome
+ run_script = "runSalomeOld.py"
+ if sys.platform == 'win32':
+ module_dir = os.getenv("KERNEL_ROOT_DIR")
+ if module_dir: run_script = os.path.join(module_dir, "bin", "salome", run_script)
+ pass
+ sys.argv = [run_script]
+ sys.argv += ["--terminal"]
+ sys.argv += ["--modules=GEOM"]
+ sys.argv += ["%s" % script]
+ if sys.platform == 'win32':
+ main_module_path = sys.modules['__main__'].__file__
+ sys.modules['__main__'].__file__ = ''
+ clt, d = runSalome.main()
+ if sys.platform == 'win32':
+ sys.modules['__main__'].__file__ = main_module_path
+ return
+
+ def __del__(self):
+ port = os.getenv('NSPORT')
+ import killSalomeWithPort
+ killSalomeWithPort.killMyPort(port)
+ return
+ pass
+
+class MyTest(unittest.TestCase):
+ def testFunction(self):
+ SalomeSession(sys.argv[1])
+ pass
+
+unittest.main(argv=sys.argv[:1])
--- /dev/null
+from contextlib import contextmanager
+from datetime import datetime, timedelta
+from inspect import getfile
+from os.path import abspath, dirname, join
+from unittest import TestCase, main
+
+import salome
+salome.salome_init_without_session()
+
+from salome.geom import geomBuilder
+geom_builder = geomBuilder.New()
+
+data_dir = abspath(join(dirname(getfile(lambda: None)), 'data'))
+
+@contextmanager
+def no_longer_than(seconds):
+ """
+ Context mananger to check that an execution of given code does not
+ exceed maximum expected time.
+
+ Example of usage:
+
+ with wait(5):
+ do_something_that_should_take_no_more_than_five_seconds()
+
+ Arguments:
+ seconds: max time limit
+
+ Raises:
+ AssertionError: if time limit is exceeded.
+ """
+ expected = timedelta(seconds=seconds)
+ start = datetime.now()
+ yield
+ end = datetime.now()
+ spent = end-start
+ assert spent <= expected, f'Expected maximum delay is exceeded: {spent.total_seconds():.2f} > {seconds:.2f}!'
+
+class TesselationTest(TestCase):
+
+ def test_performance_01(self):
+ shape = geom_builder.ImportBREP(join(data_dir, 'test_performance_01.brep'))
+ with no_longer_than(5):
+ geom_builder.Tesselate(shape, 0.17, False, 20)
+
+if __name__ == "__main__":
+ main()
--- /dev/null
+# Copyright (C) 2015-2021 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(ALL_TESTS
+ test_perf_01.py
+ )