1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-03-30 17:16:22 +03:00

Configuration - Add support for Google Test framework in CMake #443

Enhance Google Test integration and add support for test projects.
Each Toolkit have GTests folder with place for new tests.
For adding new tests needs to extend FILES.cmake files in each GTests folder.
The single executable is created for each toolkit with all tests.
The tests grouped by module and toolkit with :: as separator.
Added option to download GTest by Cmake if not found.
Add GTest for PLib_JacobiPolynomial with comprehensive test cases
Add GTest for TCollection_AsciiString and TCollection_ExtendedString
Set C++ standard to C++14 for GTest compatibility if required
This commit is contained in:
Pasukhin Dmitry 2025-03-24 08:58:02 +00:00 committed by GitHub
parent 986af180e6
commit 876ccbe977
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
82 changed files with 1596 additions and 15 deletions

145
.github/actions/run-gtest/action.yml vendored Normal file
View File

@ -0,0 +1,145 @@
name: 'Run GTest Validation'
description: 'Execute GTest suite and validate results'
inputs:
platform:
description: 'Platform (windows, macos, linux)'
required: true
compiler:
description: 'Compiler (msvc, clang, gcc)'
required: true
install-artifact-name:
description: 'Name of the artifact containing the installed files'
required: true
artifact-suffix:
description: 'Suffix for the GTest results artifact name'
required: true
default: 'x64'
outputs:
has-failures:
description: 'Whether any tests failed'
value: ${{ steps.check-failures.outputs.has_failures }}
runs:
using: "composite"
steps:
- name: Download and extract install directory
uses: actions/download-artifact@v4.1.7
with:
name: ${{ inputs.install-artifact-name }}
path: install
- name: Download and extract 3rdparty dependencies for Windows
if: inputs.platform == 'windows'
shell: pwsh
run: |
Invoke-WebRequest -Uri https://github.com/Open-Cascade-SAS/OCCT/releases/download/V7_9_0_beta1/3rdparty-vc14-64.zip -OutFile 3rdparty-vc14-64.zip
Expand-Archive -Path 3rdparty-vc14-64.zip -DestinationPath .
Remove-Item 3rdparty-vc14-64.zip
- name: Install macOS dependencies
if: inputs.platform == 'macos'
shell: bash
run: |
brew update
brew install tcl-tk tbb gl2ps xerces-c \
libxmu libxi libxft libxpm \
glew freeimage draco glfw
- name: Install Linux dependencies
if: inputs.platform == 'linux'
shell: bash
run: |
sudo apt-get update && sudo apt-get install -y tcl-dev tk-dev cmake clang make libbtbb-dev libx11-dev libglu1-mesa-dev tcllib tcl-thread tcl libvtk9-dev libopenvr-dev libdraco-dev libfreeimage-dev libegl1-mesa-dev libgles2-mesa-dev libfreetype-dev
- name: Setup Xvfb and Mesa for Linux
if: inputs.platform == 'linux'
uses: ./.github/actions/setup-xvfb-mesa
- name: Set execute permissions on Unix platforms
if: inputs.platform != 'windows'
shell: bash
run: |
chmod +x install/bin/OpenCascadeGTest
- name: Run OpenCascadeGTest on Windows
if: inputs.platform == 'windows'
id: run-gtest-windows
shell: cmd
run: |
cd install
call env.bat ${{ inputs.compiler == 'msvc' && 'vc14' || 'clang' }} win64 release
cd bin
set GTEST_OUTPUT=""
OpenCascadeGTest.exe --gtest_output=xml:gtest_results.xml > gtest_output.log 2>&1
type gtest_output.log
exit /b 0
- name: Run OpenCascadeGTest on Unix platforms
if: inputs.platform != 'windows'
id: run-gtest-unix
shell: bash
env:
DISPLAY: ${{ inputs.platform == 'linux' && ':99' || '' }}
LIBGL_ALWAYS_SOFTWARE: 1
run: |
cd install/bin
source env.sh
./OpenCascadeGTest --gtest_output=xml:gtest_results.xml > gtest_output.log 2>&1
cat gtest_output.log
- name: Upload GTest results
uses: actions/upload-artifact@v4.4.3
with:
name: gtest-results-${{ inputs.platform }}-${{ inputs.compiler }}-${{ inputs.artifact-suffix }}
path: |
install/bin/gtest_results.xml
install/bin/gtest_output.log
retention-days: 15
- name: Check for test failures on Windows
if: inputs.platform == 'windows'
id: check-failures-windows
shell: pwsh
run: |
cd install/bin
$log = Get-Content "gtest_output.log" -Raw
if ($log -match "\[\s+FAILED\s+\]") {
Write-Error "GTest failures detected in the output."
echo "has_failures=true" >> $env:GITHUB_OUTPUT
} else {
Write-Output "No GTest failures detected."
echo "has_failures=false" >> $env:GITHUB_OUTPUT
}
- name: Check for test failures on Unix
if: inputs.platform != 'windows'
id: check-failures-unix
shell: bash
run: |
cd install/bin
if grep -q "\[ FAILED \]" gtest_output.log; then
echo "::error::GTest failures detected in the output."
echo "has_failures=true" >> $GITHUB_OUTPUT
else
echo "No GTest failures detected."
echo "has_failures=false" >> $GITHUB_OUTPUT
fi
- name: Set combined output
id: check-failures
shell: bash
run: |
if [ "${{ inputs.platform }}" == "windows" ]; then
echo "has_failures=${{ steps.check-failures-windows.outputs.has_failures }}" >> $GITHUB_OUTPUT
else
echo "has_failures=${{ steps.check-failures-unix.outputs.has_failures }}" >> $GITHUB_OUTPUT
fi
- name: Fail job if tests failed
if: steps.check-failures.outputs.has_failures == 'true'
shell: bash
run: |
echo "::error::GTest failures detected"
exit 1

View File

