From 76834f6a13672376f17333f2d6445badcac91c76 Mon Sep 17 00:00:00 2001 From: Ajinkya Dahale Date: Thu, 6 Jul 2023 14:52:02 +0530 Subject: [PATCH] [Sketcher] [gtest] Add SketchObject test Create a document and then add a `SketchObject` to it. Does not work without creating document. Also `FCConfig.h` is needed for `FC_OS_WIN32`. --- tests/CMakeLists.txt | 2 +- tests/src/Mod/Sketcher/App/CMakeLists.txt | 6 +++ tests/src/Mod/Sketcher/App/SketchObject.cpp | 50 +++++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 tests/src/Mod/Sketcher/App/SketchObject.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 09db35011f..c4b9fb7e65 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -42,5 +42,5 @@ target_link_libraries(Tests_run gtest_main ${Google_Tests_LIBS} FreeCADApp) add_executable(Sketcher_tests_run) add_subdirectory(src/Mod/Sketcher) -target_include_directories(Sketcher_tests_run PUBLIC ${EIGEN3_INCLUDE_DIR}) +target_include_directories(Sketcher_tests_run PUBLIC ${EIGEN3_INCLUDE_DIR} ${OCC_INCLUDE_DIR} ${Python3_INCLUDE_DIRS}) target_link_libraries(Sketcher_tests_run gtest_main ${Google_Tests_LIBS} Sketcher) diff --git a/tests/src/Mod/Sketcher/App/CMakeLists.txt b/tests/src/Mod/Sketcher/App/CMakeLists.txt index 425a06675b..7bcb006997 100644 --- a/tests/src/Mod/Sketcher/App/CMakeLists.txt +++ b/tests/src/Mod/Sketcher/App/CMakeLists.txt @@ -1 +1,7 @@ +target_sources( + Sketcher_tests_run + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/SketchObject.cpp +) + add_subdirectory(planegcs) diff --git a/tests/src/Mod/Sketcher/App/SketchObject.cpp b/tests/src/Mod/Sketcher/App/SketchObject.cpp new file mode 100644 index 0000000000..df6d511b70 --- /dev/null +++ b/tests/src/Mod/Sketcher/App/SketchObject.cpp @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include "gtest/gtest.h" + +#include + +#include +#include +#include + +class SketchObjectTest: public ::testing::Test +{ +protected: + static void SetUpTestSuite() + { + if (App::Application::GetARGC() == 0) { + int argc = 1; + char* argv[] = {"FreeCAD"}; + App::Application::Config()["ExeName"] = "FreeCAD"; + App::Application::init(argc, argv); + } + } + + void SetUp() override + { + _docName = App::GetApplication().getUniqueDocumentName("test"); + auto _doc = App::GetApplication().newDocument(_docName.c_str(), "testUser"); + // TODO: Do we add a body first, or is just adding sketch sufficient for this test? + _sketchobj = static_cast(_doc->addObject("Sketcher::SketchObject")); + } + + void TearDown() override + { + App::GetApplication().closeDocument(_docName.c_str()); + } + +private: + // TODO: use shared_ptr or something else here? + Sketcher::SketchObject* _sketchobj; + std::string _docName; +}; + +TEST_F(SketchObjectTest, createSketchObject) // NOLINT +{ + // Arrange + + // Act + + // Assert +}