1 # $Id: 2-parser.t,v 1.4 2004-12-23 10:24:12 mike Exp $
13 [ '"brian kernighan"',
14 "term: brian kernighan" ],
15 [ '{brian kernighan}',
16 "term: brian kernighan" ],
17 [ '@attr 1=1003 brian',
18 "term: brian\n\tattr: bib-1 1=1003" ],
19 [ '@attr 1=1003 "brian"',
20 "term: brian\n\tattr: bib-1 1=1003" ],
21 [ '@attr 1=1003 @attr 2=3 brian',
22 "term: brian\n\tattr: bib-1 1=1003\n\tattr: bib-1 2=3" ],
23 [ '@and brian dennis',
24 "and\n\tterm: brian\n\tterm: dennis" ],
27 [ '@attr 1=1003 @set foo123',
28 "rset: foo123\n\tattr: bib-1 1=1003" ],
30 "or\n\tterm: brian\n\tterm: dennis" ],
31 [ '@or ken @and brian dennis',
32 "or\n\tterm: ken\n\tand\n\t\tterm: brian\n\t\tterm: dennis" ],
33 [ '@attr zthes 1=3 dennis',
34 "term: dennis\n\tattr: zthes 1=3" ],
35 [ '@attrset zthes @attr 1=3 dennis',
36 "term: dennis\n\tattr: zthes 1=3" ],
37 [ '@attrset zthes @attr bib-1 1=3 dennis',
38 "term: dennis\n\tattr: bib-1 1=3" ],
39 [ '@or @attr 1=1003 dennis unix',
40 "or\n\tterm: dennis\n\t\tattr: bib-1 1=1003\n" .
42 [ '@or dennis @attr 1=4 unix',
43 "or\n\tterm: dennis\n" .
44 "\tterm: unix\n\t\tattr: bib-1 1=4" ],
45 [ '@attr bib-1 1=1003 @or dennis @attr 1=4 unix',
46 "or\n\tterm: dennis\n\t\tattr: bib-1 1=1003\n" .
47 "\tterm: unix\n\t\tattr: bib-1 1=4" ],
48 [ '@attr 1=1003 @or dennis ken',
49 "or\n\tterm: dennis\n\t\tattr: bib-1 1=1003\n" .
50 "\tterm: ken\n\t\tattr: bib-1 1=1003" ],
51 [ '@attr 1=1003 @attr 2=3 @and @or ken @attr 5=3 den ' .
54 "\t\tterm: ken\n\t\t\tattr: bib-1 1=1003\n" .
55 "\t\t\tattr: bib-1 2=3\n" .
56 "\t\tterm: den\n\t\t\tattr: bib-1 1=1003\n" .
57 "\t\t\tattr: bib-1 2=3\n" .
58 "\t\t\tattr: bib-1 5=3\n" .
59 "\tterm: unix\n\t\tattr: bib-1 1=4\n\t\tattr: bib-1 2=3" ]
62 use Test::More tests => 2*scalar(@tests) + 2;
63 BEGIN { use_ok('Net::Z3950::PQF') };
65 my $parser = new Net::Z3950::PQF();
66 ok(defined $parser, "created parser");
68 foreach my $test (@tests) {
69 my($query, $text) = @$test;
70 my $top = $parser->parse($query);
71 ok(defined $top, "parsed: $query");
72 my $rendered = $top->render(0);
73 my $ok = $rendered eq "$text\n";
74 ok($ok, $ok ? "rendered" : "wanted: '$text\n', got '$rendered'");