#!/usr/bin/perl - for emacs :) package main; use Test::More; use strict; use warnings; use lib qw /lib/; BEGIN { my $info_file = 't/driver.nfo'; $::DRIVER = eval { -e $info_file or die "$info_file does not exist"; open FP, "<$info_file" or die "Cannot read-open $info_file"; my $data = join '', ; close FP; my $VAR1 = undef; eval "$data"; die "Cannot evaluate data: $@" if (defined $@ and $@); return $VAR1; }; (defined $@ and $@) ? plan skip_all => $@ : plan 'no_plan' ; } main(); sub main { use_ok ('TripleStore'); local $::DB = new TripleStore ($::DRIVER); # insert test { eval { $::DB->insert ('adam', 'shirt', 'green') }; is ($@, '', 'insert() - does not die'); my $dbh = $::DB->driver()->dbh(); my $sth = $dbh->prepare ("SELECT * FROM TRIPLE_STORE WHERE S_T='adam'"); $sth->execute(); ok ($sth->fetchrow_arrayref, 'insert() - record inserted'); } # update test { use_ok ('TripleStore::Update'); use_ok ('TripleStore::Query::Criterion'); use_ok ('TripleStore::Query::Clause'); # make adam's shirt blue my $update = { object => 'blue' }; my $clause = $::DB->clause ('adam', 'shirt', undef); eval { $::DB->update ($update, $clause) }; is ($@, '', 'update() - does not die'); my $dbh = $::DB->driver()->dbh(); my $sth = $dbh->prepare ("SELECT * FROM TRIPLE_STORE WHERE S_T='adam' AND P_T='shirt' AND O_T='blue'"); $sth->execute(); ok ($sth->fetchrow_arrayref, 'update() - record updated'); } # delete test { use_ok ('TripleStore::Query::Clause'); use_ok ('TripleStore::Query::Criterion'); my $clause = $::DB->clause ('adam', undef, undef); eval { $::DB->delete ($clause) }; is ($@, '', 'delete() - does not die'); my $dbh = $::DB->driver()->dbh(); my $sth = $dbh->prepare ("SELECT * FROM TRIPLE_STORE WHERE S_T='adam'"); $sth->execute(); ok (!$sth->fetchrow_arrayref, 'delete() - record deleted'); } } 1; __END__