use strict; use warnings; use Test::More tests => 7; # last test to print use WWW::Ohloh::API; use Exception::Class; eval { WWW::Ohloh::API->get_projects( sort => 'foo' ); }; ok( Exception::Class->caught( 'OIO::Args' ), "wrong sort type throws exception" ); SKIP: { skip <<'END_REASON', 6 unless $ENV{OHLOH_KEY}; set the environment variable OHLOH_KEY to your api key to enable these tests END_REASON my $ohloh = WWW::Ohloh::API->new( api_key => $ENV{OHLOH_KEY} ); my $projects = $ohloh->get_projects( max => 42 ); ok $projects->next->isa( 'WWW::Ohloh::API::Project' ), "returns projects"; my @p = $projects->next( 13 ); is scalar( @p ) => 13, 'next($i) returns right number of projects'; my $i; $i++ while $projects->next; is $i => 42 - 13 - 1, '"max" constructor argument'; my $j; while( $_ = <$projects> ) { $j++ if $_->isa( 'WWW::Ohloh::API::Project' ); } is $j => 42, '<> override'; # let's try to load all projects $projects = $ohloh->get_projects; eval { $projects->all }; ok !!$@, 'all() without "max" triggers exception'; $projects = $ohloh->get_projects( max => 43 ); @p = $projects->all; is scalar( @p ) => 43, 'all()'; }