5 use Test::More tests => 11;
7 use File::Temp qw( tempfile tempdir );
11 my $dir = tempdir( CLEANUP => 1 );
12 my ($fh, $filename) = tempfile( 'tmpXXXX', UNLINK => 1, DIR => $dir );
14 # Create the datafile to be used
16 my $db = DBM::Deep->new( $filename );
17 $db->{hash} = { foo => [ 'a' .. 'c' ] };
21 open(FILE, $filename) || die("Can't open '$filename' for reading: $!\n");
25 # test if we can open and read a db using its filehandle
27 ok(($db = DBM::Deep->new(fh => *FILE)), "open db in filehandle");
28 ok($db->{hash}->{foo}->[1] eq 'b', "and get at stuff in the database");
31 } qr/Cannot write to a readonly filehandle/,
32 "Can't write to a read-only filehandle";
33 ok( !$db->exists( 'foo' ), "foo doesn't exist" );
35 my $db_obj = $db->_get_self;
36 ok( $db_obj->_root->{inode}, "The inode has been set" );
41 # now the same, but with an offset into the file. Use the database that's
42 # embedded in the test for the DATA filehandle. First, find the database ...
43 open(FILE, "t/28_DATA.t") || die("Can't open t/28_DATA.t\n");
44 while(my $line = <FILE>) {
45 last if($line =~ /^__DATA__/);
47 my $offset = tell(FILE);
51 open(FILE, "t/28_DATA.t");
55 ok(($db = DBM::Deep->new(fh => *FILE, file_offset => $offset)), "open db in filehandle with offset");
57 ok($db->{hash}->{foo}->[1] eq 'b', "and get at stuff in the database");
59 ok( !$db->exists( 'foo' ), "foo doesn't exist yet" );
62 } qr/Cannot write to a readonly filehandle/, "Can't write to a read-only filehandle";
63 ok( !$db->exists( 'foo' ), "foo doesn't exist" );