📄 tstccl.c
字号:
/* * Copyright (c) 2002-2003, Index Data * See the file LICENSE for details. * * $Id: tstccl.c,v 1.2 2003/06/24 23:03:04 adam Exp $ *//* CCL test */#include <yaz/ccl.h>struct ccl_tst { char *query; char *result;};static struct ccl_tst query_str[] = { { "x1", "@attr 4=2 @attr 1=1016 x1 "}, { "(((((x1)))))", "@attr 4=2 @attr 1=1016 x1 "}, {"x1 and x2", "@and @attr 4=2 @attr 1=1016 x1 @attr 4=2 @attr 1=1016 x2 "}, { "ti=x3", "@attr 4=2 @attr 1=4 x3 "}, { "dc.title=x4", "@attr 1=/my/title x4 "}, { "x1 and", 0}, { "tix=x5", 0}, {0, 0}};void tst1(void){ CCL_parser parser = ccl_parser_create (); CCL_bibset bibset = ccl_qual_mk(); int i; ccl_qual_fitem(bibset, "u=4 s=pw t=l,r", "ti"); ccl_qual_fitem(bibset, "1=1016 s=al,pw", "term"); ccl_qual_fitem(bibset, "1=/my/title", "dc.title"); parser->bibset = bibset; 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); ccl_qual_rm(&bibset);}int main(int argc, char **argv){ tst1(); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -