// SPDX-License-Identifier: LGPL-2.1-or-later #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 = doc->addObject("Shape1"); p1->Shape.setValue(makeCircle(gp_Pnt(0.0, 0.0, 0.0))); auto p2 = doc->addObject("Shape2"); p2->Shape.setValue(makeCircle(gp_Pnt(3.0, 4.0, 0.0))); auto md = doc->addObject("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