use strict;
BEGIN {
use lib 't';
my $ts = PgLinkTestUtil::load_conf;
if (!exists $ts->{TEST_XBASE}) {
plan skip_all => 'TEST_XBASE not configured';
} else {
plan tests => 26;
}
use_ok('DBIx::PgLink::Adapter::XBase');
}
my $db = DBIx::PgLink::Adapter::XBase->new();
ok($db, 'adapter instance created');
can_ok($db, 'connect', 'install_roles', 'prepare', 'ping', 'table_info', 'column_info');
ok(
$db->connect('dbi:XBase:examples', undef, undef, {RaiseError=>1}),
'adapter connected'
);
ok(defined $db->dbh, 'attribute dbh exists');
is($db->quote_identifier(q!foo!), q!foo!, "quote_identifier");
is($db->quote_identifier(q!foo.bar!), q!foo.bar!, "quote_identifier");
is($db->quote_identifier(q!"foo.bar"!), q!"foo.bar"!, "quote_identifier");
is($db->quote_identifier(q!foo.dbf!), q!foo.dbf!, "quote_identifier");
is($db->quote_identifier(q!foo!, q!bar!), q!bar!, "quote_identifier");
{
my $sth = $db->prepare("SELECT * FROM crud WHERE ID = ?");
ok($sth, 'statement prepared');
ok($sth->execute(1), 'statement executed');
my @arr = $sth->fetchrow_array;
is_deeply(\@arr, [1, 1, 'row#1'], 'got the right value');
}
{
my $sth = $db->table_info('%', '%', '%', 'TABLE');
my $data = $sth->fetchall_hashref('TABLE_NAME');
diag Dumper($data) if $Trace_level;
my @keys = sort keys %{$data};
is_deeply( \@keys, [qw/all_types cp866 crud date_u/], 'tables found');
}
{
my $sth = $db->column_info('%', '%', 'all_types', '%');
my $data = $sth->fetchall_arrayref({});
diag Dumper($data) if $Trace_level;
is($data->[0]->{COLUMN_NAME}, 'C', 'column found');
is($data->[0]->{TYPE_NAME}, 'CHAR', 'type found');
is($data->[1]->{COLUMN_NAME}, 'N', 'column found');
is($data->[1]->{TYPE_NAME}, 'NUMERIC', 'type found');
is($data->[2]->{COLUMN_NAME}, 'F', 'column found');
is($data->[2]->{TYPE_NAME}, 'FLOAT', 'type found');
is($data->[3]->{COLUMN_NAME}, 'D', 'column found');
is($data->[3]->{TYPE_NAME}, 'DATE', 'type found');
is($data->[4]->{COLUMN_NAME}, 'L', 'column found');
is($data->[4]->{TYPE_NAME}, 'BOOLEAN', 'type found');
is($data->[5]->{COLUMN_NAME}, 'M', 'column found');
is($data->[5]->{TYPE_NAME}, 'BLOB', 'type found');
}