/[SWISH-PlusPlus]/trunk/t/01swish.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/t/01swish.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 16 - (hide annotations)
Sun Dec 5 21:06:48 2004 UTC (19 years, 3 months ago) by dpavlin
File MIME type: application/x-troff
File size: 1895 byte(s)
added experimental support for storing meta data (properties) in BerkeleyDB
hash database (currently ALL meta data is also stored in BerkeleyDB).

1 dpavlin 2 #!/usr/bin/perl -w
2    
3     use strict;
4    
5 dpavlin 16 use Test::More tests => 47;
6 dpavlin 2 use Test::Exception;
7 dpavlin 9 use lib '.';
8 dpavlin 2 use blib;
9 dpavlin 16 use YAML;
10 dpavlin 2
11     BEGIN {
12     use_ok('SWISH::PlusPlus')
13     };
14    
15     my $i;
16    
17 dpavlin 10 throws_ok { SWISH::PlusPlus->new() } qr/index_dir/, "need index_dir";
18 dpavlin 2
19     ## FIXME
20     my $index = '/tmp/swish-pp';
21    
22 dpavlin 10 $i = SWISH::PlusPlus->new(
23 dpavlin 3 index_dir => $index,
24 dpavlin 9 meta_in_body => 1,
25 dpavlin 16 # debug => 1,
26 dpavlin 3 );
27     ok($i, "open index");
28 dpavlin 2
29     ok(-e $index, "index exist");
30 dpavlin 3
31 dpavlin 14 ok($i->{'cwd'}, "cwd ".$i->{'cwd'});
32    
33 dpavlin 3 ok($i->check_bin, "swish++ check");
34    
35 dpavlin 14 ok($i->{'version'}, "version ".$i->{'version'});
36 dpavlin 4
37     ok($i->index_document( 42 => 'meaning of life' ), "index 42");
38    
39 dpavlin 16 my $data = {
40 dpavlin 9 path => 'life',
41     title => 'Ultimate question answer found here',
42 dpavlin 11 body => '42 is answer to all questions',
43     meta => {
44     author => 'Dobrica Pavlinusic',
45     date => '2004-12-05',
46     comment => 'woow!',
47     },
48 dpavlin 16 };
49 dpavlin 9
50 dpavlin 16 print Dump( $data );
51    
52     ok($i->add( %{$data} ), "index life");
53    
54 dpavlin 4 # add one dummy document so that swish++ won't reject all words
55     # with index of just one document
56     ok($i->index_document( _dummy_ => '' ), "fillter");
57 dpavlin 7
58     cmp_ok($i->{'index_dir'}, 'eq', $index, "index_dir ok");
59 dpavlin 8
60 dpavlin 14 # I would rather test search to close it itself!
61     #$i->finish_update;
62    
63 dpavlin 8 foreach my $word (qw(meaning of life)) {
64     my @r = $i->search($word);
65     cmp_ok(scalar @r, '==', 1, "find $word");
66     }
67 dpavlin 9
68 dpavlin 16 # test_find('words to test against meta','meta')
69     sub test_find {
70     my $words = shift || die "no words?";
71     my $meta = shift;
72    
73     foreach my $word (split(/\s+/,$words)) {
74     my $path;
75     my $q = $word;
76     $q = "$meta=($word)" if ($meta);
77    
78     my @r = $i->search($q);
79     cmp_ok(scalar @r, '==', 1, "search $q");
80     if ($meta) {
81     like($i->property(shift @r, $meta), qr/$word/i, "find $word in $meta property");
82     cmp_ok(scalar $i->search("$word"), '==', 1, "find $word anywhere");
83     }
84    
85     }
86 dpavlin 9 }
87 dpavlin 11
88 dpavlin 16 test_find($data->{'body'});
89    
90     foreach (qw(title author date comment)) {
91     test_find(( $data->{$_} || $data->{'meta'}->{$_} ), $_);
92 dpavlin 11 }
93    

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26