# Copyright (c) 2006 Jeffrey I Cohen. All rights reserved.
#
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
BEGIN { $| = 1; print "1..18\n"; }
END {print "not ok 1\n" unless $loaded;}
use Genezzo::GenDBI;
$loaded = 1;
print "ok 1\n";
######################### End of black magic.
# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
use strict;
use warnings;
use File::Path;
use File::Spec;
my $TEST_COUNT;
$TEST_COUNT = 2;
my $dbinit = 1;
my $gnz_home = File::Spec->catdir("t", "gnz_home");
my $gnz_restore = File::Spec->catdir("t", "restore");
#rmtree($gnz_home, 1, 1);
#mkpath($gnz_home, 1, 0755);
{
use Genezzo::TestSetup;
my $fb =
Genezzo::TestSetup::CreateOrRestoreDB(
gnz_home => $gnz_home,
restore_dir => $gnz_restore);
unless (defined($fb))
{
not_ok ("could not create database");
exit 1;
}
ok();
$dbinit = 0;
}
{
use Genezzo::Util;
my $dbh = Genezzo::GenDBI->connect($gnz_home, "NOUSER", "NOPASSWORD");
unless (defined($dbh))
{
not_ok ("could not find database");
exit 1;
}
ok();
if ($dbh->do("startup"))
{
ok();
}
else
{
not_ok ("could not startup");
}
# case sensitivity testing
if ($dbh->do("ct CaSeChEcK aAa=c bBb=c dDd=c"))
{
ok();
}
else
{
not_ok ("could not create table");
}
if ($dbh->do("ci cc_IDX CASechECK AaA ddd"))
{
ok();
}
else
{
not_ok ("could not create index");
}
if ($dbh->do("i cAsEcHeCK 1 2 3 4 5 6"))
{
ok();
}
else
{
not_ok ("could not insert");
}
my $sth = $dbh->prepare('select rid, aaa, bbb, ddd from casecheck where AaA = 1');
print $sth->execute(), " rows \n";
my @ftchary;
while (1)
{
my @ggg = $sth->fetchrow_array();
last
unless (scalar(@ggg));
@ftchary = @ggg;
}
greet @ftchary;
print join(" ", @ftchary), "\n";
my $rid1 = shift @ftchary;
my $upd = "u CASEcheck $rid1 7 8 9";
if ($dbh->do($upd))
{
ok();
}
else
{
not_ok ("could not update");
}
$sth = $dbh->prepare('select rid, AAA, BBB, DDD FROM CASECHECK WHERE AAA = 7');
print $sth->execute(), " rows \n";
while (1)
{
my @ggg = $sth->fetchrow_array();
last
unless (scalar(@ggg));
@ftchary = @ggg;
}
greet @ftchary;
print join(" ", @ftchary), "\n";
my $del = "d caseCHECK $rid1 ";
if ($dbh->do($del))
{
ok();
}
else
{
not_ok ("could not delete");
}
$sth = $dbh->prepare('select count(*) from CAseCHeCK');
print $sth->execute(), " rows \n";
while (1)
{
my @ggg = $sth->fetchrow_array();
last
unless (scalar(@ggg));
@ftchary = @ggg;
}
greet @ftchary;
print join(" ", @ftchary), "\n";
my $cnt = shift @ftchary;
if ($cnt == 1)
{
ok();
}
else
{
not_ok ("delete failed");
}
# print "space table\n";
# quoted identifiers with spaces in name
if ($dbh->do('create table "space table" ("space aaa" char(10), bbb char(10), ddd char(10))'))
{
ok();
}
else
{
not_ok ("could not create table");
}
if ($dbh->do('create index "space idx" on "space table" ("space aaa", ddd)'))
{
ok();
}
else
{
not_ok ("could not create index");
}
if ($dbh->do('insert into "space table" values (1, 2, 3, 4, 5, 6)'))
{
ok();
}
else
{
not_ok ("could not insert");
}
$sth = $dbh->prepare('select rid, "space aaa", bbb, ddd from "space table" where "space aaa" = 1');
print $sth->execute(), " rows \n";
while (1)
{
my @ggg = $sth->fetchrow_array();
last
unless (scalar(@ggg));
@ftchary = @ggg;
}
greet @ftchary;
print join(" ", @ftchary), "\n";
$rid1 = shift @ftchary;
$upd = 'update "space table" set "space aaa" = 7 where rid = \'' . $rid1 .'\'';
if ($dbh->do($upd))
{
ok();
}
else
{
not_ok ("could not update");
}
$sth = $dbh->prepare('select rid, "space aaa", bbb, ddd from "space table" where "space aaa" = 7');
print $sth->execute(), " rows \n";
while (1)
{
my @ggg = $sth->fetchrow_array();
last
unless (scalar(@ggg));
@ftchary = @ggg;
}
greet @ftchary;
print join(" ", @ftchary), "\n";
$del = 'delete from "space table" where rid = \'' . $rid1 . '\'' ;
if ($dbh->do($del))
{
ok();
}
else
{
not_ok ("could not delete");
}
$sth = $dbh->prepare('select count(*) from "space table"');
print $sth->execute(), " rows \n";
while (1)
{
my @ggg = $sth->fetchrow_array();
last
unless (scalar(@ggg));
@ftchary = @ggg;
}
greet @ftchary;
print join(" ", @ftchary), "\n";
$cnt = shift @ftchary;
if ($cnt == 1)
{
ok();
}
else
{
not_ok ("delete failed");
}
if ($dbh->do("commit"))
{
ok();
}
else
{
not_ok ("could not commit");
}
if ($dbh->do("shutdown"))
{
ok();
}
else
{
not_ok ("could not shutdown");
}
}
sub ok
{
print "ok $TEST_COUNT\n";
$TEST_COUNT++;
}
sub not_ok
{
my ( $message ) = @_;
print "not ok $TEST_COUNT # $message\n";
$TEST_COUNT++;
}
sub skip
{
my ( $message ) = @_;
print "ok $TEST_COUNT # skipped: $message\n";
$TEST_COUNT++;
}