]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add "flat list" nested attributes to tests of fr_pair_find_by_da_nested()
authorNick Porter <nick@portercomputing.co.uk>
Tue, 16 Aug 2022 14:33:18 +0000 (15:33 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Tue, 16 Aug 2022 15:58:58 +0000 (16:58 +0100)
src/lib/util/pair_tests.c

index fd67506d8cfc84955d202cb0f07ab2ede4d2d445..b443ab9072b944a22b433e0f683aba1e3d86121e 100644 (file)
@@ -260,7 +260,7 @@ static void test_fr_pair_find_by_child_num_idx(void)
 
 static void test_fr_pair_find_by_da_nested(void)
 {
-       fr_pair_t       *vp1, *vp2, *vp3, *vp_found;
+       fr_pair_t       *vp1, *vp2, *vp3, *vp4, *vp5, *vp_found;
        fr_pair_list_t  local_pairs;
 
        fr_pair_list_init(&local_pairs);
@@ -318,6 +318,38 @@ static void test_fr_pair_find_by_da_nested(void)
        TEST_CASE("Find child node after third TLV");
        TEST_CHECK(vp_found == NULL);
 
+       /*
+        *      Add some "flat list" attributes
+        */
+       MEM(vp4 = fr_pair_afrom_da(autofree, fr_dict_attr_test_nested_leaf_string));
+       fr_pair_prepend(&local_pairs, vp4);
+       MEM(vp5 = fr_pair_afrom_da(autofree, fr_dict_attr_test_nested_leaf_string));
+       fr_pair_append(&local_pairs, vp5);
+
+       /*
+        *      Repeat search 5 times to find all instances and then NULL
+        *      fr_pair_find_by_da_nested searches nested first then flat
+        */
+       vp_found = fr_pair_find_by_da_nested(&local_pairs, NULL, fr_dict_attr_test_nested_leaf_string);
+       TEST_CASE("Find child node in first TLV");
+       TEST_CHECK(vp_found == vp1);
+
+       vp_found = fr_pair_find_by_da_nested(&local_pairs, vp_found, fr_dict_attr_test_nested_leaf_string);
+       TEST_CASE("Find child node in third TLV");
+       TEST_CHECK(vp_found == vp3);
+
+       vp_found = fr_pair_find_by_da_nested(&local_pairs, vp_found, fr_dict_attr_test_nested_leaf_string);
+       TEST_CASE("Find first entry in \"flat\" list");
+       TEST_CHECK(vp_found == vp4);
+
+       vp_found = fr_pair_find_by_da_nested(&local_pairs, vp_found, fr_dict_attr_test_nested_leaf_string);
+       TEST_CASE("Find second \"flat\" list entry");
+       TEST_CHECK(vp_found == vp5);
+
+       vp_found = fr_pair_find_by_da_nested(&local_pairs, vp_found, fr_dict_attr_test_nested_leaf_string);
+       TEST_CASE("Find NULL at end of list");
+       TEST_CHECK(vp_found == NULL);
+
        fr_pair_list_free(&local_pairs);
 }