|
@@ -30,6 +30,15 @@ using std::setw;
|
|
using std::string;
|
|
using std::string;
|
|
|
|
|
|
namespace {
|
|
namespace {
|
|
|
|
+
|
|
|
|
+TEST(Position, str) {
|
|
|
|
+ Element::Position position("kea.conf", 30, 20);
|
|
|
|
+ EXPECT_EQ("kea.conf:30:20", position.str());
|
|
|
|
+
|
|
|
|
+ Element::Position position2("another.conf", 123, 24);
|
|
|
|
+ EXPECT_EQ("another.conf:123:24", position2.str());
|
|
|
|
+}
|
|
|
|
+
|
|
TEST(Element, type) {
|
|
TEST(Element, type) {
|
|
// this tests checks whether the getType() function returns the
|
|
// this tests checks whether the getType() function returns the
|
|
// correct type
|
|
// correct type
|
|
@@ -931,22 +940,24 @@ TEST(Element, merge) {
|
|
}
|
|
}
|
|
|
|
|
|
TEST(Element, getPosition) {
|
|
TEST(Element, getPosition) {
|
|
|
|
+ std::istringstream ss("{\n"
|
|
|
|
+ " \"a\": 2,\n"
|
|
|
|
+ " \"b\":true,\n"
|
|
|
|
+ " \"cy\": \"a string\",\n"
|
|
|
|
+ " \"dyz\": {\n"
|
|
|
|
+ "\n"
|
|
|
|
+ " \"e\": 3,\n"
|
|
|
|
+ " \"f\": null\n"
|
|
|
|
+ "\n"
|
|
|
|
+ " },\n"
|
|
|
|
+ " \"g\": [ 5, 6,\n"
|
|
|
|
+ " 7 ]\n"
|
|
|
|
+ "}\n");
|
|
|
|
+
|
|
// Create a JSON string holding different type of values. Some of the
|
|
// Create a JSON string holding different type of values. Some of the
|
|
// values in the config string are not aligned, so as we can check that
|
|
// values in the config string are not aligned, so as we can check that
|
|
// the position is set correctly for the elements.
|
|
// the position is set correctly for the elements.
|
|
- ElementPtr top = Element::fromJSON("{\n"
|
|
|
|
- " \"a\": 2,\n"
|
|
|
|
- " \"b\":true,\n"
|
|
|
|
- " \"cy\": \"a string\",\n"
|
|
|
|
- " \"dyz\": {\n"
|
|
|
|
- "\n"
|
|
|
|
- " \"e\": 3,\n"
|
|
|
|
- " \"f\": null\n"
|
|
|
|
- "\n"
|
|
|
|
- " },\n"
|
|
|
|
- " \"g\": [ 5, 6,\n"
|
|
|
|
- " 7 ]\n"
|
|
|
|
- "}\n");
|
|
|
|
|
|
+ ElementPtr top = Element::fromJSON(ss, "kea.conf");
|
|
ASSERT_TRUE(top);
|
|
ASSERT_TRUE(top);
|
|
|
|
|
|
// Element "a"
|
|
// Element "a"
|
|
@@ -954,36 +965,42 @@ TEST(Element, getPosition) {
|
|
ASSERT_TRUE(level1_el);
|
|
ASSERT_TRUE(level1_el);
|
|
EXPECT_EQ(2, level1_el->getPosition().line_);
|
|
EXPECT_EQ(2, level1_el->getPosition().line_);
|
|
EXPECT_EQ(11, level1_el->getPosition().pos_);
|
|
EXPECT_EQ(11, level1_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level1_el->getPosition().file_);
|
|
|
|
|
|
// Element "b"
|
|
// Element "b"
|
|
level1_el = top->get("b");
|
|
level1_el = top->get("b");
|
|
ASSERT_TRUE(level1_el);
|
|
ASSERT_TRUE(level1_el);
|
|
EXPECT_EQ(3, level1_el->getPosition().line_);
|
|
EXPECT_EQ(3, level1_el->getPosition().line_);
|
|
EXPECT_EQ(9, level1_el->getPosition().pos_);
|
|
EXPECT_EQ(9, level1_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level1_el->getPosition().file_);
|
|
|
|
|
|
// Element "cy"
|
|
// Element "cy"
|
|
level1_el = top->get("cy");
|
|
level1_el = top->get("cy");
|
|
ASSERT_TRUE(level1_el);
|
|
ASSERT_TRUE(level1_el);
|
|
EXPECT_EQ(4, level1_el->getPosition().line_);
|
|
EXPECT_EQ(4, level1_el->getPosition().line_);
|
|
EXPECT_EQ(11, level1_el->getPosition().pos_);
|
|
EXPECT_EQ(11, level1_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level1_el->getPosition().file_);
|
|
|
|
|
|
// Element "dyz"
|
|
// Element "dyz"
|
|
level1_el = top->get("dyz");
|
|
level1_el = top->get("dyz");
|
|
ASSERT_TRUE(level1_el);
|
|
ASSERT_TRUE(level1_el);
|
|
EXPECT_EQ(5, level1_el->getPosition().line_);
|
|
EXPECT_EQ(5, level1_el->getPosition().line_);
|
|
EXPECT_EQ(13, level1_el->getPosition().pos_);
|
|
EXPECT_EQ(13, level1_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level1_el->getPosition().file_);
|
|
|
|
|
|
// Element "e" is a sub element of "dyz".
|
|
// Element "e" is a sub element of "dyz".
|
|
ConstElementPtr level2_el = level1_el->get("e");
|
|
ConstElementPtr level2_el = level1_el->get("e");
|
|
ASSERT_TRUE(level2_el);
|
|
ASSERT_TRUE(level2_el);
|
|
EXPECT_EQ(7, level2_el->getPosition().line_);
|
|
EXPECT_EQ(7, level2_el->getPosition().line_);
|
|
EXPECT_EQ(12, level2_el->getPosition().pos_);
|
|
EXPECT_EQ(12, level2_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level2_el->getPosition().file_);
|
|
|
|
|
|
// Element "f" is also a sub element of "dyz"
|
|
// Element "f" is also a sub element of "dyz"
|
|
level2_el = level1_el->get("f");
|
|
level2_el = level1_el->get("f");
|
|
ASSERT_TRUE(level2_el);
|
|
ASSERT_TRUE(level2_el);
|
|
EXPECT_EQ(8, level2_el->getPosition().line_);
|
|
EXPECT_EQ(8, level2_el->getPosition().line_);
|
|
EXPECT_EQ(14, level2_el->getPosition().pos_);
|
|
EXPECT_EQ(14, level2_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level2_el->getPosition().file_);
|
|
|
|
|
|
// Element "g" is a list.
|
|
// Element "g" is a list.
|
|
level1_el = top->get("g");
|
|
level1_el = top->get("g");
|
|
@@ -991,24 +1008,28 @@ TEST(Element, getPosition) {
|
|
EXPECT_EQ(11, level1_el->getPosition().line_);
|
|
EXPECT_EQ(11, level1_el->getPosition().line_);
|
|
// Position indicates where the values start (excluding the "[" character)"
|
|
// Position indicates where the values start (excluding the "[" character)"
|
|
EXPECT_EQ(11, level1_el->getPosition().pos_);
|
|
EXPECT_EQ(11, level1_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level1_el->getPosition().file_);
|
|
|
|
|
|
// First element from the list.
|
|
// First element from the list.
|
|
level2_el = level1_el->get(0);
|
|
level2_el = level1_el->get(0);
|
|
ASSERT_TRUE(level2_el);
|
|
ASSERT_TRUE(level2_el);
|
|
EXPECT_EQ(11, level2_el->getPosition().line_);
|
|
EXPECT_EQ(11, level2_el->getPosition().line_);
|
|
EXPECT_EQ(12, level2_el->getPosition().pos_);
|
|
EXPECT_EQ(12, level2_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level2_el->getPosition().file_);
|
|
|
|
|
|
// Second element from the list.
|
|
// Second element from the list.
|
|
level2_el = level1_el->get(1);
|
|
level2_el = level1_el->get(1);
|
|
ASSERT_TRUE(level2_el);
|
|
ASSERT_TRUE(level2_el);
|
|
EXPECT_EQ(11, level2_el->getPosition().line_);
|
|
EXPECT_EQ(11, level2_el->getPosition().line_);
|
|
EXPECT_EQ(15, level2_el->getPosition().pos_);
|
|
EXPECT_EQ(15, level2_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level2_el->getPosition().file_);
|
|
|
|
|
|
// Third element from the list.
|
|
// Third element from the list.
|
|
level2_el = level1_el->get(2);
|
|
level2_el = level1_el->get(2);
|
|
ASSERT_TRUE(level2_el);
|
|
ASSERT_TRUE(level2_el);
|
|
EXPECT_EQ(12, level2_el->getPosition().line_);
|
|
EXPECT_EQ(12, level2_el->getPosition().line_);
|
|
EXPECT_EQ(14, level2_el->getPosition().pos_);
|
|
EXPECT_EQ(14, level2_el->getPosition().pos_);
|
|
|
|
+ EXPECT_EQ("kea.conf", level2_el->getPosition().file_);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|