@ -21,13 +21,13 @@ jobs:
clang-format:
name: Check code formatting
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
with:
fetch-depth: 0
- name: Run clang-format check
uses: ./.github/actions/clang-format-check
with:
@ -95,8 +95,9 @@ jobs:
-D USE_TBB=ON `
-D USE_RAPIDJSON=ON `
-D USE_OPENGL=ON `
-D CMAKE_CXX_FLAGS="/W4 /WX" `
-D CMAKE_C_FLAGS="/W4 /WX" ..
-D BUILD_GTEST=ON `
-D BUILD_CPP_STANDARD=C++14 `
-D INSTALL_GTEST=ON ..
shell: pwsh
- name: Build OCCT
@ -170,6 +171,9 @@ jobs:
-D USE_TBB=ON `
-D USE_RAPIDJSON=ON `
-D USE_OPENGL=ON `
-D BUILD_GTEST=ON `
-D BUILD_CPP_STANDARD=C++14 `
-D INSTALL_GTEST=ON `
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra -Wno-unknown-warning-option" `
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra -Wno-unknown-warning-option" ..
shell: pwsh
@ -224,6 +228,9 @@ jobs:
-D USE_FREETYPE=ON \
-D USE_OPENGL=ON \
-D USE_FREEIMAGE=ON \
-D BUILD_GTEST=ON \
-D BUILD_CPP_STANDARD=C++14 \
-D INSTALL_GTEST=ON \
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra" ..
@ -277,6 +284,9 @@ jobs:
-D USE_FREETYPE=ON \
-D USE_OPENGL=ON \
-D USE_FREEIMAGE=ON \
-D BUILD_GTEST=ON \
-D BUILD_CPP_STANDARD=C++14 \
-D INSTALL_GTEST=ON \
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra" ..
@ -333,6 +343,9 @@ jobs:
-D USE_TBB=OFF \
-D USE_RAPIDJSON=ON \
-D USE_OPENGL=ON \
-D BUILD_GTEST=ON \
-D BUILD_CPP_STANDARD=C++14 \
-D INSTALL_GTEST=ON \
-D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \
-D CMAKE_C_FLAGS="-Werror -Wall -Wextra" ..
@ -388,7 +401,10 @@ jobs:
-D USE_VTK=ON \
-D USE_TBB=OFF \
-D USE_RAPIDJSON=ON \
-D USE_OPENGL=ON ..
-D USE_OPENGL=ON \
-D BUILD_GTEST=ON \
-D BUILD_CPP_STANDARD=C++14 \
-D INSTALL_GTEST=ON ..
- name: Build OCCT
run: |
@ -406,7 +422,7 @@ jobs:
name: Build TInspector on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
@ -421,7 +437,7 @@ jobs:
name: Build TInspector on Linux
needs: prepare-and-build-linux-clang-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
@ -436,7 +452,7 @@ jobs:
name: Build CSharp Sample on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
@ -451,7 +467,7 @@ jobs:
name: Build MFC Sample on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
@ -466,7 +482,7 @@ jobs:
name: Build Qt Sample on Windows
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
@ -481,7 +497,7 @@ jobs:
name: Build Qt Sample on Linux
needs: prepare-and-build-linux-clang-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
@ -1146,7 +1162,7 @@ jobs:
cd install/bin/results/macos-x64-retest
if [ "$(ls -A)" ]; then
cp -rf * ../macos-x64/
cd ../../
source env.sh
./DRAWEXE -v -c testsummarize results/macos-x64
@ -1363,7 +1379,7 @@ jobs:
cd install/bin/results/macos-gcc-x64-retest
if [ "$(ls -A)" ]; then
cp -rf * ../macos-gcc-x64/
cd ../../
source env.sh
./DRAWEXE -v -c testsummarize results/macos-gcc-x64
@ -1567,7 +1583,7 @@ jobs:
cd install/bin/results/linux-clang-x64-retest
if [ "$(ls -A)" ]; then
cp -rf * ../linux-clang-x64/
cd ../../
source env.sh
./DRAWEXE -v -c testsummarize results/linux-clang-x64
@ -1771,7 +1787,7 @@ jobs:
cd install/bin/results/linux-gcc-x64-retest
if [ "$(ls -A)" ]; then
cp -rf * ../linux-gcc-x64/
cd ../../
source env.sh
./DRAWEXE -v -c testsummarize results/linux-gcc-x64
@ -1802,6 +1818,108 @@ jobs:
echo "Found $FAILED_COUNT FAILED tests"
fi
run-gtest-windows-x64:
name: Run GTest on Windows with MSVC (x64)
needs: prepare-and-build-windows-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: windows
compiler: msvc
install-artifact-name: install-windows-x64
artifact-suffix: x64
run-gtest-windows-clang-x64:
name: Run GTest on Windows with Clang (x64)
needs: prepare-and-build-windows-clang-x64
runs-on: windows-2022
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: windows
compiler: clang
install-artifact-name: install-windows-clang-x64
artifact-suffix: x64
run-gtest-macos-x64:
name: Run GTest on macOS with Clang (x64)
needs: prepare-and-build-macos-x64
runs-on: macos-15
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: macos
compiler: clang
install-artifact-name: install-macos-x64
artifact-suffix: x64
run-gtest-macos-gcc-x64:
name: Run GTest on macOS with GCC (x64)
needs: prepare-and-build-macos-gcc-x64
runs-on: macos-15
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: macos
compiler: gcc
install-artifact-name: install-macos-gcc-x64
artifact-suffix: x64
run-gtest-linux-clang-x64:
name: Run GTest on Linux with Clang (x64)
needs: prepare-and-build-linux-clang-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: linux
compiler: clang
install-artifact-name: install-linux-clang-x64
artifact-suffix: x64
run-gtest-linux-gcc-x64:
name: Run GTest on Linux with GCC (x64)
needs: prepare-and-build-linux-gcc-x64
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4.1.7
- name: Run GTests
uses: ./.github/actions/run-gtest
with:
platform: linux
compiler: gcc
install-artifact-name: install-linux-gcc-x64
artifact-suffix: x64
test-summary:
name: 'Summarize Test Results'
runs-on: ubuntu-24.04

View File

@ -82,6 +82,12 @@ elseif ("${BUILD_CPP_STANDARD}" STREQUAL "C++23")
else ()
message (FATAL_ERROR, "misprint in c++ standard name")
endif()
if (DEFINED BUILD_GTEST AND BUILD_GTEST AND CMAKE_CXX_STANDARD LESS 14)
set (CMAKE_CXX_STANDARD 14)
message (STATUS "Info: C++14 standard is required for GTest. Set to C++14.")
endif()
set (CMAKE_CXX_STANDARD_REQUIRED ON)
# include cmake file
@ -449,6 +455,10 @@ else()
OCCT_CHECK_AND_UNSET (USE_VTK)
endif()
if (NOT DEFINED BUILD_GTEST)
set (BUILD_GTEST OFF CACHE BOOL "${BUILD_GTEST_DESCR}")
endif()
# Rebuild *.yacc and *.lex files that are contained by TKMath toolkit
list (FIND BUILD_TOOLKITS TKMath CAN_REBUILD_PDC_FOR_TKMATH)
list (FIND BUILD_TOOLKITS StepFile CAN_REBUILD_PDC_FOR_STEPFILE)
@ -1184,6 +1194,29 @@ foreach (BUILD_TOOLKIT ${BUILD_TOOLKITS})
add_subdirectory ("${OCCT_${BUILD_TOOLKIT}_FILES_LOCATION}")
endforeach()
# Setup Google Test integration if enabled
if (BUILD_GTEST)
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/gtest")
enable_testing()
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_gtest")
# Initialize GTest environment and create the target first
OCCT_INIT_GTEST()
# Collect test files from all active toolkits and add them to the target
foreach (BUILD_TOOLKIT ${BUILD_TOOLKITS})
OCCT_COLLECT_TOOLKIT_TESTS(${BUILD_TOOLKIT})
endforeach()
# Set environment variables for all tests
OCCT_SET_GTEST_ENVIRONMENT()
else()
# Disable GTest integration if not enabled
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_GTEST")
OCCT_CHECK_AND_UNSET_GROUP ("GTest")
OCCT_CHECK_AND_UNSET ("INSTALL_GTEST")
endif()
if (BUILD_DOC_Overview OR BUILD_DOC_RefMan)
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_doc")
# Setup documentation targets

