Support for Rset nodes and forparsing @set, test scripts
[perl-pqf.git] / t / 1-node.t
1 # $Id: 1-node.t,v 1.4 2004-12-20 09:46:58 mike Exp $
2
3 use strict;
4 use warnings;
5 use Test::More tests => 17;
6 BEGIN { use_ok('Net::Z3950::PQF') };
7
8 my $term1 = new Net::Z3950::PQF::TermNode('unix');
9 ok(defined $term1, "created simple 'term' node");
10 ok($term1->isa("Net::Z3950::PQF::Node"), "'term' is a node");
11 my $text = $term1->render(0);
12 ok($text eq "term: unix\n", "rendered simple 'term' node");
13
14 my $term2 = new Net::Z3950::PQF::TermNode('elements',
15                                           [ "bib-1", 1, 21 ],
16                                           [ "bib-1", 2, 3 ]);
17 ok(defined $term2, "created 'term' node with attrs");
18 $text = $term2->render(0);
19 ok($text eq "term: elements\n\tattr: bib-1 1=21\n\tattr: bib-1 2=3\n",
20         "rendered 'term' node with attrs");
21
22 my $rset = new Net::Z3950::PQF::RsetNode('oldRsetName',
23                                          [ "bib-1", 1, 1003 ]);
24 ok(defined $rset, "created 'rset' node with attrs");
25 ok($rset->isa("Net::Z3950::PQF::Node"), "'rset' is a node");
26 $text = $rset->render(0);
27 ok($text eq "rset: oldRsetName\n\tattr: bib-1 1=1003\n",
28         "rendered 'rset' node with attrs");
29
30 my $or = new Net::Z3950::PQF::OrNode($term1, $term2);
31 ok(defined $or, "created 'or' node");
32 ok($or->isa("Net::Z3950::PQF::BooleanNode"), "'or' is a boolean node");
33 ok($or->isa("Net::Z3950::PQF::Node"), "'or' is a node");
34 $text = $or->render(0);
35 my $wanted = <<'__EOT__';
36 or
37         term: unix
38         term: elements
39                 attr: bib-1 1=21
40                 attr: bib-1 2=3
41 __EOT__
42 ok($text eq $wanted, "rendered 'or' node");
43
44 my $term3 = new Net::Z3950::PQF::TermNode('kerni',
45                                           [ "bib-1", 1, 1003 ],
46                                           [ "bib-1", 2, 3 ],
47                                           [ "bib-1", 5, 1 ]);
48 ok(defined $term3, "created third 'term' node");
49 $text = $term3->render(0);
50 ok($text eq ("term: kerni\n\tattr: bib-1 1=1003\n" .
51              "\tattr: bib-1 2=3\n\tattr: bib-1 5=1\n"),
52    "rendered third 'term' node");
53
54 my $and = new Net::Z3950::PQF::AndNode($or, $term3);
55 ok(defined $and, "created 'and' node");
56 $text = $and->render(0);
57 $wanted = <<'__EOT__';
58 and
59         or
60                 term: unix
61                 term: elements
62                         attr: bib-1 1=21
63                         attr: bib-1 2=3
64         term: kerni
65                 attr: bib-1 1=1003
66                 attr: bib-1 2=3
67                 attr: bib-1 5=1
68 __EOT__
69 ok($text eq $wanted, "rendered 'and' node");