diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index be8ff26b71..c60c20e7cc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -96,6 +96,9 @@ endif(BUILD_ASSEMBLY) if(BUILD_MATERIAL) list (APPEND TestExecutables Material_tests_run) endif(BUILD_MATERIAL) +if(BUILD_MEASURE) + list (APPEND TestExecutables Measure_tests_run) +endif(BUILD_MEASURE) if(BUILD_MESH) list (APPEND TestExecutables Mesh_tests_run) endif(BUILD_MESH) diff --git a/tests/src/Mod/CMakeLists.txt b/tests/src/Mod/CMakeLists.txt index fdef3879bd..faf7feabe1 100644 --- a/tests/src/Mod/CMakeLists.txt +++ b/tests/src/Mod/CMakeLists.txt @@ -4,6 +4,9 @@ endif(BUILD_ASSEMBLY) if(BUILD_MATERIAL) add_subdirectory(Material) endif(BUILD_MATERIAL) +if(BUILD_MEASURE) + add_subdirectory(Measure) +endif(BUILD_MEASURE) if(BUILD_MESH) add_subdirectory(Mesh) endif(BUILD_MESH) diff --git a/tests/src/Mod/Measure/App/CMakeLists.txt b/tests/src/Mod/Measure/App/CMakeLists.txt new file mode 100644 index 0000000000..a66c5b43b3 --- /dev/null +++ b/tests/src/Mod/Measure/App/CMakeLists.txt @@ -0,0 +1,11 @@ +target_sources( + Measure_tests_run + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/MeasureDistance.cpp +) + +target_include_directories( + Measure_tests_run + PUBLIC + ${CMAKE_BINARY_DIR} +) diff --git a/tests/src/Mod/Measure/App/MeasureDistance.cpp b/tests/src/Mod/Measure/App/MeasureDistance.cpp new file mode 100644 index 0000000000..86aee30c5a --- /dev/null +++ b/tests/src/Mod/Measure/App/MeasureDistance.cpp @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class MeasureDistance: public ::testing::Test +{ +protected: + static void SetUpTestSuite() + { + tests::initApplication(); + } + + void SetUp() override + { + document = App::GetApplication().newDocument("Measure"); + } + + void TearDown() override + { + App::GetApplication().closeDocument(document->getName()); + } + + App::Document* getDocument() const + { + return document; + } + + TopoDS_Edge makeCircle(const gp_Pnt& pnt) const + { + gp_Circ circle; + circle.SetLocation(pnt); + circle.SetRadius(1.0); + BRepBuilderAPI_MakeEdge mkEdge(circle); + return mkEdge.Edge(); + } + +private: + App::Document* document {}; +}; + +// NOLINTBEGIN +TEST_F(MeasureDistance, testCircleCircle) +{ + App::Document* doc = getDocument(); + auto p1 = dynamic_cast(doc->addObject("Part::Feature", "Shape1")); + p1->Shape.setValue(makeCircle(gp_Pnt(0.0, 0.0, 0.0))); + auto p2 = dynamic_cast(doc->addObject("Part::Feature", "Shape2")); + p2->Shape.setValue(makeCircle(gp_Pnt(3.0, 4.0, 0.0))); + + auto md = dynamic_cast( + doc->addObject("Measure::MeasureDistance", "Distance")); + md->Element1.setValue(p1, {"Edge1"}); + md->Element2.setValue(p2, {"Edge1"}); + + doc->recompute(); + + EXPECT_DOUBLE_EQ(md->Distance.getValue(), 5.0); + EXPECT_DOUBLE_EQ(md->DistanceX.getValue(), 3.0); + EXPECT_DOUBLE_EQ(md->DistanceY.getValue(), 4.0); + EXPECT_DOUBLE_EQ(md->DistanceZ.getValue(), 0.0); + EXPECT_EQ(md->Position1.getValue(), Base::Vector3d(0.0, 0.0, 0.0)); + EXPECT_EQ(md->Position2.getValue(), Base::Vector3d(3.0, 4.0, 0.0)); +} +// NOLINTEND diff --git a/tests/src/Mod/Measure/CMakeLists.txt b/tests/src/Mod/Measure/CMakeLists.txt new file mode 100644 index 0000000000..161ea0c103 --- /dev/null +++ b/tests/src/Mod/Measure/CMakeLists.txt @@ -0,0 +1,17 @@ + +target_include_directories(Measure_tests_run PUBLIC + ${EIGEN3_INCLUDE_DIR} + ${OCC_INCLUDE_DIR} + ${Python3_INCLUDE_DIRS} + ${SMESH_INCLUDE_DIR} + ${VTK_INCLUDE_DIRS} + ${XercesC_INCLUDE_DIRS} +) + +target_link_libraries(Measure_tests_run + gtest_main + ${Google_Tests_LIBS} + Measure +) + +add_subdirectory(App)