From 28d11807933edb3e7c9a39f2ff219f32b8cdde59 Mon Sep 17 00:00:00 2001 From: Matthias Puchner <github@mpuchner.de> Date: Tue, 4 May 2021 15:07:39 +0200 Subject: [PATCH] remove usage of registered parameters --- Param/Base/IParametricComponent.cpp | 45 ---------- Param/Base/IParametricComponent.h | 24 +---- Sample/Lattice/Lattice3D.cpp | 5 -- .../Core/Parameters/DistributionsTest.cpp | 40 --------- .../Core/Parameters/FTDistributionsTest.cpp | 19 ---- .../Core/Parameters/IParameterizedTest.cpp | 89 ------------------- Tests/UnitTests/Core/Sample/INodeTest.cpp | 32 ------- Tests/UnitTests/Core/Sample/Lattice2DTest.cpp | 52 ----------- .../Core/Sample/SampleBuilderNodeTest.cpp | 3 - .../Core/Sample/SampleProviderTest.cpp | 1 - .../GUI/TestGUICoreObjectCorrespondence.cpp | 6 -- 11 files changed, 2 insertions(+), 314 deletions(-) diff --git a/Param/Base/IParametricComponent.cpp b/Param/Base/IParametricComponent.cpp index 918400ecf8a..1b0df2df4da 100644 --- a/Param/Base/IParametricComponent.cpp +++ b/Param/Base/IParametricComponent.cpp @@ -24,8 +24,6 @@ IParametricComponent::IParametricComponent(const std::string& name) : m_name{nam IParametricComponent::IParametricComponent(const IParametricComponent& other) : IParametricComponent(other.m_name) { - if (!other.m_params.empty()) - throw std::runtime_error("BUG: not prepared to copy parameters of " + getName()); } IParametricComponent::~IParametricComponent() = default; @@ -41,49 +39,6 @@ void IParametricComponent::checkLimits(const std::string& name, const double val } } -RealParameter& IParametricComponent::registerParameter(const std::string& name, double* data) -{ - for (const auto* par : m_params) - if (par->getName() == name) - throw std::runtime_error("IParametricComponent::registerParameter() -> Error. " - "Parameter '" - + name + "' is already registered"); - m_params.push_back(new RealParameter(name, data, getName(), [&]() -> void { onChange(); })); - return *m_params.back(); -} - -void IParametricComponent::registerVector(const std::string& base_name, kvector_t* p_vec, - const std::string& units) -{ - registerParameter(XComponentName(base_name), &((*p_vec)[0])).setUnit(units); - registerParameter(YComponentName(base_name), &((*p_vec)[1])).setUnit(units); - registerParameter(ZComponentName(base_name), &((*p_vec)[2])).setUnit(units); -} - -//! Returns parameter with given 'name'. -RealParameter* IParametricComponent::parameter(const std::string& name) const -{ - for (auto* par : m_params) - if (par->getName() == name) - return par; - - return nullptr; -} - -RealParameter* IParametricComponent::parameter(const double* p) const -{ - for (auto parameter : m_params) - if (parameter->handlesThisData(p)) - return parameter; - - return nullptr; -} - -bool IParametricComponent::isVectorRegistered(kvector_t* p_vec) const -{ - return parameter(&((*p_vec)[0])) != nullptr; -} - std::string IParametricComponent::XComponentName(const std::string& base_name) { return base_name + "X"; diff --git a/Param/Base/IParametricComponent.h b/Param/Base/IParametricComponent.h index 2f4f1bfe713..6e06d23df71 100644 --- a/Param/Base/IParametricComponent.h +++ b/Param/Base/IParametricComponent.h @@ -41,30 +41,14 @@ public: //! Action to be taken in inherited class when a parameter has changed. virtual void onChange() {} - //! Create and register a parameter with the given name for a double member. - RealParameter& registerParameter(const std::string& name, double* parpointer); protected: void setName(const std::string& name) { m_name = name; } - void checkLimits(const std::string& name, const double value, const RealLimits& limits) const; - - //! Create and register parameters with the given name for a vector. - void registerVector(const std::string& base_name, kvector_t* p_vec, - const std::string& units = "nm"); - //! Get the parameter which handles the given double. - //! This will not return parameters found in the hierarchy, - //! but only the ones registered in this instance. - RealParameter* parameter(const double* p) const; - - //! Check whether the given vector has registered parameters. - bool isVectorRegistered(kvector_t* p_vec) const; + // #bapool add docu and unit tests + void checkLimits(const std::string& name, const double value, const RealLimits& limits) const; private: - //! Returns the locally registered parameter with the given name (none from - //! parents/children) - RealParameter* parameter(const std::string& name) const; - static std::string XComponentName(const std::string& base_name); static std::string YComponentName(const std::string& base_name); static std::string ZComponentName(const std::string& base_name); @@ -72,10 +56,6 @@ private: private: std::string m_name; -protected: - std::vector<RealParameter*> m_params; //!< registered parameters (kind of - //!< pointer-to-implementation) - // #baPool ++ can this be moved to the testclass (like in INodeTest?) friend class IParametricComponentTest_InitialState_Test; friend class IParametricComponentTest_registeredVectors_Test; diff --git a/Sample/Lattice/Lattice3D.cpp b/Sample/Lattice/Lattice3D.cpp index 9be029d4e38..1a300fb410f 100644 --- a/Sample/Lattice/Lattice3D.cpp +++ b/Sample/Lattice/Lattice3D.cpp @@ -40,11 +40,6 @@ Lattice3D::~Lattice3D() = default; void Lattice3D::initialize() { computeReciprocalVectors(); - if (!isVectorRegistered(&m_a)) { - registerVector("BasisA", &m_a, "nm"); - registerVector("BasisB", &m_b, "nm"); - registerVector("BasisC", &m_c, "nm"); - } } void Lattice3D::onChange() diff --git a/Tests/UnitTests/Core/Parameters/DistributionsTest.cpp b/Tests/UnitTests/Core/Parameters/DistributionsTest.cpp index 0ea3959c094..a1ca946f94f 100644 --- a/Tests/UnitTests/Core/Parameters/DistributionsTest.cpp +++ b/Tests/UnitTests/Core/Parameters/DistributionsTest.cpp @@ -66,16 +66,6 @@ TEST_F(DistributionsTest, DistributionGateConstructor) EXPECT_EQ(samples[2].weight, 1. / 3.); } -TEST_F(DistributionsTest, DistributionGateParameters) -{ - DistributionGate gate(2.0, 3.0); - EXPECT_EQ(gate.lowerBound(), gate.parameter("Min")->value()); - EXPECT_EQ(gate.upperBound(), gate.parameter("Max")->value()); - - EXPECT_EQ(gate.parameter("Min")->unit(), ""); - EXPECT_EQ(gate.parameter("Max")->unit(), ""); -} - TEST_F(DistributionsTest, DistributionGateClone) { DistributionGate gate(2.0, 3.0); @@ -125,16 +115,6 @@ TEST_F(DistributionsTest, DistributionLorentzConstructor) EXPECT_EQ(3, list3[1]); } -TEST_F(DistributionsTest, DistributionLorentzParameters) -{ - DistributionLorentz lorentz(2.0, 3.0); - EXPECT_EQ(lorentz.getMean(), lorentz.parameter("Mean")->value()); - EXPECT_EQ(lorentz.getHWHM(), lorentz.parameter("HWHM")->value()); - - EXPECT_EQ(lorentz.parameter("Mean")->unit(), ""); - EXPECT_EQ(lorentz.parameter("HWHM")->unit(), ""); -} - TEST_F(DistributionsTest, DistributionLorentzClone) { std::unique_ptr<DistributionLorentz> P_distr_lorentz{new DistributionLorentz(1.0, 2.0)}; @@ -216,16 +196,6 @@ TEST_F(DistributionsTest, DistributionGaussianConstructor) EXPECT_EQ(3, list3[1]); } -TEST_F(DistributionsTest, DistributionGaussianParameters) -{ - DistributionGaussian gaussian(2.0, 3.0); - EXPECT_EQ(gaussian.getMean(), gaussian.parameter("Mean")->value()); - EXPECT_EQ(gaussian.getStdDev(), gaussian.parameter("StdDev")->value()); - - EXPECT_EQ(gaussian.parameter("Mean")->unit(), ""); - EXPECT_EQ(gaussian.parameter("StdDev")->unit(), ""); -} - TEST_F(DistributionsTest, DistributionGaussianClone) { std::unique_ptr<DistributionGaussian> P_distr_gauss{new DistributionGaussian(1.0, 1.0)}; @@ -318,16 +288,6 @@ TEST_F(DistributionsTest, DistributionCosineConstructor) EXPECT_EQ(1 + M_PI, list3[1]); } -TEST_F(DistributionsTest, DistributionCosineParameters) -{ - DistributionCosine cosine(2.0, 3.0); - EXPECT_EQ(cosine.getMean(), cosine.parameter("Mean")->value()); - EXPECT_EQ(cosine.getSigma(), cosine.parameter("Sigma")->value()); - - EXPECT_EQ(cosine.parameter("Mean")->unit(), ""); - EXPECT_EQ(cosine.parameter("Sigma")->unit(), ""); -} - TEST_F(DistributionsTest, DistributionCosineClone) { std::unique_ptr<DistributionCosine> P_distr_cosine{new DistributionCosine(1.0, 1.0)}; diff --git a/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp b/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp index 878508cc50b..6117dfdaa73 100644 --- a/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp +++ b/Tests/UnitTests/Core/Parameters/FTDistributionsTest.cpp @@ -5,11 +5,6 @@ #include <memory> class FTDistributionsTest : public ::testing::Test { -protected: - void setParameterValue(IParametricComponent& c, const std::string& n, double v) - { - EXPECT_NO_THROW(c.parameter(n)->setValue(v)); - } }; // test 1D @@ -19,9 +14,6 @@ TEST_F(FTDistributionsTest, FTDistribution1DCauchyConstructor) std::unique_ptr<IFTDistribution1D> P_1d_cauchy{new FTDistribution1DCauchy(1.0)}; EXPECT_EQ(1.0, P_1d_cauchy->omega()); EXPECT_NEAR(0.961538, P_1d_cauchy->evaluate(0.2), 0.000001); - - setParameterValue(*P_1d_cauchy,"Omega",7.0); - EXPECT_EQ(7.0, P_1d_cauchy->omega()); } TEST_F(FTDistributionsTest, FTDistribution1DCauchyClone) @@ -120,20 +112,9 @@ TEST_F(FTDistributionsTest, FTDistribution2DCauchyConstructor) std::unique_ptr<IFTDistribution2D> P_2d_cauchy{new FTDistribution2DCauchy(1.0, 2.0, 0)}; EXPECT_EQ(1.0, P_2d_cauchy->omegaX()); EXPECT_EQ(2.0, P_2d_cauchy->omegaY()); - EXPECT_EQ(2.0, P_2d_cauchy->parameter("OmegaY")->value()); - EXPECT_EQ(0, P_2d_cauchy->parameter("Gamma")->value()); EXPECT_EQ(M_PI / 2.0, P_2d_cauchy->delta()); EXPECT_EQ(0.0, P_2d_cauchy->gamma()); EXPECT_NEAR(0.343206, P_2d_cauchy->evaluate(0.2, 0.5), 0.000001); - - setParameterValue(*P_2d_cauchy, "Gamma", .123); - EXPECT_EQ(.123, P_2d_cauchy->gamma()); - EXPECT_EQ(.123, P_2d_cauchy->parameter("Gamma")->value()); - - setParameterValue(*P_2d_cauchy, "OmegaX", 7.0); - setParameterValue(*P_2d_cauchy, "OmegaY", 5.3); - EXPECT_EQ(7.0, P_2d_cauchy->omegaX()); - EXPECT_EQ(5.3, P_2d_cauchy->omegaY()); } TEST_F(FTDistributionsTest, FTDistribution2DCauchyClone) diff --git a/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp b/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp index b657254ccb7..c7fe76a2cb7 100644 --- a/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp +++ b/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp @@ -3,92 +3,3 @@ #include "Tests/GTestWrapper/google_test.h" #include <stdexcept> -class IParametricComponentTest : public ::testing::Test { -protected: - class TestClass : public IParametricComponent { - public: - using IParametricComponent::registerParameter; // make it public for test cases - RealParameter* parameter(const double* p) // make it public for test cases - { - return IParametricComponent::parameter(p); - } - }; - - TestClass m_initial_object; - - class ParameterizedObject : public IParametricComponent { - public: - ParameterizedObject() : m_real_par1(0), m_real_par2(0) - { - setName("Parameterized"); - registerParameter("par1", &m_real_par1); - registerParameter("par2", &m_real_par2); - } - double m_real_par1; - double m_real_par2; - }; - ParameterizedObject m_parameterized; - - class ParameterizedVectors : public IParametricComponent { - public: - ParameterizedVectors() - { - setName("ParameterizedVector"); - registerVector("vector1", &m_v1); - registerVector("vector2", &m_v2); - } - kvector_t m_v1; - kvector_t m_v2; - kvector_t m_v3; - }; - ParameterizedVectors m_parameterizedVectors; -}; - -TEST_F(IParametricComponentTest, InitialState) -{ - EXPECT_EQ(size_t(0), m_initial_object.m_params.size()); - TestClass obj2(m_initial_object); - EXPECT_EQ(size_t(0), obj2.m_params.size()); -} - -TEST_F(IParametricComponentTest, registeredParameters) -{ - ASSERT_EQ(size_t(2), m_parameterized.m_params.size()); - EXPECT_NE(m_parameterized.parameter("par1"), nullptr); - EXPECT_NE(m_parameterized.parameter("par2"), nullptr); - - IParametricComponent obj2; - double d(0.0); - double d2(1.0); - obj2.registerParameter("A", &d); - EXPECT_THROW(obj2.registerParameter("A", &d2), std::runtime_error); - ASSERT_EQ(size_t(1), obj2.m_params.size()); - EXPECT_NE(obj2.parameter("A"), nullptr); - EXPECT_NE(obj2.parameter(&d), nullptr); - EXPECT_EQ(obj2.parameter(&d2), nullptr); -} - -TEST_F(IParametricComponentTest, registeredVectors) -{ - ASSERT_EQ(size_t(6), m_parameterizedVectors.m_params.size()); - EXPECT_TRUE(m_parameterizedVectors.isVectorRegistered(&m_parameterizedVectors.m_v1)); - EXPECT_TRUE(m_parameterizedVectors.isVectorRegistered(&m_parameterizedVectors.m_v2)); - EXPECT_FALSE(m_parameterizedVectors.isVectorRegistered(&m_parameterizedVectors.m_v3)); - - EXPECT_NE(m_parameterizedVectors.parameter(IParametricComponent::XComponentName("vector1")), - nullptr); - EXPECT_NE(m_parameterizedVectors.parameter(IParametricComponent::YComponentName("vector1")), - nullptr); - EXPECT_NE(m_parameterizedVectors.parameter(IParametricComponent::ZComponentName("vector1")), - nullptr); -} - -TEST_F(IParametricComponentTest, SetParameterValue) -{ - m_parameterized.m_real_par1 = 1.0; - m_parameterized.m_real_par2 = 2.0; - m_parameterized.parameter("par1")->setValue(3.0); - m_parameterized.parameter("par2")->setValue(4.0); - EXPECT_EQ(double(3.0), m_parameterized.m_real_par1); - EXPECT_EQ(double(4.0), m_parameterized.m_real_par2); -} diff --git a/Tests/UnitTests/Core/Sample/INodeTest.cpp b/Tests/UnitTests/Core/Sample/INodeTest.cpp index f5863fca081..38278d3467b 100644 --- a/Tests/UnitTests/Core/Sample/INodeTest.cpp +++ b/Tests/UnitTests/Core/Sample/INodeTest.cpp @@ -18,7 +18,6 @@ public: : m_parameter1(value) { setName(name); - registerParameter("par1", &m_parameter1); } virtual ~TestClass() @@ -103,34 +102,3 @@ TEST_F(INodeTest, displayName) node.appendChild(child2); EXPECT_EQ(child2->displayName(), another_test_class_name); } - -//! Checking the path of the node, which is a path composed of node's displayName and -//! the displayName of parent. - -TEST_F(INodeTest, nodePath) -{ - INodeTest::TestClass root("root"); - EXPECT_EQ(NodeUtils::nodePath(&root), "/root"); - - // adding first child - INodeTest::TestClass* child0 = new INodeTest::TestClass("child"); - root.appendChild(child0); - EXPECT_EQ(NodeUtils::nodePath(child0), "/root/child"); - - // adding second child with the same name - INodeTest::TestClass* child1 = new INodeTest::TestClass("child"); - root.appendChild(child1); - EXPECT_EQ(NodeUtils::nodePath(child0), "/root/child0"); - EXPECT_EQ(NodeUtils::nodePath(child1), "/root/child1"); - - // adding grandchild - INodeTest::TestClass* grandchild = new INodeTest::TestClass("grandchild"); - child0->appendChild(grandchild); - EXPECT_EQ(NodeUtils::nodePath(grandchild), "/root/child0/grandchild"); - - // Now check path of grandchild wrt it's direct parent - EXPECT_EQ(NodeUtils::nodePath(grandchild, child0), "/grandchild"); - - // Check if exception is thrown when grandchild doesn't belong to child's branch - EXPECT_THROW(NodeUtils::nodePath(grandchild, child1), std::runtime_error); -} diff --git a/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp b/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp index a3f81486cfc..1c671840dc1 100644 --- a/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp +++ b/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp @@ -3,11 +3,6 @@ #include "Tests/GTestWrapper/google_test.h" class Lattice2DTest : public ::testing::Test { -protected: - void setParameterValue(IParametricComponent& c, const std::string& n, double v) - { - EXPECT_NO_THROW(c.parameter(n)->setValue(v)); - } }; TEST_F(Lattice2DTest, basicLattice) @@ -18,17 +13,6 @@ TEST_F(Lattice2DTest, basicLattice) EXPECT_EQ(lattice.length2(), length2); EXPECT_EQ(lattice.latticeAngle(), angle); EXPECT_EQ(lattice.rotationAngle(), rotangle); - - const double new_value(42.0); - - setParameterValue(lattice, "LatticeLength1", new_value); - EXPECT_EQ(lattice.length1(), new_value); - setParameterValue(lattice, "LatticeLength2", new_value); - EXPECT_EQ(lattice.length2(), new_value); - setParameterValue(lattice, "Alpha", new_value); - EXPECT_EQ(lattice.latticeAngle(), new_value); - setParameterValue(lattice, "Xi", new_value); - EXPECT_EQ(lattice.rotationAngle(), new_value); } TEST_F(Lattice2DTest, basicLatticeClone) @@ -53,14 +37,6 @@ TEST_F(Lattice2DTest, squareLatticeClone) EXPECT_EQ(clone->length2(), length); EXPECT_DOUBLE_EQ(clone->latticeAngle(), M_PI / 2.0); EXPECT_EQ(clone->rotationAngle(), xi); - - // registered parameters of clone - const double new_value(42.0); - setParameterValue(*clone, "LatticeLength", new_value); - EXPECT_EQ(clone->length1(), new_value); - EXPECT_EQ(clone->length2(), new_value); - setParameterValue(*clone, "Xi", new_value); - EXPECT_EQ(clone->rotationAngle(), new_value); } TEST_F(Lattice2DTest, hexagonalLatticeClone) @@ -73,32 +49,4 @@ TEST_F(Lattice2DTest, hexagonalLatticeClone) EXPECT_EQ(clone->length2(), length); EXPECT_DOUBLE_EQ(clone->latticeAngle(), 2. * M_PI / 3.0); EXPECT_EQ(clone->rotationAngle(), xi); - - // registered parameters of clone - const double new_value(42.0); - setParameterValue(*clone, "LatticeLength", new_value); - EXPECT_EQ(clone->length1(), new_value); - EXPECT_EQ(clone->length2(), new_value); - setParameterValue(*clone, "Xi", new_value); - EXPECT_EQ(clone->rotationAngle(), new_value); -} - -TEST_F(Lattice2DTest, onChange) -{ - class Parent : public INode { - public: - Parent() : m_changed(false) {} - void accept(INodeVisitor* visitor) const override { visitor->visit(this); } - void onChange() override { m_changed = true; } - bool m_changed; - }; - - Parent parent; - const double length1(1.0), length2(2.0), angle(3.0), xi(4.0); - BasicLattice2D lattice(length1, length2, angle, xi); - - parent.registerChild(&lattice); - EXPECT_FALSE(parent.m_changed); - setParameterValue(lattice, "LatticeLength1", 42.0); - EXPECT_TRUE(parent.m_changed); } diff --git a/Tests/UnitTests/Core/Sample/SampleBuilderNodeTest.cpp b/Tests/UnitTests/Core/Sample/SampleBuilderNodeTest.cpp index d0a99fd4d4e..f3234a98676 100644 --- a/Tests/UnitTests/Core/Sample/SampleBuilderNodeTest.cpp +++ b/Tests/UnitTests/Core/Sample/SampleBuilderNodeTest.cpp @@ -25,7 +25,6 @@ public: explicit TestBuilder(double length = 42.0) : m_length(length) { setName("TestBuilder"); - registerParameter("length", &m_length); } MultiLayer* buildSample() const { return testMultiLayer(m_length).release(); } @@ -42,7 +41,6 @@ TEST_F(SampleBuilderNodeTest, builderParameters) // initial state EXPECT_EQ(builderNode.parent(), nullptr); EXPECT_EQ(builderNode.getChildren().size(), 0u); - EXPECT_EQ(builderNode.m_params.size(), 0u); EXPECT_EQ(bool(builderNode), false); // setting builder @@ -62,7 +60,6 @@ TEST_F(SampleBuilderNodeTest, builderParameters) // reset node to initial state builderNode.reset(); EXPECT_EQ(builder.use_count(), 1); - EXPECT_EQ(builderNode.m_params.size(), 0u); EXPECT_ASSERT_TRIGGERED(builderNode.createMultiLayer()); } diff --git a/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp b/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp index 0eade834017..f9f541297eb 100644 --- a/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp +++ b/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp @@ -44,7 +44,6 @@ public: explicit TestBuilder(double length = 42.0) : m_length(length) { setName("TestBuilder"); - registerParameter("length", &m_length); } MultiLayer* buildSample() const { return testMultiLayer(m_length).release(); } diff --git a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp index 792d10686e6..8f298daf137 100644 --- a/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp +++ b/Tests/UnitTests/GUI/TestGUICoreObjectCorrespondence.cpp @@ -11,13 +11,7 @@ public: void GUICoreObjectCorrespondence(const SessionItem& gui_object, const IParametricComponent& core_object) { - // First check if names correspond: EXPECT_EQ(gui_object.displayName(), QString::fromStdString(core_object.getName())); - - for (auto parameter : core_object.m_params) { - const QString gui_name = QString::fromStdString(parameter->getName()); - EXPECT_TRUE(gui_object.isTag(gui_name)); - } } }; -- GitLab