use strict; use warnings; use Test::More tests => 15; use_ok('SWISH::Prog::Native::Indexer'); SKIP: { eval "use JSON"; if ($@) { diag "install JSON to test Object aggregator"; skip "JSON required for Object test", 14; } eval "use YAML::Syck"; if ($@) { diag "install YAML::Syck to test Object aggregator"; skip "YAML::Syck required for Object test", 14; } eval "use SWISH::Prog::Aggregator::Object"; if ($@) { diag "skipping tests for Aggregator::Object"; skip $@, 14; } my @meth = qw( one two three ); { package MyClass; use base 'SWISH::Prog::Class'; __PACKAGE__->mk_accessors(@meth); } # is executable present? my $indexer = SWISH::Prog::Native::Indexer->new; if ( !$indexer->swish_check ) { skip "swish-e not installed", 14; } # make objects my @obj; for ( 1 .. 10 ) { ok( push( @obj, bless( { one => $_ + 1, two => [ $_ + 2 ], three => { sum => $_ + 3 } }, 'MyClass' ) ), "object blessed" ); } # create prog parts ok( my $aggregator = SWISH::Prog::Aggregator::Object->new( class => 'MyClass', methods => [@meth], title => 'one', #name => 'swishobjects', indexer => SWISH::Prog::Native::Indexer->new( #debug => 1, #verbose => 3, invindex => 't/object.index', warnings => 9, #opts => '-T indexed_words' ), ), "make indexer" ); #diag( $aggregator->dump ); ok( $aggregator->indexer->start, "indexer start" ); is( $aggregator->crawl( \@obj ), 10, "crawl" ); ok( $aggregator->indexer->finish, "indexer finish" ); # clean up header so other test counts work unlink('t/object.index/swish.xml') unless $ENV{PERL_DEBUG}; }