DBD-InterBase
view release on metacpan or search on metacpan
t/40datetime.t view on Meta::CPAN
my $ref = shift->[0]->[1];
return ($$ref[3] == $times[3]) &&
($$ref[4] == $times[4]) &&
($$ref[5] == $times[5]);
},
sub
{
my $ref = shift->[0]->[2];
return ($$ref[0] == $times[0]) &&
($$ref[1] == $times[1]) &&
($$ref[2] == $times[2]);
}
);
#
# Main loop; leave this untouched, put tests after creating
# the new table.
#
while (Testing()) {
#
# Connect to the database
Test($state or $dbh = DBI->connect($test_dsn, $test_user, $test_password))
or ServerError();
#
# Find a possible new table name
#
# Test($state or $table = FindNewTable($dbh))
# or DbiError($dbh->err, $dbh->errstr);
#
# Create a new table
#
my ($def, $table, $stmt);
$state or do {
$table = find_new_table($dbh);
$def =<<"DEF";
CREATE TABLE $table (
A_TIMESTAMP TIMESTAMP,
A_DATE DATE,
A_TIME TIME
)
DEF
};
Test($state or ($dbh->do($def)))
or DbiError($dbh->err, $dbh->errstr);
$state or do {
$stmt =<<"END_OF_QUERY";
INSERT INTO $table
(
A_TIMESTAMP,
A_DATE,
A_TIME
)
VALUES (?, ?, ?)
END_OF_QUERY
};
Test($state or $cursor = $dbh->prepare($stmt))
or DbiError($dbh->err, $dbh->errstr);
Test($state or $cursor->execute(
\@times, \@times, \@times)
) or DbiError($cursor->err, $cursor->errstr);
Test($state or $cursor = $dbh->prepare("SELECT * FROM $table", {
ib_timestampformat => 'TM',
ib_dateformat => 'TM',
ib_timeformat => 'TM',
})) or DbiError($dbh->err, $dbh->errstr);
Test($state or $cursor->execute)
or DbiError($cursor->err, $cursor->errstr);
Test($state or ($res = $cursor->fetchall_arrayref))
or DbiError($cursor->err, $cursor->errstr);
if (!$state) {
my ($types, $names, $fields) = @{$cursor}{TYPE, NAME, NUM_OF_FIELDS};
for (my $i = 0; $i < $fields; $i++) {
Test($state or ( $is_match[$i]->($res) ))
or DbiError(undef,
"wrong SELECT result for field $names->[$i]: $res->[0]->[$i]");
}
} else {
for (1..$num_of_fields) { Test($state) }
}
#
# Drop the test table
#
Test($state or ($cursor = $dbh->prepare("DROP TABLE $table")))
or DbiError($dbh->err, $dbh->errstr);
Test($state or $cursor->execute)
or DbiError($cursor->err, $cursor->errstr);
# NUM_OF_FIELDS should be zero (Non-Select)
Test($state or (!$cursor->{'NUM_OF_FIELDS'}))
or !$verbose or printf("NUM_OF_FIELDS is %s, not zero.\n",
$cursor->{'NUM_OF_FIELDS'});
Test($state or (undef $cursor) or 1);
}
( run in 1.463 second using v1.01-cache-2.11-cpan-437f7b0c052 )