X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=t%2Funit%2Fparser%2Fparser_test.c;h=4dcf684de06cc6c3b508fff98401883913bf7e6d;hp=f363dc2b6d3e9f51ca87780026b8ec051bd918e7;hb=bbd1b997cf153d54878efebc182bd88f1c64d45c;hpb=cc35394b0c4af9ccfbe7b0a18713758a9f29d247 diff --git a/t/unit/parser/parser_test.c b/t/unit/parser/parser_test.c index f363dc2..4dcf684 100644 --- a/t/unit/parser/parser_test.c +++ b/t/unit/parser/parser_test.c @@ -372,7 +372,7 @@ struct { "ANY service.service.name = 's'", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, - /* NULL */ + /* NULL / TRUE / FALSE */ { "LOOKUP hosts MATCHING " "attribute['foo'] " "IS NULL", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, @@ -384,6 +384,24 @@ struct { "IS NULL", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, { "LOOKUP hosts MATCHING " "ANY service.name IS NULL", -1, -1, 0, 0 }, + { "LOOKUP hosts MATCHING " + "attribute['foo'] " + "IS TRUE", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, + { "LOOKUP hosts MATCHING " + "attribute['foo'] " + "IS NOT TRUE", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, + { "LOOKUP hosts MATCHING " + "NOT attribute['foo'] " + "IS TRUE", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, + { "LOOKUP hosts MATCHING " + "attribute['foo'] " + "IS FALSE", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, + { "LOOKUP hosts MATCHING " + "attribute['foo'] " + "IS NOT FALSE", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, + { "LOOKUP hosts MATCHING " + "NOT attribute['foo'] " + "IS FALSE", -1, 1, SDB_AST_TYPE_LOOKUP, SDB_HOST }, /* invalid numeric constants */ { "LOOKUP hosts MATCHING " @@ -530,6 +548,14 @@ struct { "name + 1 IS NULL", -1, -1, 0, 0 }, { "LOOKUP hosts FILTER " "name + 1 IS NULL", -1, -1, 0, 0 }, + { "LOOKUP hosts MATCHING " + "name + 1 IS TRUE", -1, -1, 0, 0 }, + { "LOOKUP hosts FILTER " + "name + 1 IS TRUE", -1, -1, 0, 0 }, + { "LOOKUP hosts MATCHING " + "name + 1 IS FALSE", -1, -1, 0, 0 }, + { "LOOKUP hosts FILTER " + "name + 1 IS FALSE", -1, -1, 0, 0 }, /* invalid iterators */ { "LOOKUP hosts MATCHING " @@ -635,7 +661,7 @@ START_TEST(test_parse) sdb_strbuf_t *errbuf = sdb_strbuf_create(64); sdb_llist_t *check; sdb_ast_node_t *node; - sdb_store_matcher_t *m; + sdb_store_query_t *q; _Bool ok; check = sdb_parser_parse(parse_data[_i].query, @@ -698,13 +724,13 @@ START_TEST(test_parse) } /* TODO: this should move into front-end specific tests */ - m = sdb_store_query_prepare(node); - fail_unless(m != NULL, - "sdb_store_query_prepare(AST<%s>) = NULL; expected: ", + q = sdb_store_query_prepare(node); + fail_unless(q != NULL, + "sdb_store_query_prepare(AST<%s>) = NULL; expected: ", parse_data[_i].query); sdb_object_deref(SDB_OBJ(node)); - sdb_object_deref(SDB_OBJ(m)); + sdb_object_deref(SDB_OBJ(q)); sdb_llist_destroy(check); sdb_strbuf_destroy(errbuf); } @@ -832,9 +858,13 @@ struct { "2014-08-16 17:23", -1, SDB_AST_EQ }, { "attribute['foo'] = " "2014-08-16 17:23:53", -1, SDB_AST_EQ }, - /* NULL */ + /* NULL / TRUE / FALSE */ { "attribute['foo'] IS NULL", -1, SDB_AST_ISNULL }, { "attribute['foo'] IS NOT NULL", -1, SDB_AST_NOT }, + { "attribute['foo'] IS TRUE", -1, SDB_AST_ISTRUE }, + { "attribute['foo'] IS NOT TRUE", -1, SDB_AST_NOT }, + { "attribute['foo'] IS FALSE", -1, SDB_AST_ISFALSE }, + { "attribute['foo'] IS NOT FALSE", -1, SDB_AST_NOT }, /* array expressions */ { "backend < ['a']", -1, SDB_AST_LT }, { "backend <= ['a']", -1, SDB_AST_LE },