66
adm/cmake/gtest.cmake Normal file
View File

@ -0,0 +1,66 @@
# Google Test integration for OCCT
# Only proceed if tests are enabled
if (NOT BUILD_GTEST)
set(GOOGLETEST_FOUND FALSE)
return()
endif()
# Check if the user has specified whether to install Google Test
if (NOT DEFINED INSTALL_GTEST)
set(INSTALL_GTEST OFF CACHE BOOL "Install Google Test")
endif()
# Google Test configuration options
option(GTEST_USE_EXTERNAL "Use externally provided Google Test installation" OFF)
option(GTEST_USE_FETCHCONTENT "Use FetchContent to download and build Google Test" ON)
# Try to find existing GTest installation
find_package(GTest QUIET)
if(GTest_FOUND)
message(STATUS "Found Googletest installation")
set(GOOGLETEST_FOUND TRUE)
set(GTEST_USE_EXTERNAL TRUE)
set(GTEST_USE_FETCHCONTENT FALSE)
else()
message(STATUS "Googletest not found in system paths")
if(GTEST_USE_FETCHCONTENT)
include(FetchContent)
# Set option to disable GMock before declaring the content
set(BUILD_GMOCK OFF CACHE BOOL "Builds the googlemock subproject" FORCE)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.16.0.zip
DOWNLOAD_EXTRACT_TIMESTAMP true
)
FetchContent_MakeAvailable(googletest)
# Set proper grouping for the targets in solution explorer
if(TARGET gtest)
set_target_properties(gtest PROPERTIES FOLDER "ThirdParty/GoogleTest")
target_compile_definitions(gtest PRIVATE GTEST_CREATE_SHARED_LIBRARY=1)
endif()
if(TARGET gtest_main)
set_target_properties(gtest_main PROPERTIES FOLDER "ThirdParty/GoogleTest")
target_compile_definitions(gtest_main PRIVATE GTEST_CREATE_SHARED_LIBRARY=1)
endif()
# Set variables for consistent use throughout the build system
set(GOOGLETEST_FOUND TRUE)
else()
message(STATUS "Google Test not available. Tests will be skipped.")
set(GOOGLETEST_FOUND FALSE)
endif()
endif()
# Enable CTest if Google Test is available
if(GOOGLETEST_FOUND)
include(GoogleTest)
endif()

245
adm/cmake/occt_gtest.cmake Normal file
View File

