From: Mike Taylor Date: Fri, 17 Dec 2004 16:56:59 +0000 (+0000) Subject: Reasonably comprehensive work-out for the parser. X-Git-Url: http://sru.miketaylor.org.uk/cgi-bin?a=commitdiff_plain;h=60fcd0e8335a55566ca4703eb56f49ed6b9c715d;p=perl-pqf.git Reasonably comprehensive work-out for the parser. --- diff --git a/t/2-parser.t b/t/2-parser.t index 2f2b52c..40c421e 100644 --- a/t/2-parser.t +++ b/t/2-parser.t @@ -1,14 +1,70 @@ -# $Id: 2-parser.t,v 1.1 2004-12-17 15:34:09 mike Exp $ +# $Id: 2-parser.t,v 1.2 2004-12-17 16:56:59 mike Exp $ use strict; use warnings; -use Test::More tests => 2; + +BEGIN { + use vars qw(@tests); + @tests = ( + [ 'brian', + "term: brian" ], + [ '"brian"', + "term: brian" ], + [ '"brian kernighan"', + "term: brian kernighan" ], + [ '@attr 1=1003 brian', + "term: brian\n\tattr: bib-1 1=1003" ], + [ '@attr 1=1003 "brian"', + "term: brian\n\tattr: bib-1 1=1003" ], + [ '@attr 1=1003 @attr 2=3 brian', + "term: brian\n\tattr: bib-1 1=1003\n\tattr: bib-1 2=3" ], + [ '@and brian dennis', + "and\n\tterm: brian\n\tterm: dennis" ], + [ '@or brian dennis', + "or\n\tterm: brian\n\tterm: dennis" ], + [ '@or ken @and brian dennis', + "or\n\tterm: ken\n\tand\n\t\tterm: brian\n\t\tterm: dennis" ], + [ '@attr zthes 1=3 dennis', + "term: dennis\n\tattr: zthes 1=3" ], + [ '@attrset zthes @attr 1=3 dennis', + "term: dennis\n\tattr: zthes 1=3" ], + [ '@attrset zthes @attr bib-1 1=3 dennis', + "term: dennis\n\tattr: bib-1 1=3" ], + [ '@or @attr 1=1003 dennis unix', + "or\n\tterm: dennis\n\t\tattr: bib-1 1=1003\n" . + "\tterm: unix" ], + [ '@or dennis @attr 1=4 unix', + "or\n\tterm: dennis\n" . + "\tterm: unix\n\t\tattr: bib-1 1=4" ], + [ '@attr bib-1 1=1003 @or dennis @attr 1=4 unix', + "or\n\tterm: dennis\n\t\tattr: bib-1 1=1003\n" . + "\tterm: unix\n\t\tattr: bib-1 1=4" ], + [ '@attr 1=1003 @or dennis ken', + "or\n\tterm: dennis\n\t\tattr: bib-1 1=1003\n" . + "\tterm: ken\n\t\tattr: bib-1 1=1003" ], + [ '@attr 1=1003 @attr 2=3 @and @or ken @attr 5=3 den ' . + '@attr 1=4 unix', + "and\n\tor\n" . + "\t\tterm: ken\n\t\t\tattr: bib-1 1=1003\n" . + "\t\t\tattr: bib-1 2=3\n" . + "\t\tterm: den\n\t\t\tattr: bib-1 1=1003\n" . + "\t\t\tattr: bib-1 2=3\n" . + "\t\t\tattr: bib-1 5=3\n" . + "\tterm: unix\n\t\tattr: bib-1 1=4\n\t\tattr: bib-1 2=3" ] + ); +} +use Test::More tests => 2*scalar(@tests) + 2; BEGIN { use_ok('Net::Z3950::PQF') }; my $parser = new Net::Z3950::PQF(); ok(defined $parser, "created parser"); -#my $query = '@and @attr 1=1003 kernighan @attr 1=4 unix'; -#my $top = $parser->parse($query); -#ok(defined $top, "parsed query"); - +foreach my $test (@tests) { + my($query, $text) = @$test; + my $top = $parser->parse($query); + ok(defined $top, "parsed: $query"); + my $rendered = $top->render(0); + my $ok = $rendered eq "$text\n"; + ok($ok, $ok ? "rendered" : "wanted: '$text\n', got '$rendered'"); + exit if !$ok; +}