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