ok( ref  WebService::GoogleAPI::Client->new( debug => $DEBUG ) eq 'WebService::GoogleAPI::Client' , 'WebService::GoogleAPI::Client new is correct type');
ok( my $ret = WebService::GoogleAPI::Client::Discovery->new->discover_all, 'WebService::GoogleAPI::Client::Discovery->new->discover_all returns something');
## TODO - WebService::GoogleAPI::Client::Discovery->new->discover_all structure as expected
## TODO - do some more testing of discovery_all as is foundation for much of the workings
ok( ref WebService::GoogleAPI::Client::Discovery->new->available_APIs eq 'ARRAY', "WebService::GoogleAPI::Client::Discovery->new->available_APIs returns array ref");
ok( scalar WebService::GoogleAPI::Client::Discovery->new->available_APIs > 50 , "available_APIs() returns more than 50 elements in arra ref");
ok ( WebService::GoogleAPI::Client::Discovery->new->service_exists() == 0, 'WebService::GoogleAPI::Client::Discovery->new->service_exists() == 0');
ok ( WebService::GoogleAPI::Client::Discovery->new->service_exists('gmail') == 1, 'WebService::GoogleAPI::Client::Discovery->new->service_exists("gmail") == 1');
ok ( WebService::GoogleAPI::Client::Discovery->new->service_exists('calendar') == 1, 'WebService::GoogleAPI::Client::Discovery->new->service_exists("calendar") == 1');
## TODO: refactor case of service handling across all code to make consistent - smells bad at the moment
ok ( WebService::GoogleAPI::Client::Discovery->new->service_exists('Gmail') == 0, 'test case-insensitive failure service_exists("Gmail") == 0');

ok ( length(WebService::GoogleAPI::Client::Discovery->new->supported_as_text()) > 100 , 'print_supported() returns string longer than 100 characters');
ok ( ref( WebService::GoogleAPI::Client::Discovery->new->available_versions() ) eq 'ARRAY' && 
     scalar( @{ WebService::GoogleAPI::Client::Discovery->new->available_versions() } ) == 0
     ,'available_versions() no params returns empty array ref');
ok ( ref( WebService::GoogleAPI::Client::Discovery->new->available_versions('calendar') ) eq 'ARRAY' && 
     scalar( @{ WebService::GoogleAPI::Client::Discovery->new->available_versions('calendar') } ) > 0
     ,'available_versions("calendar") returns at least 1 version');

ok ( ref( WebService::GoogleAPI::Client::Discovery->new->available_versions('sdfds') ) eq 'ARRAY' && 
     scalar( @{ WebService::GoogleAPI::Client::Discovery->new->available_versions('sdfds') } ) == 0
     ,'available_versions("sdfds") returns empty array ref');

ok ( ref( WebService::GoogleAPI::Client::Discovery->new->latest_stable_version() ) eq '' && 
      WebService::GoogleAPI::Client::Discovery->new->latest_stable_version() eq ''
     ,'latest_stable_version() no params returns empty string');
ok ( WebService::GoogleAPI::Client::Discovery->new->latest_stable_version('calendar')  && 
     WebService::GoogleAPI::Client::Discovery->new->latest_stable_version('calendar') =~ /^v\d+/xm 
     ,'latest_stable_version("calendar") returns a string in v\d format');
ok ( ref( WebService::GoogleAPI::Client::Discovery->new->latest_stable_version('dsfjh') ) eq '' && 
      WebService::GoogleAPI::Client::Discovery->new->latest_stable_version('dsfjh') eq ''
     ,'latest_stable_version("dsfjh")  returns empty string');

ok ( ref(WebService::GoogleAPI::Client::Discovery->new( debug => 1 )->get_resource_meta('WebService::GoogleAPI::Client::Calendar::Events')) 
     eq 'HASH', 'get_resource_meta(\'WebService::GoogleAPI::Client::Calendar::Events\') returns hashref' );

## this is getting pretty ugly - need to parse around abstract class name strings etc .. and that's with simple Calendar Structure

ok ( ref(WebService::GoogleAPI::Client::Discovery->new( debug => 0 )->get_resource_meta('WebService::GoogleAPI::Client::Calendar::Events')) eq 'HASH' 
      && 
      (keys %{WebService::GoogleAPI::Client::Discovery->new( debug => 0 )->get_resource_meta('WebService::GoogleAPI::Client::Calendar::Events')} == 1
      && 
      defined WebService::GoogleAPI::Client::Discovery->new( debug => 0 )->get_resource_meta('WebService::GoogleAPI::Client::Calendar::Events')->{methods}
      )
     , 'get_resource_meta(\'WebService::GoogleAPI::Client::Calendar::Events\') returns hashref with single key defined - methods' );


ok ( ref(WebService::GoogleAPI::Client::Discovery->new( debug => 0 )->get_resource_meta('WebService::GoogleAPI::Client::Gmail::Users')) eq 'HASH' 
      && 
      (keys %{WebService::GoogleAPI::Client::Discovery->new( debug => 1 )->get_resource_meta('WebService::GoogleAPI::Client::Gmail::Users')} == 1
      && 
      defined WebService::GoogleAPI::Client::Discovery->new( debug => 0 )->get_resource_meta('WebService::GoogleAPI::Client::Gmail::Users')->{methods}
      )
     , 'get_resource_meta(\'WebService::GoogleAPI::Client::Gmail::Users\') returns hashref with single key defined - methods with keys getProfile,stop,watch' );

print Dumper $ret;

print join(',', keys %{$ret->{methods}} ) . "\n"; exit;

THIS BLOCK HAS BEEN DISABLED BECAUSE IT FAILS WHEN TAIN MODE IS ENABLED - SO ALHTOUGH THE CODE WORKS FINE AS FAR AS I CAN TELL - IT IS NOT BEING ALLOWED TO RUN WITHIN THE TEST HARNESS MORE INVESTIGATION REQUIRED

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 333:

=pod directives shouldn't be over one line long! Ignoring all 4 lines of content

Around line 518:

=pod directives shouldn't be over one line long! Ignoring all 17 lines of content