diff --git a/tests/src/Mod/Part/App/CMakeLists.txt b/tests/src/Mod/Part/App/CMakeLists.txt index 6f47a52112..ac2d513352 100644 --- a/tests/src/Mod/Part/App/CMakeLists.txt +++ b/tests/src/Mod/Part/App/CMakeLists.txt @@ -20,6 +20,7 @@ target_sources( ${CMAKE_CURRENT_SOURCE_DIR}/PartFeatures.cpp ${CMAKE_CURRENT_SOURCE_DIR}/PartTestHelpers.cpp ${CMAKE_CURRENT_SOURCE_DIR}/PropertyTopoShape.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/TopoDS_Shape.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TopoShape.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeCache.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeExpansion.cpp diff --git a/tests/src/Mod/Part/App/TopoDS_Shape.cpp b/tests/src/Mod/Part/App/TopoDS_Shape.cpp new file mode 100644 index 0000000000..404510047d --- /dev/null +++ b/tests/src/Mod/Part/App/TopoDS_Shape.cpp @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include "gtest/gtest.h" +#include +#include +#include +#include +#include + +// NOLINTBEGIN +// clang-format off +TEST(TopoDS_Shape, TestCastEdgeToVertex) +{ + BRepBuilderAPI_MakeEdge mkEdge(gp_Pnt(0, 0, 0), gp_Pnt(10, 0, 0)); + TopoDS_Edge edge = mkEdge.Edge(); + TopoDS_Vertex vertex; + EXPECT_THROW(vertex = TopoDS::Vertex(edge), Standard_TypeMismatch); + EXPECT_TRUE(vertex.IsNull()); +} + +TEST(TopoDS_Shape, TestCastNullVertex) +{ + TopoDS_Vertex vertex1; + TopoDS_Vertex vertex2; + EXPECT_NO_THROW(vertex2 = TopoDS::Vertex(vertex1)); + EXPECT_TRUE(vertex2.IsNull()); +} + +TEST(TopoDS_Shape, TestCastNullEdge) +{ + TopoDS_Edge edge; + TopoDS_Vertex vertex; + EXPECT_NO_THROW(vertex = TopoDS::Vertex(edge)); + EXPECT_TRUE(vertex.IsNull()); +} + +// clang-format on +// NOLINTEND