- for (i = 0; query_str[i].query; i++)
- {
- struct ccl_token *token_list =
- ccl_parser_tokenize(parser, query_str[i].query);
- struct ccl_rpn_node *rpn = ccl_parser_find(parser, token_list);
- ccl_token_del (token_list);
- if (rpn)
- {
- WRBUF wrbuf = wrbuf_alloc();
- ccl_pquery(wrbuf, rpn);
-
- if (!query_str[i].result)
- {
- printf ("Failed %s\n", query_str[i].query);
- printf (" got:%s:\n", wrbuf_buf(wrbuf));
- printf (" expected failure\n");
- exit(3);
- }
- else if (strcmp(wrbuf_buf(wrbuf), query_str[i].result))
- {
- printf ("Failed %s\n", query_str[i].query);
- printf (" got:%s:\n", wrbuf_buf(wrbuf));
- printf (" expected:%s:\n", query_str[i].result);
- exit(2);
- }
- ccl_rpn_delete(rpn);
- wrbuf_free(wrbuf, 1);
- }
- else if (query_str[i].result)
- {
- printf ("Failed %s\n", query_str[i].query);
- printf (" got failure\n");
- printf (" expected:%s:\n", query_str[i].result);
- exit(4);
- }
- }
- ccl_parser_destroy (parser);
+ YAZ_CHECK(tst_ccl_query(bibset, "a%2b",
+ "@prox 0 2 0 2 k 2 "
+ "@attr 4=2 @attr 1=1016 a "
+ "@attr 4=2 @attr 1=1016 b "));
+
+ YAZ_CHECK(tst_ccl_query(bibset, "a%19b",
+ "@prox 0 19 0 2 k 2 "
+ "@attr 4=2 @attr 1=1016 a "
+ "@attr 4=2 @attr 1=1016 b "));
+
+ YAZ_CHECK(tst_ccl_query(bibset, "spid%æserne",
+ "@prox 0 1 0 2 k 2 "
+ "@attr 4=2 @attr 1=1016 spid "
+ "@attr 4=2 @attr 1=1016 æserne "));
+
+ YAZ_CHECK(tst_ccl_query(bibset, "a!b",
+ "@prox 0 1 1 2 k 2 "
+ "@attr 4=2 @attr 1=1016 a "
+ "@attr 4=2 @attr 1=1016 b "));
+ YAZ_CHECK(tst_ccl_query(bibset, "a!2b",
+ "@prox 0 2 1 2 k 2 "
+ "@attr 4=2 @attr 1=1016 a "
+ "@attr 4=2 @attr 1=1016 b "));
+
+ YAZ_CHECK(tst_ccl_query(bibset, "date=1980", "@attr 2=3 1980 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "date=234-1990", "@and @attr 2=4 234 @attr 2=2 1990 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "date=234- 1990", "@and @attr 2=4 234 @attr 2=2 1990 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "date=234 -1990", "@and @attr 2=4 234 @attr 2=2 1990 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "date=234 - 1990", "@and @attr 2=4 234 @attr 2=2 1990 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "date=-1980", "@attr 2=2 1980 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "date=- 1980", "@attr 2=2 1980 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "x=-1980", "@attr 2=3 -1980 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "x=- 1980", "@attr 2=2 1980 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "x= -1980", "@attr 2=3 -1980 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "x=234-1990", "@attr 2=3 234-1990 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "x=234 - 1990", "@and @attr 2=4 234 @attr 2=2 1990 "));
+ YAZ_CHECK(tst_ccl_query(bibset, "ti=a,b", "@attr 4=1 @attr 1=4 a,b "));
+ YAZ_CHECK(tst_ccl_query(bibset, "ti=a, b", "@attr 4=1 @attr 1=4 \"a, b\" "));
+ YAZ_CHECK(tst_ccl_query(bibset, "ti=a-b", "@attr 4=2 @attr 1=4 a-b "));
+ YAZ_CHECK(tst_ccl_query(bibset, "ti=a - b", "@attr 4=1 @attr 1=4 \"a - b\" "));
+
+ YAZ_CHECK(tst_ccl_query(bibset, "a?", "@attr 5=1 @attr 4=2 @attr 1=1016 a "));
+ YAZ_CHECK(tst_ccl_query(bibset, "a b",
+ "@and @attr 4=2 @attr 1=1016 a "
+ "@attr 4=2 @attr 1=1016 b "));
+
+ YAZ_CHECK(tst_ccl_query(bibset, "a b?",
+ "@and @attr 4=2 @attr 1=1016 a "
+ "@attr 5=1 @attr 4=2 @attr 1=1016 b "));
+
+ /* Bug #2895 */
+#if 1
+ YAZ_CHECK(tst_ccl_query(bibset, "a? b?",
+ /* incorrect. */
+ "@and @attr 4=2 @attr 1=1016 a? "
+ "@attr 5=1 @attr 4=2 @attr 1=1016 b "));
+#else
+ YAZ_CHECK(tst_ccl_query(bibset, "a? b?",
+ /* correct */
+ "@and @attr 5=1 @attr 4=2 @attr 1=1016 a "
+ "@attr 5=1 @attr 4=2 @attr 1=1016 b "));
+#endif