Fix build with xapian-core < 1.4.10
[xapian.git] / search-xapian / t / termgenerator.t
blobd1bc35c3ae448899409f6b3d2e6e456e6aee12d4
1 use strict;
2 # Before `make install' is performed this script should be runnable with
3 # `make test'. After `make install' it should work as `perl test.pl'
5 #########################
7 use Test;
8 use Devel::Leak;
9 use Devel::Peek;
10 BEGIN { plan tests => 29 };
11 use Search::Xapian qw(:standard);
12 ok(1); # If we made it this far, we're ok.
14 #########################
16 # Insert your test code below, the Test module is use()ed here so read
17 # its man page ( perldoc Test ) for help writing this test script.
19 # first create database dir, if it doesn't exist;
21 my $termgen = new Search::Xapian::TermGenerator();
22 my $doc = new Search::Xapian::Document();
23 $termgen->set_document($doc);
24 $termgen->index_text('foo bar baz foo');
25 $termgen->index_text_without_positions('baz zoo');
27 my $ti = $doc->termlist_begin();
28 ok( $ti ne $doc->termlist_end());
29 ok( $ti->get_termname(), 'bar' );
30 ok( $ti->get_wdf(), 1 );
31 my $pi = $ti->positionlist_begin();
32 ok( $pi ne $ti->positionlist_end() );
33 ok( $pi->get_termpos(), 2 );
34 ok( ++$pi, $ti->positionlist_end() );
36 ok( ++$ti ne $doc->termlist_end());
37 ok( $ti->get_termname(), 'baz' );
38 ok( $ti->get_wdf(), 2 );
39 $pi = $ti->positionlist_begin();
40 ok( $pi ne $ti->positionlist_end() );
41 ok( $pi->get_termpos(), 3 );
42 ok( ++$pi, $ti->positionlist_end() );
44 ok( ++$ti ne $doc->termlist_end() );
45 ok( $ti->get_termname(), 'foo' );
46 ok( $ti->get_wdf(), 2 );
47 $pi = $ti->positionlist_begin();
48 ok( $pi ne $ti->positionlist_end() );
49 ok( $pi->get_termpos(), 1 );
50 ok( ++$pi ne $ti->positionlist_end() );
51 ok( $pi->get_termpos(), 4 );
52 ok( ++$pi, $ti->positionlist_end() );
54 ok( ++$ti ne $doc->termlist_end() );
55 ok( $ti->get_termname(), 'zoo' );
56 ok( $ti->get_wdf(), 1 );
57 $pi = $ti->positionlist_begin();
58 ok( $pi, $ti->positionlist_end() );
60 ok( ++$ti eq $doc->termlist_end() );
62 my $db = Search::Xapian::WritableDatabase->new("testdb-spell", DB_CREATE_OR_OVERWRITE);
63 ok( $db );
64 my $indexer = Search::Xapian::TermGenerator->new();
65 $indexer->set_flags(Search::Xapian::FLAG_SPELLING);
66 $indexer->set_database($db);
67 my $document = Search::Xapian::Document->new();
68 $indexer->set_document($document);
69 $indexer->index_text('test hello');
70 $termgen->index_text('foo bar baz foo', 4);
71 $termgen->index_text_without_positions('baz zoo', 42);
72 ok( $db->add_document($document) );
73 undef $db;
75 my $handle;
76 my $count = Devel::Leak::NoteSV($handle);
78     my $tg = new Search::Xapian::TermGenerator();
79     $tg->set_stopper(Search::Xapian::SimpleStopper->new(qw(a an the)));
80     $tg->set_stopper(Search::Xapian::SimpleStopper->new(qw(a the)));
82 ok( $count, Devel::Leak::CheckSV($handle) );