From 7c48e67cf07ee41bfde7139a62bb232bd23a4a48 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Wed, 6 Jun 2012 16:41:29 +0000 Subject: Imported from /srv/lorry/lorry-area/perl-dbi-tarball/DBI-1.622.tar.gz. --- t/07kids.t | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 t/07kids.t (limited to 't/07kids.t') diff --git a/t/07kids.t b/t/07kids.t new file mode 100644 index 0000000..8364ad2 --- /dev/null +++ b/t/07kids.t @@ -0,0 +1,102 @@ +#!perl -w +$|=1; + +use strict; + +use Test::More; + +use DBI 1.50; # also tests Exporter::require_version + +BEGIN { + plan skip_all => '$h->{Kids} attribute not supported for DBI::PurePerl' + if $DBI::PurePerl && $DBI::PurePerl; # doubled to avoid typo warning + plan tests => 20; +} + +## ---------------------------------------------------------------------------- +## 07kids.t +## ---------------------------------------------------------------------------- +# This test check the Kids and the ActiveKids attributes and how they act +# in various situations. +# +# Check the database handle's kids: +# - upon creation of handle +# - upon creation of statement handle +# - after execute of statement handle +# - after finish of statement handle +# - after destruction of statement handle +# Check the driver handle's kids: +# - after creation of database handle +# - after disconnection of database handle +# - after destruction of database handle +## ---------------------------------------------------------------------------- + + +# Connect to the example driver and create a database handle +my $dbh = DBI->connect('dbi:ExampleP:dummy', '', '', + { + PrintError => 1, + RaiseError => 0 + }); + +# check our database handle to make sure its good +isa_ok($dbh, 'DBI::db'); + +# check that it has no Kids or ActiveKids yet +cmp_ok($dbh->{Kids}, '==', 0, '... database handle has 0 Kid(s) at start'); +cmp_ok($dbh->{ActiveKids}, '==', 0, '... database handle has 0 ActiveKid(s) at start'); + +# create a scope for our $sth to live and die in +do { + + # create a statement handle + my $sth = $dbh->prepare('select uid from ./'); + + # verify that it is a correct statement handle + isa_ok($sth, "DBI::st"); + + # check our Kids and ActiveKids after prepare + cmp_ok($dbh->{Kids}, '==', 1, '... database handle has 1 Kid(s) after $dbh->prepare'); + cmp_ok($dbh->{ActiveKids}, '==', 0, '... database handle has 0 ActiveKid(s) after $dbh->prepare'); + + $sth->execute(); + + # check our Kids and ActiveKids after execute + cmp_ok($dbh->{Kids}, '==', 1, '... database handle has 1 Kid(s) after $sth->execute'); + cmp_ok($dbh->{ActiveKids}, '==', 1, '... database handle has 1 ActiveKid(s) after $sth->execute'); + + $sth->finish(); + + # check our Kids and Activekids after finish + cmp_ok($dbh->{Kids}, '==', 1, '... database handle has 1 Kid(s) after $sth->finish'); + cmp_ok($dbh->{ActiveKids}, '==', 0, '... database handle has 0 ActiveKid(s) after $sth->finish'); + +}; + +# now check it after the statement handle has been destroyed +cmp_ok($dbh->{Kids}, '==', 0, '... database handle has 0 Kid(s) after $sth is destroyed'); +cmp_ok($dbh->{ActiveKids}, '==', 0, '... database handle has 0 ActiveKid(s) after $sth is destroyed'); + +# get the database handles driver Driver +my $drh = $dbh->{Driver}; + +# check that is it a correct driver handle +isa_ok($drh, "DBI::dr"); + +# check the driver's Kids and ActiveKids +cmp_ok( $drh->{Kids}, '==', 1, '... driver handle has 1 Kid(s)'); +cmp_ok( $drh->{ActiveKids}, '==', 1, '... driver handle has 1 ActiveKid(s)'); + +$dbh->disconnect; + +# check the driver's Kids and ActiveKids after $dbh->disconnect +cmp_ok( $drh->{Kids}, '==', 1, '... driver handle has 1 Kid(s) after $dbh->disconnect'); +cmp_ok( $drh->{ActiveKids}, '==', 0, '... driver handle has 0 ActiveKid(s) after $dbh->disconnect'); + +undef $dbh; +ok(!defined($dbh), '... lets be sure that $dbh is not undefined'); + +# check the driver's Kids and ActiveKids after undef $dbh +cmp_ok( $drh->{Kids}, '==', 0, '... driver handle has 0 Kid(s) after undef $dbh'); +cmp_ok( $drh->{ActiveKids}, '==', 0, '... driver handle has 0 ActiveKid(s) after undef $dbh'); + -- cgit v1.2.1