X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=t%2Ffrontend%2Fparser_test.c;h=f64b9ebca95b05e66bb568a9c6535f72cc7f7462;hp=705e7322370ee370fb0d3c2434f85a5668d44cb4;hb=3ba81224dac4d31ea5ad651db569543825ea5078;hpb=a3d532078f112a7669819506670bd6a0385bb91a diff --git a/t/frontend/parser_test.c b/t/frontend/parser_test.c index 705e732..f64b9eb 100644 --- a/t/frontend/parser_test.c +++ b/t/frontend/parser_test.c @@ -60,13 +60,22 @@ START_TEST(test_parse) { "LOOKUP hosts WHERE " "host.name = 'host'", -1, 1, CONNECTION_LOOKUP }, + { "LOOKUP hosts WHERE NOT " + "host.name = 'host'", -1, 1, CONNECTION_LOOKUP }, { "LOOKUP hosts WHERE " "host.name =~ 'p' AND " "service.name =~ 'p'", -1, 1, CONNECTION_LOOKUP }, + { "LOOKUP hosts WHERE NOT " + "host.name =~ 'p' AND " + "service.name =~ 'p'", -1, 1, CONNECTION_LOOKUP }, { "LOOKUP hosts WHERE " "host.name =~ 'p' AND " "service.name =~ 'p' OR " "service.name =~ 'r'", -1, 1, CONNECTION_LOOKUP }, + { "LOOKUP hosts WHERE NOT " + "host.name =~ 'p' AND " + "service.name =~ 'p' OR " + "service.name =~ 'r'", -1, 1, CONNECTION_LOOKUP }, /* comments */ { "/* some comment */", -1, 0, 0 }, @@ -133,12 +142,27 @@ START_TEST(test_parse_matcher) /* valid expressions */ { "host.name = 'localhost'", -1, MATCHER_HOST }, + { "host.name != 'localhost'", -1, MATCHER_NOT }, + { "host.name =~ 'host'", -1, MATCHER_HOST }, + { "host.name !~ 'host'", -1, MATCHER_NOT }, { "host.name = 'localhost' -- foo", -1, MATCHER_HOST }, { "host.name = 'host' ", 18, MATCHER_HOST }, + /* match hosts by service */ + { "service.name = 'name'", -1, MATCHER_HOST }, + { "service.name != 'name'", -1, MATCHER_NOT }, + { "service.name =~ 'pattern'", -1, MATCHER_HOST }, + { "service.name !~ 'pattern'", -1, MATCHER_NOT }, + /* match hosts by attribute */ + { "attribute.name = 'name'", -1, MATCHER_HOST }, + { "attribute.name != 'name'", -1, MATCHER_NOT }, + { "attribute.name =~ 'pattern'", -1, MATCHER_HOST }, + { "attribute.name !~ 'pattern'", -1, MATCHER_NOT }, + /* composite expressions */ { "host.name =~ 'pattern' AND " "service.name =~ 'pattern'", -1, MATCHER_AND }, { "host.name =~ 'pattern' OR " "service.name =~ 'pattern'", -1, MATCHER_OR }, + { "NOT host.name = 'host'", -1, MATCHER_NOT }, /* check operator precedence */ { "host.name = 'name' OR " @@ -153,6 +177,16 @@ START_TEST(test_parse_matcher) "service.name = 'name' OR " "attribute.name = 'name' AND " "attribute.foo = 'bar'", -1, MATCHER_OR }, + { "(host.name = 'name' OR " + "service.name = 'name') AND " + "(attribute.name = 'name' OR " + "attribute.foo = 'bar')", -1, MATCHER_AND }, + { "NOT host.name = 'name' OR " + "service.name = 'name'", -1, MATCHER_OR }, + { "NOT host.name = 'name' OR " + "NOT service.name = 'name'", -1, MATCHER_OR }, + { "NOT (host.name = 'name' OR " + "NOT service.name = 'name')", -1, MATCHER_NOT }, /* syntax errors */ { "LIST", -1, -1 },