Code

store: Added sdb_store_lookup().
[sysdb.git] / t / core / store_lookup_test.c
index 48bb4832f4b81e723743d27cefd1c705e40e93a5..465bb08ca079004604ddc08d694d0192d509043c 100644 (file)
@@ -293,8 +293,10 @@ START_TEST(test_store_match_op)
                else if (! strcmp(golden_data[i].op, "AND"))
                        m = sdb_store_con_matcher(golden_data[i].left,
                                        golden_data[i].right);
-               else
+               else {
                        fail("INTERNAL ERROR: unexpected operator %s", golden_data[i].op);
+                       continue;
+               }
 
 #define TO_NAME(v) (((v) == always) ? "always" \
                : ((v) == never) ? "never" : "<unknown>")
@@ -315,6 +317,35 @@ START_TEST(test_store_match_op)
 }
 END_TEST
 
+static int
+lookup_cb(sdb_store_base_t *obj, void *user_data)
+{
+       intptr_t *i = user_data;
+
+       fail_unless(obj != NULL,
+                       "sdb_store_lookup callback received NULL obj; expected: "
+                       "<store base obj>");
+       fail_unless(i != NULL,
+                       "sdb_store_lookup callback received NULL user_data; "
+                       "expected: <pointer to data>");
+
+       ++(*i);
+       return 0;
+} /* lookup_cb */
+
+START_TEST(test_lookup)
+{
+       intptr_t i = 0;
+       int check;
+
+       check = sdb_store_lookup(NULL, lookup_cb, &i);
+       fail_unless(check == 0,
+                       "sdb_store_lookup() = %d; expected: 0", check);
+       fail_unless(i == 3,
+                       "sdb_store_lookup called callback %d times; expected: 3", (int)i);
+}
+END_TEST
+
 Suite *
 core_store_lookup_suite(void)
 {
@@ -325,6 +356,7 @@ core_store_lookup_suite(void)
        tcase_add_checked_fixture(tc, populate, sdb_store_clear);
        tcase_add_test(tc, test_store_match);
        tcase_add_test(tc, test_store_match_op);
+       tcase_add_test(tc, test_lookup);
        suite_add_tcase(s, tc);
 
        return s;