From 7ee7ea6add5c917188b39cc37c2e727c0fef5b9f Mon Sep 17 00:00:00 2001
From: Matthias Puchner <github@mpuchner.de>
Date: Tue, 27 Apr 2021 18:12:28 +0200
Subject: [PATCH] add unit tests for IParametricComponent

---
 .../Core/Parameters/IParameterizedTest.cpp    | 67 ++++++-------------
 1 file changed, 22 insertions(+), 45 deletions(-)

diff --git a/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp b/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp
index 6ca50f94138..b383bbaf2e4 100644
--- a/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp
+++ b/Tests/UnitTests/Core/Parameters/IParameterizedTest.cpp
@@ -9,7 +9,7 @@ protected:
     public:
         using IParametricComponent::fullQualifiedParameters; // make it public for test cases
         using IParametricComponent::registerParameter;       // make it public for test cases
-        RealParameter* parameter(const double* p) // make it public for test cases
+        RealParameter* parameter(const double* p)            // make it public for test cases
         {
             return IParametricComponent::parameter(p);
         }
@@ -45,8 +45,6 @@ protected:
     ParameterizedVectors m_parameterizedVectors;
 };
 
-// TODO enable tests
-
 TEST_F(IParametricComponentTest, InitialState)
 {
     EXPECT_EQ(size_t(0), m_initial_object.registeredParameters().size());
@@ -71,6 +69,11 @@ TEST_F(IParametricComponentTest, registeredParameters)
     EXPECT_NE(obj2.parameter("A"), nullptr);
     EXPECT_NE(obj2.parameter(&d), nullptr);
     EXPECT_EQ(obj2.parameter(&d2), nullptr);
+
+    EXPECT_EQ(m_parameterized.registeredParameter("par1"),
+              m_parameterized.registeredParameter("/Parameterized/par1"));
+    EXPECT_EQ(m_parameterized.registeredParameter("par2"),
+              m_parameterized.registeredParameter("/Parameterized/par2"));
 }
 
 TEST_F(IParametricComponentTest, matchedParameters)
@@ -79,7 +82,7 @@ TEST_F(IParametricComponentTest, matchedParameters)
 
     TestClass obj;
     obj.registerParameter("par1", &par1);
-    obj.registerParameter("xxx", &par2);
+    auto rp2 = &obj.registerParameter("xxx", &par2);
     obj.registerParameter("par3", &par3);
 
     auto matched = obj.getMatchedParameters("*par*");
@@ -89,10 +92,15 @@ TEST_F(IParametricComponentTest, matchedParameters)
     EXPECT_EQ(matched.at(0), obj.parameter(&par1));
     EXPECT_EQ(matched.at(1), obj.parameter(&par3));
 
-    // #baPool shall these be implemented? (taken from ParameterPoolTest)
-    //     // unique match
-    //     EXPECT_EQ(rp2, pool.getUniqueMatch("*xxx*"));
-    //     EXPECT_THROW(pool.getUniqueMatch("*par*"), std::runtime_error);
+    EXPECT_EQ(m_parameterized.getMatchedParameters("*par*"),
+              m_parameterized.getMatchedParameters("*/Parameterized/par*"));
+
+    // unique match
+    EXPECT_EQ(obj.registeredParameter("*xxx*"), rp2);
+    EXPECT_THROW(obj.registeredParameter("*par*"), std::runtime_error);
+
+    // no match
+    EXPECT_THROW(obj.registeredParameter("NonExistent"), std::runtime_error);
 }
 
 TEST_F(IParametricComponentTest, registeredVectors)
@@ -143,43 +151,12 @@ TEST_F(IParametricComponentTest, removeParameter)
     EXPECT_NO_THROW(m_parameterized.removeParameter("unknown-par"));
 }
 
-
-// #baPool ++ continue here: more tests; remove the following ones
-
-TEST_F(IParametricComponentTest, DealingWithPool)
-{
-    /* TEMPORARILY DISABLED getParameterPool()
-    EXPECT_EQ( size_t(2), m_parameterized.getParameterPool()->size());
-    IParametricComponentTest::ParameterizedObject obj2 = m_parameterized;
-    EXPECT_EQ( size_t(0), obj2.getParameterPool()->size());
-    ParameterPool *pool = m_parameterized.createParameterTree();
-    //POOL_2('/Parameterized/par1':0 '/Parameterized/par2':0 )
-    //std::cout << *pool << std::endl;
-    pool->getParameter("/Parameterized/par1").setValue(1.0);
-    pool->getParameter("/Parameterized/par2").setValue(2.0);
-    EXPECT_EQ( double(1.0), m_parameterized.m_real_par1);
-    EXPECT_EQ( double(2.0), m_parameterized.m_real_par2);
-    */
-}
-
 TEST_F(IParametricComponentTest, SetParameterValue)
 {
-    //    m_parameterized.m_real_par1 = 1.0;
-    //    m_parameterized.m_real_par2 = 2.0;
-    //    m_parameterized.setParameterValue("par1", 3.0);
-    //    m_parameterized.setParameterValue("par2", 4.0);
-    //    EXPECT_EQ( double(3.0), m_parameterized.m_real_par1);
-    //    EXPECT_EQ( double(4.0), m_parameterized.m_real_par2);
-    //    ASSERT_THROW( m_parameterized.setParameterValue("NotExistingParameterName", 4.0),
-    //                  std::runtime_error );
-    //    m_parameterized.setParameterValue("*par*", 5.0);
-    //    EXPECT_EQ( double(5.0), m_parameterized.m_real_par1);
-    //    EXPECT_EQ( double(5.0), m_parameterized.m_real_par2);
-    //    m_parameterized.setParameterValue("/Parameterized/par1", 7.0);
-    //    EXPECT_EQ( double(7.0), m_parameterized.m_real_par1);
-    //    EXPECT_EQ( double(5.0), m_parameterized.m_real_par2);
-    /* TEMPORARILY DISABLED getParameterPool()
-    m_parameterized.clearParameterPool();
-    EXPECT_EQ( 0.0, m_parameterized.getParameterPool()->size());
-    */
+    m_parameterized.m_real_par1 = 1.0;
+    m_parameterized.m_real_par2 = 2.0;
+    m_parameterized.registeredParameter("par1")->setValue(3.0);
+    m_parameterized.registeredParameter("par2")->setValue(4.0);
+    EXPECT_EQ(double(3.0), m_parameterized.m_real_par1);
+    EXPECT_EQ(double(4.0), m_parameterized.m_real_par2);
 }
-- 
GitLab