Code

store: Let sdb_store_matcher_matches return true if it matches.
[sysdb.git] / t / core / store_lookup_test.c
index 74274f80c0cf0f8fc6ec75b7a4dcc909c1c19449..f95598e27dcf222be6ef0dfe42f80e3e9f137d7c 100644 (file)
@@ -101,107 +101,107 @@ START_TEST(test_store_match)
                {
                        /* host */ NULL, NULL,
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, 0
+                       /* attr */ NULL, NULL, NULL, NULL, 1
                },
                {
                        /* host */ "a", NULL,
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, 0
+                       /* attr */ NULL, NULL, NULL, NULL, 1
                },
                {
                        /* host */ "b", NULL,
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ NULL, "^a$",
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, 0
+                       /* attr */ NULL, NULL, NULL, NULL, 1
                },
                {
                        /* host */ NULL, "^b$",
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, 0
+                       /* attr */ NULL, NULL, NULL, NULL, 1
                },
                {
                        /* host */ "a", "^b$",
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "b", "^a$",
                        /* svc  */ NULL, NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, 0
+                       /* attr */ NULL, NULL, NULL, NULL, 1
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ NULL, "^s1$",
-                       /* attr */ NULL, NULL, NULL, NULL, 0
+                       /* attr */ NULL, NULL, NULL, NULL, 1
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", "^s1$",
-                       /* attr */ NULL, NULL, NULL, NULL, 0
+                       /* attr */ NULL, NULL, NULL, NULL, 1
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "x1", NULL,
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ NULL, "x",
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "x1", "x",
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", "x",
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "x1", "s",
-                       /* attr */ NULL, NULL, NULL, NULL, -1
+                       /* attr */ NULL, NULL, NULL, NULL, 0
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", "^s1$",
-                       /* attr */ "k1", NULL, NULL, NULL, 0
+                       /* attr */ "k1", NULL, NULL, NULL, 1
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", "^s1$",
-                       /* attr */ NULL, "^k", NULL, NULL, 0
+                       /* attr */ NULL, "^k", NULL, NULL, 1
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", "^s1$",
-                       /* attr */ NULL, NULL, "v1", NULL, 0
+                       /* attr */ NULL, NULL, "v1", NULL, 1
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", "^s1$",
-                       /* attr */ NULL, NULL, NULL, "^v1$", 0
+                       /* attr */ NULL, NULL, NULL, "^v1$", 1
                },
                {
                        /* host */ "a", "^a$",
                        /* svc  */ "s1", "^s1$",
-                       /* attr */ "k1", "1", "v1", "1", 0
+                       /* attr */ "k1", "1", "v1", "1", 1
                },
        };
 
@@ -262,14 +262,14 @@ START_TEST(test_store_match_op)
                sdb_store_matcher_t *right;
                int expected;
        } golden_data[] = {
-               { "OR",  always, always,  0 },
-               { "OR",  always, never,   0 },
-               { "OR",  never,  always,  0 },
-               { "OR",  never,  never,  -1 },
-               { "AND", always, always,  0 },
-               { "AND", always, never,  -1 },
-               { "AND", never,  always, -1 },
-               { "AND", never,  never,  -1 },
+               { "OR",  always, always, 1 },
+               { "OR",  always, never,  1 },
+               { "OR",  never,  always, 1 },
+               { "OR",  never,  never,  0 },
+               { "AND", always, always, 1 },
+               { "AND", always, never,  0 },
+               { "AND", never,  always, 0 },
+               { "AND", never,  never,  0 },
        };
 
        int status;
@@ -278,10 +278,10 @@ START_TEST(test_store_match_op)
        obj = sdb_store_get_host("a");
 
        status = sdb_store_matcher_matches(always, obj);
-       fail_unless(status == 0,
+       fail_unless(status == 1,
                        "INTERNAL ERROR: 'always' did not match host");
        status = sdb_store_matcher_matches(never, obj);
-       fail_unless(status < 0,
+       fail_unless(status == 0,
                        "INTERNAL ERROR: 'never' matches host");
 
        for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
@@ -317,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)
 {
@@ -327,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;