File size: 1,913 Bytes
985c397 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | // SPDX-License-Identifier: LGPL-2.1-or-later
#include <src/App/InitApplication.h>
#include <App/Document.h>
#include <Mod/Measure/App/MeasureDistance.h>
#include <Mod/Part/App/PartFeature.h>
#include <gtest/gtest.h>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <gp_Circ.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Wire.hxx>
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<Part::Feature>("Shape1");
p1->Shape.setValue(makeCircle(gp_Pnt(0.0, 0.0, 0.0)));
auto p2 = doc->addObject<Part::Feature>("Shape2");
p2->Shape.setValue(makeCircle(gp_Pnt(3.0, 4.0, 0.0)));
auto md = 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
|