@ -0,0 +1,245 @@
# Google Test integration for OCCT toolkits
set (TEST_PROJECT_NAME OpenCascadeGTest)
# Initialize Google Test environment and create the target
function(OCCT_INIT_GTEST)
if (NOT GOOGLETEST_FOUND)
message(STATUS "Google Test not available. Skipping test project ${TEST_PROJECT_NAME}")
return()
endif()
# Initialize test data collections
set(OCCT_GTEST_SOURCE_FILES "" PARENT_SCOPE)
set(OCCT_GTEST_SOURCE_FILES_ABS "" PARENT_SCOPE)
set(OCCT_GTEST_TESTS_LIST "" PARENT_SCOPE)
# Create the test executable once
add_executable(${TEST_PROJECT_NAME})
set_target_properties(${TEST_PROJECT_NAME} PROPERTIES FOLDER "Testing")
# Link with Google Test
target_link_libraries(${TEST_PROJECT_NAME} PRIVATE GTest::gtest_main)
# Add pthreads if necessary (for Linux)
if (UNIX AND NOT APPLE)
target_link_libraries(${TEST_PROJECT_NAME} PRIVATE pthread)
endif()
target_compile_definitions(${TEST_PROJECT_NAME} PRIVATE GTEST_LINKED_AS_SHARED_LIBRARY=1)
# Link with all active toolkits that are libraries
foreach(TOOLKIT ${BUILD_TOOLKITS})
if(TARGET ${TOOLKIT})
get_target_property(TOOLKIT_TYPE ${TOOLKIT} TYPE)
if(TOOLKIT_TYPE STREQUAL "SHARED_LIBRARY" OR TOOLKIT_TYPE STREQUAL "STATIC_LIBRARY")
target_link_libraries(${TEST_PROJECT_NAME} PRIVATE ${TOOLKIT})
endif()
endif()
endforeach()
if (INSTALL_GTEST)
# Install the test executable
install (TARGETS ${TEST_PROJECT_NAME}
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
if (EMSCRIPTEN)
install(FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${TEST_PROJECT_NAME}.wasm DESTINATION "${INSTALL_DIR_BIN}/${OCCT_INSTALL_BIN_LETTER}")
endif()
endif()
endfunction()
# Add tests from a specific toolkit to the main test executable
function(OCCT_COLLECT_TOOLKIT_TESTS TOOLKIT_NAME)
# Skip if Google Test is not available or the test executable wasn't created
if (NOT GOOGLETEST_FOUND OR NOT TARGET ${TEST_PROJECT_NAME})
return()
endif()
# Extract test source files from FILES.cmake
set(FILES_CMAKE_PATH "${OCCT_${TOOLKIT_NAME}_FILES_LOCATION}/GTests/FILES.cmake")
if(EXISTS "${FILES_CMAKE_PATH}")
# Reset toolkit test files list
set(OCCT_${TOOLKIT_NAME}_GTests_FILES)
# Include the toolkit's FILES.cmake which sets OCCT_${TOOLKIT_NAME}_GTests_FILES
include("${FILES_CMAKE_PATH}")
set(TEST_SOURCE_FILES "${OCCT_${TOOLKIT_NAME}_GTests_FILES}")
# Skip if no test files found
if(NOT TEST_SOURCE_FILES)
return()
endif()
# Get module name for test organization
get_target_property(TOOLKIT_MODULE ${TOOLKIT_NAME} MODULE)
if(NOT TOOLKIT_MODULE)
set(TOOLKIT_MODULE "Unknown")
endif()
# Get absolute paths of test source files and add them to the executable
set(TEST_SOURCE_FILES_ABS)
foreach(TEST_SOURCE_FILE ${TEST_SOURCE_FILES})
set(TEST_SOURCE_FILE_ABS "${OCCT_${TOOLKIT_NAME}_GTests_FILES_LOCATION}/${TEST_SOURCE_FILE}")
list(APPEND TEST_SOURCE_FILES_ABS "${TEST_SOURCE_FILE_ABS}")
endforeach()
# Add test sources to the executable
target_sources(${TEST_PROJECT_NAME} PRIVATE ${TEST_SOURCE_FILES_ABS})
# Create a more reliable test discovery approach
# Use the WORKING_DIRECTORY parameter to ensure proper test execution context
gtest_add_tests(
TARGET ${TEST_PROJECT_NAME}
TEST_PREFIX "${TOOLKIT_MODULE}::${TOOLKIT_NAME}::"
SOURCES ${TEST_SOURCE_FILES_ABS}
TEST_LIST TOOLKIT_TESTS
SKIP_DEPENDENCY
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
)
# Configure test output properties to improve result capture
foreach(test_name ${TOOLKIT_TESTS})
set_tests_properties(${test_name} PROPERTIES
# Use proper result detection by checking output and return code
PASS_REGULAR_EXPRESSION "\\[ PASSED \\]"
FAIL_REGULAR_EXPRESSION "\\[ FAILED \\]"
)
endforeach()
# Add these tests to the main list so we can set environment for all tests later
# Get the existing list first
if(DEFINED OCCT_GTEST_TESTS_LIST)
set(TEMP_GTEST_TESTS_LIST ${OCCT_GTEST_TESTS_LIST})
else()
set(TEMP_GTEST_TESTS_LIST "")
endif()
# Append the new tests
list(APPEND TEMP_GTEST_TESTS_LIST ${TOOLKIT_TESTS})
# Update the parent scope variable
set(OCCT_GTEST_TESTS_LIST "${TEMP_GTEST_TESTS_LIST}" PARENT_SCOPE)
endif()
endfunction()
# Set environment variables for all collected tests
function(OCCT_SET_GTEST_ENVIRONMENT)
if (NOT GOOGLETEST_FOUND OR NOT TARGET ${TEST_PROJECT_NAME})
return()
endif()
if (OCCT_GTEST_TESTS_LIST)
# Set common environment variables
set(TEST_ENVIRONMENT
"CSF_LANGUAGE=us"
"MMGT_CLEAR=1"
"CSF_SHMessage=${CMAKE_SOURCE_DIR}/resources/SHMessage"
"CSF_MDTVTexturesDirectory=${CMAKE_SOURCE_DIR}/resources/Textures"
"CSF_ShadersDirectory=${CMAKE_SOURCE_DIR}/resources/Shaders"
"CSF_XSMessage=${CMAKE_SOURCE_DIR}/resources/XSMessage"
"CSF_TObjMessage=${CMAKE_SOURCE_DIR}/resources/TObj"
"CSF_StandardDefaults=${CMAKE_SOURCE_DIR}/resources/StdResource"
"CSF_PluginDefaults=${CMAKE_SOURCE_DIR}/resources/StdResource"
"CSF_XCAFDefaults=${CMAKE_SOURCE_DIR}/resources/StdResource"
"CSF_TObjDefaults=${CMAKE_SOURCE_DIR}/resources/StdResource"
"CSF_StandardLiteDefaults=${CMAKE_SOURCE_DIR}/resources/StdResource"
"CSF_IGESDefaults=${CMAKE_SOURCE_DIR}/resources/XSTEPResource"
"CSF_STEPDefaults=${CMAKE_SOURCE_DIR}/resources/XSTEPResource"
"CSF_XmlOcafResource=${CMAKE_SOURCE_DIR}/resources/XmlOcafResource"
"CSF_MIGRATION_TYPES=${CMAKE_SOURCE_DIR}/resources/StdResource/MigrationSheet.txt"
"CSF_OCCTResourcePath=${CMAKE_SOURCE_DIR}/resources"
"CSF_OCCTDataPath=${CMAKE_SOURCE_DIR}/data"
"CSF_OCCTDocPath=${CMAKE_SOURCE_DIR}/doc"
"CSF_OCCTSamplesPath=${CMAKE_SOURCE_DIR}/samples"
"CSF_OCCTTestsPath=${CMAKE_SOURCE_DIR}/tests"
"CSF_OCCTBinPath=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
"CSF_OCCTLibPath=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}"
"CSF_OCCTIncludePath=${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}"
"CASROOT=${CMAKE_SOURCE_DIR}"
)
# Build PATH environment variable
set(PATH_ELEMENTS
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
)
# Add 3rdparty paths to PATH
if(3RDPARTY_TCL_LIBRARY_DIR)
list(APPEND PATH_ELEMENTS "${3RDPARTY_TCL_LIBRARY_DIR}")
endif()
if(3RDPARTY_TK_LIBRARY_DIR)
list(APPEND PATH_ELEMENTS "${3RDPARTY_TK_LIBRARY_DIR}")
endif()
if(3RDPARTY_FREETYPE_LIBRARY_DIR)
list(APPEND PATH_ELEMENTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
endif()
if(3RDPARTY_FREEIMAGE_LIBRARY_DIRS)
list(APPEND PATH_ELEMENTS "${3RDPARTY_FREEIMAGE_LIBRARY_DIRS}")
endif()
if(3RDPARTY_TBB_LIBRARY_DIR)
list(APPEND PATH_ELEMENTS "${3RDPARTY_TBB_LIBRARY_DIR}")
endif()
if(3RDPARTY_VTK_LIBRARY_DIR)
list(APPEND PATH_ELEMENTS "${3RDPARTY_VTK_LIBRARY_DIR}")
endif()
if(3RDPARTY_FFMPEG_LIBRARY_DIR)
list(APPEND PATH_ELEMENTS "${3RDPARTY_FFMPEG_LIBRARY_DIR}")
endif()
if(3RDPARTY_QT_DIR)
list(APPEND PATH_ELEMENTS "${3RDPARTY_QT_DIR}/bin")
endif()
if (3RDPARTY_DLL_DIRS)
foreach(DLL_DIR ${3RDPARTY_DLL_DIRS})
list(APPEND PATH_ELEMENTS "${DLL_DIR}")
endforeach()
endif()
# Create the PATH variable that ctest will use
if(WIN32)
string(REPLACE ";" "\\;" TEST_PATH_ENV "$ENV{PATH}")
string(REPLACE ";" "\\;" PATH_ELEMENTS_STR "${PATH_ELEMENTS}")
list(APPEND TEST_ENVIRONMENT "PATH=${PATH_ELEMENTS_STR}\\;${TEST_PATH_ENV}")
else()
string(REPLACE ";" ":" PATH_ELEMENTS_STR "${PATH_ELEMENTS}")
list(APPEND TEST_ENVIRONMENT "PATH=${PATH_ELEMENTS_STR}:$ENV{PATH}")
# Set LD_LIBRARY_PATH for Unix systems
list(APPEND TEST_ENVIRONMENT "LD_LIBRARY_PATH=${PATH_ELEMENTS_STR}:$ENV{LD_LIBRARY_PATH}")
# Set DYLD_LIBRARY_PATH for macOS
if(APPLE)
list(APPEND TEST_ENVIRONMENT "DYLD_LIBRARY_PATH=${PATH_ELEMENTS_STR}:$ENV{DYLD_LIBRARY_PATH}")
endif()
endif()
# Add DrawResources related environment if it exists
if(EXISTS "${CMAKE_SOURCE_DIR}/resources/DrawResources")
list(APPEND TEST_ENVIRONMENT "DRAWHOME=${CMAKE_SOURCE_DIR}/resources/DrawResources")
list(APPEND TEST_ENVIRONMENT "CSF_DrawPluginDefaults=${CMAKE_SOURCE_DIR}/resources/DrawResources")
if(EXISTS "${CMAKE_SOURCE_DIR}/resources/DrawResources/DrawDefault")
list(APPEND TEST_ENVIRONMENT "DRAWDEFAULT=${CMAKE_SOURCE_DIR}/resources/DrawResources/DrawDefault")
endif()
endif()
# Set FPE signal handler if enabled
if(BUILD_ENABLE_FPE_SIGNAL_HANDLER)
list(APPEND TEST_ENVIRONMENT "CSF_FPE=1")
endif()
# Set TCL/TK library paths if they differ
if(3RDPARTY_TCL_LIBRARY_DIR AND 3RDPARTY_TK_LIBRARY_DIR AND NOT 3RDPARTY_TCL_LIBRARY_DIR STREQUAL 3RDPARTY_TK_LIBRARY_DIR)
if(3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT)
list(APPEND TEST_ENVIRONMENT "TCL_LIBRARY=${3RDPARTY_TCL_LIBRARY_DIR}/../lib/tcl${3RDPARTY_TCL_LIBRARY_VERSION_WITH_DOT}")
endif()
if(3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT)
list(APPEND TEST_ENVIRONMENT "TK_LIBRARY=${3RDPARTY_TK_LIBRARY_DIR}/../lib/tk${3RDPARTY_TK_LIBRARY_VERSION_WITH_DOT}")
endif()
endif()
# Set environment for all tests in the project
set_tests_properties(${OCCT_GTEST_TESTS_LIST} PROPERTIES ENVIRONMENT "${TEST_ENVIRONMENT}")
endif()
endfunction()

View File

@ -189,6 +189,7 @@ elseif (BUILD_SOVERSION_NUMBERS GREATER 1)
elseif (BUILD_SOVERSION_NUMBERS GREATER 0)
set (OCC_SOVERSION "${OCC_VERSION_MAJOR}")
endif()
set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}"
SOVERSION "${OCC_SOVERSION}"
VERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}")

