The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use LWP::UserAgent;
use Test::More tests => 5;

BEGIN { use_ok('RDF::Query::Client') };

SKIP:
{
	my $response = LWP::UserAgent
		-> new
		-> get('http://sparql.org/books/sparql?query=SELECT+*+{$s+$p+$o}');
	
	unless ($response->is_success)
	{
		diag $response->as_string;
		skip "need network access and ability to connect to sparql.org", 4;
	}
	
	my $sparql_ask
		= "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n"
		. "ASK WHERE { ?book dc:title ?title . }" ;
	
	my $sparql_select
		= "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n"
		. "SELECT * WHERE { ?book dc:title ?title . }" ;
	
	my $sparql_construct
		= "PREFIX dc: <http://purl.org/dc/elements/1.1/>\n"
		. "CONSTRUCT { ?book <http://purl.org/dc/terms/title> ?title . }\n"
		. "WHERE { ?book dc:title ?title . }" ;
		
	my $q_ask       = new RDF::Query::Client($sparql_ask);
	my $q_select    = new RDF::Query::Client($sparql_select);
	my $q_construct = new RDF::Query::Client($sparql_construct);
	
	my $r_ask       = $q_ask->execute('http://sparql.org/books/sparql');
	my $r_select    = $q_select->execute('http://sparql.org/books/sparql');
	my $r_construct = $q_construct->execute('http://sparql.org/books/sparql');
	
	ok($r_ask->is_boolean, "ASK results in a boolean");
	ok($r_select->is_bindings, "SELECT results in bindings");
	ok($r_construct->is_graph, "CONSTRUCT results in a graph");
	
	ok($r_ask->get_boolean, "ASK results as expected");
	
	diag("You can safely ignore warnings from DBD about tables being locked.\n");
}