The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use Test::More;

eval "require DBD::SQLite";
plan skip_all => "DBD::SQLite required for testing Tao::DBI" if $@;

plan tests => 11;

use_ok('Tao::DBI');

END { 
  unlink 't/t.db' if -e 't/t.db' 
}

my $dbh = Tao::DBI->connect({ dsn => 'dbi:SQLite:dbname=t/t.db' });
ok($dbh, 'defined $dbh');

my $ans;

$ans = $dbh->do(qq{
  CREATE TABLE t (
    a integer,
    b integer,
    k integer
  )
});
ok($ans, 'CREATE TABLE succeeded');

my $sql = qq{INSERT INTO t (a, b, k) VALUES (:a, :b, :k)};
my $sth = $dbh->prepare($sql);
ok($sth, 'prepare ok');

$ans = $sth->execute({ a => 1, b => 1, k => 1});
ok($ans, 'execute (1) ok');
$ans = $sth->execute({ a => 2, b => 2, k => 2});
ok($ans, 'execute (2) ok');

$sql = qq{UPDATE t SET a = :a WHERE k = :k};
$sth = $dbh->prepare({ sql => $sql });
ok($sth, 'prepare($href) ok');
$ans = $sth->execute({ a => 100, k => 1 });
is($ans, 1, 'exec UPDATE ok');

eval { 
  $sth = $dbh->prepare({ sql => undef });
};
like($@, qr/sql.*undef/, 'new({ sql => undef }) croaks');

eval {
  $sth = $dbh->prepare();
};
like($@, qr/sql.*undef/, 'new() w/o sql croaks');

ok($dbh->disconnect, "successful disconnection");