Code

frontend/parser: Let ‘LIST’ and ‘FETCH’ accept optional filters as well.
[sysdb.git] / t / unit / frontend / parser_test.c
index a10185469f2397accd253425025dbf9fe097c62c..bca86452dffc44afe22f2fb5b3418eaa7e6f42f3 100644 (file)
@@ -53,11 +53,17 @@ START_TEST(test_parse)
 
                /* valid commands */
                { "FETCH 'host'",        -1,  1, CONNECTION_FETCH  },
+               { "FETCH 'host' FILTER "
+                 "host = 'host'",       -1,  1, CONNECTION_FETCH  },
+
                { "LIST",                -1,  1, CONNECTION_LIST   },
                { "LIST -- comment",     -1,  1, CONNECTION_LIST   },
                { "LIST;",               -1,  1, CONNECTION_LIST   },
                { "LIST; INVALID",        5,  1, CONNECTION_LIST   },
+               { "LIST FILTER "
+                 "host = 'host'",       -1,  1, CONNECTION_LIST   },
 
+               { "LOOKUP hosts",        -1,  1, CONNECTION_LOOKUP },
                { "LOOKUP hosts MATCHING "
                  "host = 'host'",       -1,  1, CONNECTION_LOOKUP },
                { "LOOKUP hosts MATCHING NOT "
@@ -86,6 +92,10 @@ START_TEST(test_parse)
                { "LOOKUP hosts MATCHING "
                  "host =~ 'p' "
                  "FILTER NOT :age>1D",  -1,  1, CONNECTION_LOOKUP },
+               { "LOOKUP hosts MATCHING "
+                 "host =~ 'p' "
+                 "FILTER :age>"
+                 ":interval",           -1,  1, CONNECTION_LOOKUP },
 
                /* numeric constants */
                { "LOOKUP hosts MATCHING "
@@ -180,8 +190,18 @@ START_TEST(test_parse)
                { "LIST; INVALID",        8, -1, 0 },
                { "/* some incomplete",  -1, -1, 0 },
 
-               { "LOOKUP hosts",        -1, -1, 0 },
+               { "LIST MATCHING "
+                 "host = 'host'",       -1, -1, 0 },
+               { "FETCH 'host' MATCHING "
+                 "host = 'host'",       -1, -1, 0 },
+
+               { "LOOKUP foo",          -1, -1, 0 },
+               { "LOOKUP foo MATCHING "
+                 "host = 'host'",       -1, -1, 0 },
+               { "LOOKUP foo FILTER "
+                 "host = 'host'",       -1, -1, 0 },
                { "LOOKUP foo MATCHING "
+                 "host = 'host' FILTER "
                  "host = 'host'",       -1, -1, 0 },
        };
 
@@ -275,6 +295,7 @@ START_TEST(test_parse_matcher)
                { ":age > 1M",                 -1,  MATCHER_GT },
                { ":age != 20Y",               -1,  MATCHER_NOT },
                { ":backend != 'be'",          -1,  MATCHER_NOT },
+               { ":age <= 2 * :interval",     -1,  MATCHER_LE },
 
                /* check operator precedence */
                { "host = 'name' OR "