View File

@ -0,0 +1,5 @@
# Test source files for TKBin
set(OCCT_TKBin_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKBin_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKBinL
set(OCCT_TKBinL_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKBinL_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKBinTObj
set(OCCT_TKBinTObj_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKBinTObj_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKCAF
set(OCCT_TKCAF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKCAF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKCDF
set(OCCT_TKCDF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKCDF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKLCAF
set(OCCT_TKLCAF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKLCAF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKStd
set(OCCT_TKStd_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKStd_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKStdL
set(OCCT_TKStdL_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKStdL_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKTObj
set(OCCT_TKTObj_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKTObj_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKVCAF
set(OCCT_TKVCAF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKVCAF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXml
set(OCCT_TKXml_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXml_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXmlL
set(OCCT_TKXmlL_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXmlL_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXmlTObj
set(OCCT_TKXmlTObj_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXmlTObj_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKBinXCAF
set(OCCT_TKBinXCAF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKBinXCAF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDE
set(OCCT_TKDE_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDE_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDECascade
set(OCCT_TKDECascade_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDECascade_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDEGLTF
set(OCCT_TKDEGLTF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDEGLTF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDEIGES
set(OCCT_TKDEIGES_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDEIGES_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDEOBJ
set(OCCT_TKDEOBJ_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDEOBJ_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDEPLY
set(OCCT_TKDEPLY_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDEPLY_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDESTEP
set(OCCT_TKDESTEP_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDESTEP_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDESTL
set(OCCT_TKDESTL_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDESTL_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDEVRML
set(OCCT_TKDEVRML_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDEVRML_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKRWMesh
set(OCCT_TKRWMesh_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKRWMesh_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXCAF
set(OCCT_TKXCAF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXCAF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSBase
set(OCCT_TKXSBase_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSBase_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXmlXCAF
set(OCCT_TKXmlXCAF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXmlXCAF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKD3DHostTest
set(OCCT_TKD3DHostTest_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKD3DHostTest_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDCAF
set(OCCT_TKDCAF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDCAF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKDraw
set(OCCT_TKDraw_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKDraw_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKIVtkDraw
set(OCCT_TKIVtkDraw_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKIVtkDraw_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKOpenGlTest
set(OCCT_TKOpenGlTest_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKOpenGlTest_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKOpenGlesTest
set(OCCT_TKOpenGlesTest_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKOpenGlesTest_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKQADraw
set(OCCT_TKQADraw_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKQADraw_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKTObjDRAW
set(OCCT_TKTObjDRAW_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKTObjDRAW_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKTopTest
set(OCCT_TKTopTest_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKTopTest_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKViewerTest
set(OCCT_TKViewerTest_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKViewerTest_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXDEDRAW
set(OCCT_TKXDEDRAW_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXDEDRAW_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAW
set(OCCT_TKXSDRAW_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAW_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWDE
set(OCCT_TKXSDRAWDE_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWDE_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWGLTF
set(OCCT_TKXSDRAWGLTF_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWGLTF_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWIGES
set(OCCT_TKXSDRAWIGES_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWIGES_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWOBJ
set(OCCT_TKXSDRAWOBJ_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWOBJ_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWPLY
set(OCCT_TKXSDRAWPLY_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWPLY_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWSTEP
set(OCCT_TKXSDRAWSTEP_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWSTEP_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWSTL
set(OCCT_TKXSDRAWSTL_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWSTL_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXSDRAWVRML
set(OCCT_TKXSDRAWVRML_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXSDRAWVRML_GTests_FILES
)

View File

@ -0,0 +1,6 @@
# Test source files for TKMath
set(OCCT_TKMath_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKMath_GTests_FILES
PLib_JacobiPolynomial_Test.cxx
)

View File

@ -0,0 +1,169 @@
// Copyright (c) 2025 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <PLib_JacobiPolynomial.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <TColStd_Array2OfReal.hxx>
#include <gtest/gtest.h>
TEST(PLib_JacobiPolynomialTest, ConstructorAndAccessors)
{
// Test with GeomAbs_C0
PLib_JacobiPolynomial aJacobi1(10, GeomAbs_C0);
EXPECT_EQ(10, aJacobi1.WorkDegree());
EXPECT_EQ(0, aJacobi1.NivConstr());
// Test with GeomAbs_C1
PLib_JacobiPolynomial aJacobi2(20, GeomAbs_C1);
EXPECT_EQ(20, aJacobi2.WorkDegree());
EXPECT_EQ(1, aJacobi2.NivConstr());
// Test with GeomAbs_C2
PLib_JacobiPolynomial aJacobi3(30, GeomAbs_C2);
EXPECT_EQ(30, aJacobi3.WorkDegree());
EXPECT_EQ(2, aJacobi3.NivConstr());
}
TEST(PLib_JacobiPolynomialTest, Weights)
{
PLib_JacobiPolynomial aJacobi(20, GeomAbs_C1);
// Test with 10 Gauss points
Standard_Integer nPoints = 10;
Standard_Integer nDegree = 20;
TColStd_Array2OfReal aWeights(0, nPoints / 2, 0, nDegree);
aJacobi.Weights(nPoints, aWeights);
// Weights should be positive
for (Standard_Integer i = 0; i <= nPoints / 2; i++)
{
for (Standard_Integer j = 0; j <= nDegree; j++)
{
// We don't check exact values, but they should be defined
EXPECT_FALSE(std::isnan(aWeights(i, j)));
}
}
}
TEST(PLib_JacobiPolynomialTest, MaxValue)
{
PLib_JacobiPolynomial aJacobi(15, GeomAbs_C0);
Standard_Integer q = aJacobi.WorkDegree() - 2 * (aJacobi.NivConstr() + 1);
TColStd_Array1OfReal aTabMax(0, q);
aJacobi.MaxValue(aTabMax);
// The maximum values should be positive
for (Standard_Integer i = 0; i <= q; i++)
{
EXPECT_GT(aTabMax(i), 0.0);
}
}
TEST(PLib_JacobiPolynomialTest, D0)
{
PLib_JacobiPolynomial aJacobi(10, GeomAbs_C0);
Standard_Integer q = aJacobi.WorkDegree() - 2 * (aJacobi.NivConstr() + 1);
TColStd_Array1OfReal aBasisValue(0, q);
// Test at u = 0
aJacobi.D0(0.0, aBasisValue);
// Test at u = 0.5
aJacobi.D0(0.5, aBasisValue);
// Test at u = 1.0
aJacobi.D0(1.0, aBasisValue);
// We don't check exact values here, just that the method executes without issues
EXPECT_TRUE(true);
}
TEST(PLib_JacobiPolynomialTest, D1)
{
PLib_JacobiPolynomial aJacobi(12, GeomAbs_C1);
Standard_Integer q = aJacobi.WorkDegree() - 2 * (aJacobi.NivConstr() + 1);
TColStd_Array1OfReal aBasisValue(0, q);
TColStd_Array1OfReal aBasisD1(0, q);
// Test at u = 0.5
aJacobi.D1(0.5, aBasisValue, aBasisD1);
// We don't check exact values here, just that the method executes without issues
EXPECT_TRUE(true);
}
TEST(PLib_JacobiPolynomialTest, D2)
{
PLib_JacobiPolynomial aJacobi(14, GeomAbs_C2);
Standard_Integer q = aJacobi.WorkDegree() - 2 * (aJacobi.NivConstr() + 1);
TColStd_Array1OfReal aBasisValue(0, q);
TColStd_Array1OfReal aBasisD1(0, q);
TColStd_Array1OfReal aBasisD2(0, q);
// Test at u = 0.5
aJacobi.D2(0.5, aBasisValue, aBasisD1, aBasisD2);
// We don't check exact values here, just that the method executes without issues
EXPECT_TRUE(true);
}
TEST(PLib_JacobiPolynomialTest, D3)
{
PLib_JacobiPolynomial aJacobi(16, GeomAbs_C2);
Standard_Integer q = aJacobi.WorkDegree() - 2 * (aJacobi.NivConstr() + 1);
TColStd_Array1OfReal aBasisValue(0, q);
TColStd_Array1OfReal aBasisD1(0, q);
TColStd_Array1OfReal aBasisD2(0, q);
TColStd_Array1OfReal aBasisD3(0, q);
// Test at u = 0.5
aJacobi.D3(0.5, aBasisValue, aBasisD1, aBasisD2, aBasisD3);
// We don't check exact values here, just that the method executes without issues
EXPECT_TRUE(true);
}
TEST(PLib_JacobiPolynomialTest, ReduceDegree)
{
PLib_JacobiPolynomial aJacobi(20, GeomAbs_C1);
Standard_Integer dimension = 3;
Standard_Integer maxDegree = 15;
Standard_Real tolerance = 1.0e-3;
// Create sample JacCoeff array with increasing values
TColStd_Array1OfReal aJacCoeff(1, dimension * (maxDegree + 1));
for (Standard_Integer i = 1; i <= dimension * (maxDegree + 1); i++)
{
aJacCoeff(i) = 0.1 * i;
}
// Initialize output variables
Standard_Integer newDegree = 0;
Standard_Real maxError = 0.0;
// Test the reduce degree functionality
aJacobi
.ReduceDegree(dimension, maxDegree, tolerance, aJacCoeff.ChangeValue(1), newDegree, maxError);
// New degree should be less than or equal to maxDegree
EXPECT_LE(newDegree, maxDegree);
// Max error should be defined
EXPECT_FALSE(std::isnan(maxError));
}

View File

@ -0,0 +1,7 @@
# Test source files for TKernel
set(OCCT_TKernel_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKernel_GTests_FILES
TCollection_AsciiString_Test.cxx
TCollection_ExtendedString_Test.cxx
)

View File

@ -0,0 +1,233 @@
// Copyright (c) 2025 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <TCollection_AsciiString.hxx>
#include <gtest/gtest.h>
TEST(TCollection_AsciiStringTest, DefaultConstructor)
{
TCollection_AsciiString aString;
EXPECT_EQ(0, aString.Length());
EXPECT_TRUE(aString.IsEmpty());
}
TEST(TCollection_AsciiStringTest, ConstructorWithCString)
{
TCollection_AsciiString aString("Test String");
EXPECT_EQ(11, aString.Length());
EXPECT_FALSE(aString.IsEmpty());
EXPECT_STREQ("Test String", aString.ToCString());
}
TEST(TCollection_AsciiStringTest, ConstructorWithChar)
{
TCollection_AsciiString aString('A');
EXPECT_EQ(1, aString.Length());
EXPECT_FALSE(aString.IsEmpty());
EXPECT_STREQ("A", aString.ToCString());
}
TEST(TCollection_AsciiStringTest, CopyConstructor)
{
TCollection_AsciiString aString1("Original");
TCollection_AsciiString aString2(aString1);
EXPECT_STREQ(aString1.ToCString(), aString2.ToCString());
EXPECT_EQ(aString1.Length(), aString2.Length());
}
TEST(TCollection_AsciiStringTest, AssignmentOperator)
{
TCollection_AsciiString aString1("First");
TCollection_AsciiString aString2;
aString2 = aString1;
EXPECT_STREQ(aString1.ToCString(), aString2.ToCString());
// Change original to verify deep copy
aString1 = "Changed";
EXPECT_STRNE(aString1.ToCString(), aString2.ToCString());
EXPECT_STREQ("First", aString2.ToCString());
}
TEST(TCollection_AsciiStringTest, Concatenation)
{
TCollection_AsciiString aString1("Hello");
TCollection_AsciiString aString2(" World");
TCollection_AsciiString aString3 = aString1 + aString2;
EXPECT_STREQ("Hello World", aString3.ToCString());
// Using += operator
aString1 += aString2;
EXPECT_STREQ("Hello World", aString1.ToCString());
// Concatenate with char
aString1 += '!';
EXPECT_STREQ("Hello World!", aString1.ToCString());
// Concatenate with C string
aString1 += " Test";
EXPECT_STREQ("Hello World! Test", aString1.ToCString());
}
TEST(TCollection_AsciiStringTest, SubString)
{
TCollection_AsciiString aString("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
TCollection_AsciiString subString = aString.SubString(3, 8);
EXPECT_STREQ("CDEFGH", subString.ToCString());
}
TEST(TCollection_AsciiStringTest, ChangeCase)
{
TCollection_AsciiString aString("Hello World");
// Test to upper case
TCollection_AsciiString upperString = aString;
upperString.UpperCase();
EXPECT_STREQ("HELLO WORLD", upperString.ToCString());
// Test to lower case
TCollection_AsciiString lowerString = aString;
lowerString.LowerCase();
EXPECT_STREQ("hello world", lowerString.ToCString());
// Test capitalize
TCollection_AsciiString capitalizeString = lowerString;
capitalizeString.Capitalize();
EXPECT_STREQ("Hello world", capitalizeString.ToCString());
}
TEST(TCollection_AsciiStringTest, SearchAndLocation)
{
TCollection_AsciiString aString("This is a test string for testing search functions");
// Test Search
EXPECT_EQ(11, aString.Search("test"));
EXPECT_EQ(-1, aString.Search("nonexistent"));
// Test SearchFromEnd
EXPECT_EQ(27, aString.SearchFromEnd("test"));
// Test Location
EXPECT_EQ(3, aString.Location(TCollection_AsciiString("i"), 1, aString.Length()));
EXPECT_EQ(6, aString.Location(TCollection_AsciiString("i"), 4, aString.Length()));
}
TEST(TCollection_AsciiStringTest, RemoveAndInsert)
{
TCollection_AsciiString aString("Hello World");
// Test Remove
aString.Remove(6, 6);
EXPECT_STREQ("Hello", aString.ToCString());
// Test Insert
aString.Insert(6, " Universe");
EXPECT_STREQ("Hello Universe", aString.ToCString());
// Test RemoveAll
aString.RemoveAll('e');
EXPECT_STREQ("Hllo Univrs", aString.ToCString());
}
TEST(TCollection_AsciiStringTest, Comparison)
{
TCollection_AsciiString aString1("Test");
TCollection_AsciiString aString2("Test");
TCollection_AsciiString aString3("Different");
EXPECT_TRUE(aString1.IsEqual(aString2));
EXPECT_TRUE(aString1 == aString2);
EXPECT_FALSE(aString1.IsDifferent(aString2));
EXPECT_FALSE(aString1 != aString2);
EXPECT_FALSE(aString1.IsEqual(aString3));
EXPECT_FALSE(aString1 == aString3);
EXPECT_TRUE(aString1.IsDifferent(aString3));
EXPECT_TRUE(aString1 != aString3);
// Testing with C strings
EXPECT_TRUE(aString1.IsEqual("Test"));
EXPECT_TRUE(aString1 == "Test");
EXPECT_FALSE(aString1.IsEqual("Different"));
EXPECT_FALSE(aString1 == "Different");
// Test IsLess and IsGreater
TCollection_AsciiString aStringA("A");
TCollection_AsciiString aStringZ("Z");
EXPECT_TRUE(aStringA.IsLess(aStringZ));
EXPECT_TRUE(aStringA < aStringZ);
EXPECT_FALSE(aStringA.IsGreater(aStringZ));
EXPECT_FALSE(aStringA > aStringZ);
EXPECT_TRUE(aStringZ.IsGreater(aStringA));
EXPECT_TRUE(aStringZ > aStringA);
EXPECT_FALSE(aStringZ.IsLess(aStringA));
EXPECT_FALSE(aStringZ < aStringA);
}
TEST(TCollection_AsciiStringTest, Token)
{
TCollection_AsciiString aString("This is a test string");
EXPECT_STREQ("This", aString.Token().ToCString());
EXPECT_STREQ("is", aString.Token(" ", 2).ToCString());
EXPECT_STREQ("a", aString.Token(" ", 3).ToCString());
EXPECT_STREQ("test", aString.Token(" ", 4).ToCString());
EXPECT_STREQ("string", aString.Token(" ", 5).ToCString());
EXPECT_STREQ("", aString.Token(" ", 6).ToCString()); // No 6th token
// Test with different separators
TCollection_AsciiString aStringWithSeps("one,two;three:four");
EXPECT_STREQ("one", aStringWithSeps.Token(",;:", 1).ToCString());
EXPECT_STREQ("two", aStringWithSeps.Token(",;:", 2).ToCString());
EXPECT_STREQ("three", aStringWithSeps.Token(",;:", 3).ToCString());
EXPECT_STREQ("four", aStringWithSeps.Token(",;:", 4).ToCString());
}
TEST(TCollection_AsciiStringTest, ValueConversion)
{
// Test integer conversion
TCollection_AsciiString intString("12345");
EXPECT_EQ(12345, intString.IntegerValue());
EXPECT_TRUE(intString.IsIntegerValue());
// Test real value conversion
TCollection_AsciiString realString("123.456");
EXPECT_DOUBLE_EQ(123.456, realString.RealValue());
EXPECT_TRUE(realString.IsRealValue());
// Test invalid conversions
TCollection_AsciiString invalidString("not a number");
EXPECT_FALSE(invalidString.IsIntegerValue());
EXPECT_FALSE(invalidString.IsRealValue());
}
TEST(TCollection_AsciiStringTest, HashCode)
{
TCollection_AsciiString aString1("Test");
TCollection_AsciiString aString2("Test");
TCollection_AsciiString aString3("Different");
EXPECT_EQ(aString1.HashCode(), aString2.HashCode());
EXPECT_NE(aString1.HashCode(), aString3.HashCode());
}
TEST(TCollection_AsciiStringTest, Split)
{
TCollection_AsciiString aString("abcdefghij");
TCollection_AsciiString remainder = aString.Split(5);
EXPECT_STREQ("abcde", aString.ToCString());
EXPECT_STREQ("fghij", remainder.ToCString());
}

View File

@ -0,0 +1,203 @@
// Copyright (c) 2025 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <TCollection_ExtendedString.hxx>
#include <TCollection_AsciiString.hxx>
#include <gtest/gtest.h>
TEST(TCollection_ExtendedStringTest, DefaultConstructor)
{
TCollection_ExtendedString aString;
EXPECT_EQ(0, aString.Length());
EXPECT_TRUE(aString.IsEmpty());
}
TEST(TCollection_ExtendedStringTest, ConstructorWithCString)
{
TCollection_ExtendedString aString("Test String");
EXPECT_EQ(11, aString.Length());
EXPECT_FALSE(aString.IsEmpty());
}
TEST(TCollection_ExtendedStringTest, ConstructorWithChar)
{
TCollection_ExtendedString aString('A');
EXPECT_EQ(1, aString.Length());
EXPECT_FALSE(aString.IsEmpty());
}
TEST(TCollection_ExtendedStringTest, ConstructorWithAsciiString)
{
TCollection_AsciiString asciiString("ASCII Test");
TCollection_ExtendedString extendedString(asciiString);
EXPECT_EQ(asciiString.Length(), extendedString.Length());
}
TEST(TCollection_ExtendedStringTest, CopyConstructor)
{
TCollection_ExtendedString aString1("Original");
TCollection_ExtendedString aString2(aString1);
EXPECT_EQ(aString1.Length(), aString2.Length());
EXPECT_TRUE(aString1.IsEqual(aString2));
}
TEST(TCollection_ExtendedStringTest, AssignmentOperator)
{
TCollection_ExtendedString aString1("First");
TCollection_ExtendedString aString2;
aString2 = aString1;
EXPECT_TRUE(aString1.IsEqual(aString2));
// Change original to verify deep copy
aString1 = TCollection_ExtendedString("Changed");
EXPECT_FALSE(aString1.IsEqual(aString2));
}
TEST(TCollection_ExtendedStringTest, Concatenation)
{
TCollection_ExtendedString aString1("Hello");
TCollection_ExtendedString aString2(" World");
TCollection_ExtendedString aString3 = aString1 + aString2;
EXPECT_EQ(11, aString3.Length());
// Convert to AsciiString for comparison
TCollection_AsciiString asciiResult(aString3);
EXPECT_STREQ("Hello World", asciiResult.ToCString());
// Using += operator
aString1 += aString2;
EXPECT_TRUE(aString1.IsEqual(aString3));
}
TEST(TCollection_ExtendedStringTest, ConversionToFromAscii)
{
// ASCII to Extended
TCollection_AsciiString asciiString("Test String");
TCollection_ExtendedString extendedString(asciiString);
// Extended back to ASCII
TCollection_AsciiString convertedBack(extendedString);
EXPECT_STREQ(asciiString.ToCString(), convertedBack.ToCString());
}
TEST(TCollection_ExtendedStringTest, Comparison)
{
TCollection_ExtendedString aString1("Test");
TCollection_ExtendedString aString2("Test");
TCollection_ExtendedString aString3("Different");
EXPECT_TRUE(aString1.IsEqual(aString2));
EXPECT_TRUE(aString1 == aString2);
EXPECT_FALSE(aString1.IsDifferent(aString2));
EXPECT_FALSE(aString1 != aString2);
EXPECT_FALSE(aString1.IsEqual(aString3));
EXPECT_FALSE(aString1 == aString3);
EXPECT_TRUE(aString1.IsDifferent(aString3));
EXPECT_TRUE(aString1 != aString3);
// Test IsLess and IsGreater
TCollection_ExtendedString aStringA("A");
TCollection_ExtendedString aStringZ("Z");
EXPECT_TRUE(aStringA.IsLess(aStringZ));
EXPECT_TRUE(aStringA < aStringZ);
EXPECT_FALSE(aStringA.IsGreater(aStringZ));
EXPECT_FALSE(aStringA > aStringZ);
EXPECT_TRUE(aStringZ.IsGreater(aStringA));
EXPECT_TRUE(aStringZ > aStringA);
EXPECT_FALSE(aStringZ.IsLess(aStringA));
EXPECT_FALSE(aStringZ < aStringA);
}
TEST(TCollection_ExtendedStringTest, UnicodeSupport)
{
// Test with unicode characters
const Standard_ExtCharacter unicodeChars[] = {0x0041, 0x00A9, 0x2122, 0x20AC, 0}; // A, ©, ™, €
TCollection_ExtendedString unicodeString(unicodeChars);
EXPECT_EQ(4, unicodeString.Length());
EXPECT_EQ(0x0041, unicodeString.Value(1)); // A
EXPECT_EQ(0x00A9, unicodeString.Value(2)); // ©
EXPECT_EQ(0x2122, unicodeString.Value(3)); // ™
EXPECT_EQ(0x20AC, unicodeString.Value(4)); // €
}
TEST(TCollection_ExtendedStringTest, HashCode)
{
TCollection_ExtendedString aString1("Test");
TCollection_ExtendedString aString2("Test");
TCollection_ExtendedString aString3("Different");
EXPECT_EQ(aString1.HashCode(), aString2.HashCode());
EXPECT_NE(aString1.HashCode(), aString3.HashCode());
}
TEST(TCollection_ExtendedStringTest, Remove)
{
TCollection_ExtendedString aString("Hello World");
aString.Remove(6, 6); // Remove "World"
TCollection_AsciiString asciiResult(aString);
EXPECT_STREQ("Hello", asciiResult.ToCString());
}
TEST(TCollection_ExtendedStringTest, ToExtString)
{
TCollection_ExtendedString aString("Test String");
Standard_ExtString extString = aString.ToExtString();
// Check first few characters
EXPECT_EQ('T', extString[0]);
EXPECT_EQ('e', extString[1]);
EXPECT_EQ('s', extString[2]);
EXPECT_EQ('t', extString[3]);
}
TEST(TCollection_ExtendedStringTest, IsAscii)
{
TCollection_ExtendedString asciiString("Simple ASCII");
EXPECT_TRUE(asciiString.IsAscii());
// Create a string with non-ASCII character
Standard_ExtCharacter unicodeChars[] = {'A', 0x20AC, 0}; // A, €
TCollection_ExtendedString unicodeString(unicodeChars);
EXPECT_FALSE(unicodeString.IsAscii());
}
TEST(TCollection_ExtendedStringTest, Cat)
{
TCollection_ExtendedString aString("Hello");
// Cat with ExtendedString
TCollection_ExtendedString result1 = aString.Cat(TCollection_ExtendedString(" World"));
TCollection_AsciiString asciiResult1(result1);
EXPECT_STREQ("Hello World", asciiResult1.ToCString());
// Cat with character
TCollection_ExtendedString result2 = aString.Cat('!');
TCollection_AsciiString asciiResult2(result2);
EXPECT_STREQ("Hello!", asciiResult2.ToCString());
}
TEST(TCollection_ExtendedStringTest, ChangeAll)
{
TCollection_ExtendedString aString("Helloo Woorld");
aString.ChangeAll('o', 'X');
TCollection_AsciiString asciiResult(aString);
EXPECT_STREQ("HellXX WXXrld", asciiResult.ToCString());
}

View File

@ -0,0 +1,5 @@
# Test source files for TKBO
set(OCCT_TKBO_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKBO_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKBool
set(OCCT_TKBool_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKBool_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKExpress
set(OCCT_TKExpress_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKExpress_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKFeat
set(OCCT_TKFeat_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKFeat_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKFillet
set(OCCT_TKFillet_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKFillet_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKGeomAlgo
set(OCCT_TKGeomAlgo_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKGeomAlgo_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKHLR
set(OCCT_TKHLR_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKHLR_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKMesh
set(OCCT_TKMesh_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKMesh_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKOffset
set(OCCT_TKOffset_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKOffset_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKPrim
set(OCCT_TKPrim_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKPrim_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKShHealing
set(OCCT_TKShHealing_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKShHealing_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKTopAlgo
set(OCCT_TKTopAlgo_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKTopAlgo_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKXMesh
set(OCCT_TKXMesh_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKXMesh_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKBRep
set(OCCT_TKBRep_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKBRep_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKG2d
set(OCCT_TKG2d_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKG2d_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKG3d
set(OCCT_TKG3d_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKG3d_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKGeomBase
set(OCCT_TKGeomBase_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKGeomBase_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKD3DHost
set(OCCT_TKD3DHost_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKD3DHost_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKIVtk
set(OCCT_TKIVtk_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKIVtk_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKMeshVS
set(OCCT_TKMeshVS_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKMeshVS_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKOpenGl
set(OCCT_TKOpenGl_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKOpenGl_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKOpenGles
set(OCCT_TKOpenGles_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKOpenGles_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKService
set(OCCT_TKService_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKService_GTests_FILES
)

View File

@ -0,0 +1,5 @@
# Test source files for TKV3d
set(OCCT_TKV3d_GTests_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(OCCT_TKV3d_GTests_FILES
)