The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 11;
BEGIN { use_ok('RDF::TriN3') };

my $model = RDF::Trine::Model->temporary_model;

my $n3 = <<'NOTATION3';
@keywords is, of, a.
@namepattern "\d{1,2}[A-Z][a-z]{2}\d{4}" <http://example.com/days/> .
@dtpattern   "\d{1,2}[a-z]{3}\d{4}"      <http://example.com/day> .
@term        lit                         :as_literal .

1Apr2003 lit 1apr2003 .

NOTATION3

my $parser = RDF::Trine::Parser::ShorthandRDF->new();
ok($parser, "Created parser");

$parser->parse_into_model('http://example.org/', $n3, $model);

is($model->count_statements, 1, "Got exactly one statement.");

my $iter = $model->get_statements;
my $f;
while (my $st = $iter->next)
{
	ok($st, "Retrieved the statement.");
	
	ok($st->subject->is_resource,
		'Subject is resource.');

	is($st->subject->uri,
		'http://example.com/days/1Apr2003',
		'Subject URI is correct.');

	ok($st->predicate->is_resource,
		'Predicate is resource.');

	is($st->predicate->uri,
		'http://example.org/#as_literal',
		'Predicate URI is correct.');

	ok($st->object->is_literal && $st->object->has_datatype,
		'Object is typed literal.');

	is($st->object->literal_value,
		'1apr2003',
		'Object literal value is correct.');

	is($st->object->literal_datatype,
		'http://example.com/day',
		'Object literal datatype is correct.');
}