]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1077] better Element.sortMaps unit test
authorAndrei Pavel <andrei@isc.org>
Thu, 22 Jul 2021 19:29:28 +0000 (22:29 +0300)
committerTomek Mrugalski <tomek@isc.org>
Fri, 23 Jul 2021 10:45:36 +0000 (10:45 +0000)
src/lib/cc/tests/data_unittests.cc

index 253c2d889354e74488393a2297f83dcf57d405e3..2eceb1a4821f9dd2d12ab8e34bd1f647f1d39c2d 100644 (file)
@@ -1420,17 +1420,45 @@ TEST(Element, sortStrings) {
 }
 
 TEST(Element, sortMaps) {
-    ElementPtr e1(Element::fromJSON(R"({"id": 1, "subnet": "10.0.1.0/24"})"));
+    ElementPtr e1(Element::fromJSON(R"({"id": 1, "subnet": "10.0.2.0/24"})"));
     ElementPtr e2(Element::fromJSON(R"({"id": 2, "subnet": "10.0.1.0/24"})"));
-    ElementPtr l(Element::createList());
+    ElementPtr l;
+
+    // Test sorting by "id". Order shouldn't change.
+    l = Element::createList();
+    l->add(e1);
+    l->add(e2);
+    boost::dynamic_pointer_cast<ListElement>(l)->sort("id");
+    ASSERT_EQ(l->size(), 2);
+    EXPECT_EQ(*l->get(0), *e1);
+    EXPECT_EQ(*l->get(1), *e2);
+
+    // Test sorting by "id". Order should change.
+    l = Element::createList();
     l->add(e2);
     l->add(e1);
-    EXPECT_EQ(*l->get(0), *e2);
-    EXPECT_EQ(*l->get(1), *e1);
     boost::dynamic_pointer_cast<ListElement>(l)->sort("id");
     ASSERT_EQ(l->size(), 2);
     EXPECT_EQ(*l->get(0), *e1);
     EXPECT_EQ(*l->get(1), *e2);
+
+    // Test sorting by "subnet". Order should change.
+    l = Element::createList();
+    l->add(e1);
+    l->add(e2);
+    boost::dynamic_pointer_cast<ListElement>(l)->sort("subnet");
+    ASSERT_EQ(l->size(), 2);
+    EXPECT_EQ(*l->get(0), *e2);
+    EXPECT_EQ(*l->get(1), *e1);
+
+    // Test sorting by "subnet". Order shouldn't change.
+    l = Element::createList();
+    l->add(e2);
+    l->add(e1);
+    boost::dynamic_pointer_cast<ListElement>(l)->sort("subnet");
+    ASSERT_EQ(l->size(), 2);
+    EXPECT_EQ(*l->get(0), *e2);
+    EXPECT_EQ(*l->get(1), *e1);
 }
 
 TEST(Element, removeEmptyContainersRecursively) {