Code

store, frontend: Make IS (NOT) NULL an unary operator on expressions.
[sysdb.git] / t / unit / core / store_lookup_test.c
index e5a0a74c4becffff53d479a174d60daf97bf2b4d..2e1e6d8b1a536dddffd341cde2e4f0a50611c76b 100644 (file)
@@ -371,6 +371,12 @@ START_TEST(test_obj_cond)
                const sdb_data_t value;
                int expected_lt, expected_le, expected_eq, expected_ge, expected_gt;
        } golden_data[] = {
+               { "b", SDB_FIELD_NAME,
+                       { SDB_TYPE_STRING, { .string = "a" } },   0, 0, 0, 1, 1 },
+               { "b", SDB_FIELD_NAME,
+                       { SDB_TYPE_STRING, { .string = "b" } },   0, 1, 1, 1, 0 },
+               { "b", SDB_FIELD_NAME,
+                       { SDB_TYPE_STRING, { .string = "c" } },   1, 1, 0, 0, 0 },
                /* last-update = 1 for all objects */
                { "a", SDB_FIELD_LAST_UPDATE,
                        { SDB_TYPE_DATETIME, { .datetime = 1 } }, 0, 1, 1, 1, 0 },
@@ -453,7 +459,7 @@ START_TEST(test_obj_cond)
 
                        status = sdb_store_matcher_matches(m, obj, /* filter */ NULL);
                        fail_unless(status == tests[j].expected,
-                                       "sdb_store_matcher_matches(%s, <obj>, NULL) = %d; "
+                                       "sdb_store_matcher_matches(%s, <host '%s'>, NULL) = %d; "
                                        "expected: %d",
                                        sdb_store_matcher_tostring(m, m_str, sizeof(m_str)),
                                        status, tests[j].expected);
@@ -618,8 +624,6 @@ START_TEST(test_parse_cmp)
 /*             { "attribute", "attr", "=",  &attrname,   MATCHER_EQ }, */
                { "attribute", "attr", ">=", &attrname,   MATCHER_GE },
                { "attribute", "attr", ">",  &attrname,   MATCHER_GT },
-               { "attribute", "attr", "IS", NULL,        MATCHER_ISNULL },
-               { "attribute", "attr", "IS", &attrname,   -1 },
                { "foo",       NULL,   "=",  &attrname,   -1 },
                { "foo",       "attr", "=",  &attrname,   -1 },
        };
@@ -651,7 +655,7 @@ START_TEST(test_parse_cmp)
 
                fail_unless(check != NULL,
                                "sdb_store_matcher_parse_cmp(%s, %s, %s, %s) = %p; "
-                               "expected: NULL", golden_data[i].obj_type,
+                               "expected: <expr>", golden_data[i].obj_type,
                                golden_data[i].attr, golden_data[i].op, buf, check);
                fail_unless(M(check)->type == golden_data[i].expected,
                                "sdb_store_matcher_parse_cmp(%s, %s, %s, %s) returned matcher "
@@ -675,6 +679,12 @@ START_TEST(test_parse_field_cmp)
                const sdb_data_t *value;
                int expected;
        } golden_data[] = {
+               { "name",        "<",  &string,   MATCHER_LT },
+               { "name",        "<=", &string,   MATCHER_LE },
+               { "name",        "=",  &string,   MATCHER_EQ },
+               { "name",        ">=", &string,   MATCHER_GE },
+               { "name",        ">",  &string,   MATCHER_GT },
+               { "name",        "!=", &string,   MATCHER_NOT },
                { "last_update", "<",  &datetime, MATCHER_LT },
                { "last_update", "<=", &datetime, MATCHER_LE },
                { "last_update", "=",  &datetime, MATCHER_EQ },
@@ -822,13 +832,13 @@ START_TEST(test_scan)
                { "attribute[k1] = 'v1'", NULL,      1,
                        "ATTR\\[k1\\]\\{ VALUE\\{ 'v1', \\(nil\\) \\} \\}" },
                { "attribute[k1] IS NULL", NULL,     2,
-                       "\\(IS NULL, ATTR\\[k1\\]\\)" },
+                       "\\(IS NULL\\)" },
                { "attribute[x1] IS NULL", NULL,     3,
-                       "\\(IS NULL, ATTR\\[x1\\]\\)" },
+                       "\\(IS NULL\\)" },
                { "attribute[k1] IS NOT NULL", NULL, 1,
-                       "\\(NOT, \\(IS NULL, ATTR\\[k1\\]\\)\\)" },
+                       "\\(IS NOT NULL\\)" },
                { "attribute[x1] IS NOT NULL", NULL, 0,
-                       "\\(NOT, \\(IS NULL, ATTR\\[x1\\]\\)\\)" },
+                       "\\(IS NOT NULL\\)" },
                { "attribute[k2] < 123", NULL,       0,
                        "ATTR\\[k2\\]\\{ < 123 \\}" },
                { "attribute[k2] <= 123", NULL,      1,