]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1824] Fixed unit tests
authorFrancis Dupont <fdupont@isc.org>
Thu, 29 Apr 2021 09:48:05 +0000 (11:48 +0200)
committerFrancis Dupont <fdupont@isc.org>
Fri, 30 Apr 2021 07:22:20 +0000 (09:22 +0200)
src/hooks/dhcp/flex_option/tests/flex_option_unittests.cc
src/lib/eval/tests/context_unittest.cc

index 12efeee143ca741a8a8b331d0ced9901e1ecfdb8..c5fb04c1ec7fef36e689edc350bff9dae1ac299a 100644 (file)
@@ -427,7 +427,7 @@ TEST_F(FlexOptionTest, optionConfigBadAdd) {
     EXPECT_THROW(impl_->testConfigure(options), BadValue);
     string expected = "can't parse add expression [ifelse('a','b','c')] ";
     expected += "error: <string>:1.11: syntax error, ";
-    expected += "unexpected \",\", expecting ==";
+    expected += "unexpected \",\", expecting == or +";
     EXPECT_EQ(expected, impl_->getErrMsg());
 }
 
@@ -531,7 +531,7 @@ TEST_F(FlexOptionTest, optionConfigBadSupersede) {
     EXPECT_THROW(impl_->testConfigure(options), BadValue);
     string expected = "can't parse supersede expression [ifelse('a','b','c')] ";
     expected += "error: <string>:1.11: syntax error, ";
-    expected += "unexpected \",\", expecting ==";
+    expected += "unexpected \",\", expecting == or +";
     EXPECT_EQ(expected, impl_->getErrMsg());
 }
 
@@ -635,7 +635,7 @@ TEST_F(FlexOptionTest, optionConfigBadRemove) {
     EXPECT_THROW(impl_->testConfigure(options), BadValue);
     string expected = "can't parse remove expression ['abc'] error: ";
     expected += "<string>:1.6: syntax error, unexpected end of file, ";
-    expected += "expecting ==";
+    expected += "expecting == or +";
     EXPECT_EQ(expected,impl_->getErrMsg());
 }
 
index 4c6061856f1957e4f62a1dba99ee9daee25bff90..15ceed41dc7e0712ab80ed398803e12d747e035b 100644 (file)
@@ -1408,6 +1408,34 @@ TEST_F(EvalContextTest, ifElse) {
     checkTokenIfElse(tmp4);
 }
 
+// Test the parsing of a plus operator and ifelse expression
+TEST_F(EvalContextTest, plusIfElse) {
+    EvalContext eval(Option::V4);
+
+    EXPECT_NO_THROW(parsed_ =
+        eval.parseString("'foo' + ifelse('a' == 'a', 'bar', '') == 'foobar'"));
+
+    ASSERT_EQ(10, eval.expression.size());
+
+    TokenPtr tmp1 = eval.expression.at(0);
+    TokenPtr tmp2 = eval.expression.at(1);
+    TokenPtr tmp3 = eval.expression.at(2);
+    TokenPtr tmp4 = eval.expression.at(3);
+    TokenPtr tmp5 = eval.expression.at(4);
+    TokenPtr tmp6 = eval.expression.at(5);
+    TokenPtr tmp7 = eval.expression.at(6);
+    TokenPtr tmp8 = eval.expression.at(7);
+
+    checkTokenString(tmp1, "foo");
+    checkTokenString(tmp2, "a");
+    checkTokenString(tmp3, "a");
+    checkTokenEq(tmp4);
+    checkTokenString(tmp5, "bar");
+    checkTokenString(tmp6, "");
+    checkTokenIfElse(tmp7);
+    checkTokenConcat(tmp8);
+}
+
 // Test the parsing of a hexstring expression
 TEST_F(EvalContextTest, toHexString) {
     EvalContext eval(Option::V4);