Browse Source

Add auto message generation for SectionPairValueArgumentEvaluator

Patrick-Christopher Mattulat 2 years ago
parent
commit
b2402c31e4

+ 1 - 2
include/ls-std/io/section-pair/evaluator/SectionPairValueArgumentEvaluator.hpp

@@ -22,14 +22,13 @@ namespace ls::std::io
   {
     public:
 
-      explicit SectionPairValueArgumentEvaluator(ls::std::io::section_pair_row_value _value, ::std::string _message);
+      explicit SectionPairValueArgumentEvaluator(ls::std::io::section_pair_row_value _value);
       ~SectionPairValueArgumentEvaluator() override;
 
       void evaluate() override;
 
     private:
 
-      ::std::string message{};
       ls::std::io::section_pair_row_value value{};
   };
 }

+ 3 - 2
source/ls-std/io/section-pair/evaluator/SectionPairValueArgumentEvaluator.cpp

@@ -11,7 +11,7 @@
 #include <ls-std/io/section-pair/evaluator/SectionPairValueArgumentEvaluator.hpp>
 #include <ls-std/io/section-pair/validator/SectionPairValueValidator.hpp>
 
-ls::std::io::SectionPairValueArgumentEvaluator::SectionPairValueArgumentEvaluator(ls::std::io::section_pair_row_value _value, ::std::string _message) : ls::std::core::Class("SectionPairValueArgumentEvaluator"), value(::std::move(_value)), message(::std::move(_message))
+ls::std::io::SectionPairValueArgumentEvaluator::SectionPairValueArgumentEvaluator(ls::std::io::section_pair_row_value _value) : ls::std::core::Class("SectionPairValueArgumentEvaluator"), value(::std::move(_value))
 {}
 
 ls::std::io::SectionPairValueArgumentEvaluator::~SectionPairValueArgumentEvaluator() = default;
@@ -20,6 +20,7 @@ void ls::std::io::SectionPairValueArgumentEvaluator::evaluate()
 {
   if (!ls::std::io::SectionPairValueValidator(this->value).isValid())
   {
-    throw ls::std::core::IllegalArgumentException{this->message};
+    ::std::string message = "\"" + this->value + "\" is not a valid value!";
+    throw ls::std::core::IllegalArgumentException{message};
   }
 }

+ 1 - 1
source/ls-std/io/section-pair/model/SectionPairRowListValue.cpp

@@ -23,7 +23,7 @@ ls::std::io::SectionPairRowListValue::~SectionPairRowListValue() = default;
 void ls::std::io::SectionPairRowListValue::add(const ls::std::io::section_pair_row_value &_value)
 {
   ls::std::core::EmptyStringArgumentEvaluator{_value}.evaluate();
-  ls::std::io::SectionPairValueArgumentEvaluator{_value, "section pair row list value \"" + _value + "\" contains invalid characters!"}.evaluate();
+  ls::std::io::SectionPairValueArgumentEvaluator{_value}.evaluate();
   this->values.push_back(_value);
 }
 

+ 1 - 1
source/ls-std/io/section-pair/model/SectionPairRowSingleValue.cpp

@@ -64,7 +64,7 @@ void ls::std::io::SectionPairRowSingleValue::_createSerializable()
 void ls::std::io::SectionPairRowSingleValue::_set(const ls::std::io::section_pair_row_value &_value)
 {
   ls::std::core::EmptyStringArgumentEvaluator{_value}.evaluate();
-  ls::std::io::SectionPairValueArgumentEvaluator(_value, this->getClassName() + ": section pair single value \"" + _value + "\" contains invalid characters!").evaluate();
+  ls::std::io::SectionPairValueArgumentEvaluator(_value).evaluate();
   ::std::string newLine = this->reservedNewLine.empty() ? NewLine::get() : this->reservedNewLine;
   this->value = _value;
 

+ 17 - 5
test/cases/io/section-pair/evaluator/SectionPairValueArgumentEvaluatorTest.cpp

@@ -32,27 +32,39 @@ namespace
       {}
   };
 
+  class SectionPairValueArgumentEvaluatorNotValidTest : public ::testing::TestWithParam<string>
+  {
+    protected:
+
+      SectionPairValueArgumentEvaluatorNotValidTest() = default;
+      ~SectionPairValueArgumentEvaluatorNotValidTest() override = default;
+  };
+
   TEST_F(SectionPairValueArgumentEvaluatorTest, getClassName)
   {
-    shared_ptr<SectionPairValueArgumentEvaluator> evaluator = make_shared<SectionPairValueArgumentEvaluator>("=33", "section pair value contains invalid characters!");
+    shared_ptr<SectionPairValueArgumentEvaluator> evaluator = make_shared<SectionPairValueArgumentEvaluator>("=33");
     ASSERT_STREQ("SectionPairValueArgumentEvaluator", evaluator->getClassName().c_str());
   }
 
-  TEST_F(SectionPairValueArgumentEvaluatorTest, evaluate)
+  TEST_P(SectionPairValueArgumentEvaluatorNotValidTest, evaluate)
   {
     EXPECT_THROW(
         {
           try
           {
-            SectionPairValueArgumentEvaluator("=33", "section pair value contains invalid characters!").evaluate();
+            SectionPairValueArgumentEvaluator(GetParam()).evaluate();
           }
           catch (const IllegalArgumentException &_exception)
           {
-            ::std::string message = _exception.what();
-            ASSERT_STREQ("IllegalArgumentException thrown - section pair value contains invalid characters!", message.c_str());
+            ::std::string actual = _exception.what();
+            ::std::string expected = "IllegalArgumentException thrown - \"" + GetParam() + "\" is not a valid value!";
+
+            ASSERT_STREQ(expected.c_str(), actual.c_str());
             throw;
           }
         },
         IllegalArgumentException);
   }
+
+  INSTANTIATE_TEST_SUITE_P(SectionPairValueArgumentEvaluatorTest, SectionPairValueArgumentEvaluatorNotValidTest, ::testing::Values("=33", "\\empty"));
 }