c83f2a7bf996f792ab372edba272a5013bdfbe2f
[perl-pqf.git] / t / 1.t
1 # $Id: 1.t,v 1.2 2004-12-17 15:29:33 mike Exp $
2
3 # Before `make install' is performed this script should be runnable with
4 # `make test'. After `make install' it should work as `perl 1.t'
5
6 #########################
7
8 # change 'tests => 1' to 'tests => last_test_to_print';
9
10 use strict;
11 use warnings;
12 use Test::More tests => 12;
13 BEGIN { use_ok('Net::Z3950::PQF') };
14
15 my $parser = new Net::Z3950::PQF();
16 ok(defined $parser, "created parser");
17
18 my $term1 = new Net::Z3950::PQF::TermNode('unix');
19 ok(defined $term1, "created simple term node");
20 my $text = $term1->render(0);
21 ok($text eq "term: unix\n", "rendered simple term node");
22
23 my $term2 = new Net::Z3950::PQF::TermNode('elements',
24                                           [ "bib-1", 1, 21 ],
25                                           [ "bib-1", 2, 3 ]);
26 ok(defined $term2, "created term node with attrs");
27 $text = $term2->render(0);
28 ok($text eq "term: elements\n\tattr: bib-1 1=21\n\tattr: bib-1 2=3\n",
29         "rendered term node with attrs");
30
31 my $or = new Net::Z3950::PQF::OrNode($term1, $term2);
32 ok(defined $or, "created or node");
33 $text = $or->render(0);
34 my $wanted = <<'__EOT__';
35 or
36         term: unix
37         term: elements
38                 attr: bib-1 1=21
39                 attr: bib-1 2=3
40 __EOT__
41 ok($text eq $wanted, "rendered or node");
42
43 my $term3 = new Net::Z3950::PQF::TermNode('kerni',
44                                           [ "bib-1", 1, 1003 ],
45                                           [ "bib-1", 2, 3 ],
46                                           [ "bib-1", 5, 1 ]);
47 ok(defined $term3, "created third term node");
48 $text = $term3->render(0);
49 ok($text eq ("term: kerni\n\tattr: bib-1 1=1003\n" .
50              "\tattr: bib-1 2=3\n\tattr: bib-1 5=1\n"),
51    "rendered third term node");
52
53 my $and = new Net::Z3950::PQF::AndNode($or, $term3);
54 ok(defined $and, "created and node");
55 $text = $and->render(0);
56 $wanted = <<'__EOT__';
57 and
58         or
59                 term: unix
60                 term: elements
61                         attr: bib-1 1=21
62                         attr: bib-1 2=3
63         term: kerni
64                 attr: bib-1 1=1003
65                 attr: bib-1 2=3
66                 attr: bib-1 5=1
67 __EOT__
68 ok($text eq $wanted, "rendered and node");
69
70
71 #my $query = '@and @attr 1=1003 kernighan @attr 1=4 unix';
72 #my $top = $parser->parse($query);
73 #ok(defined $top, "parsed query");
74