c46064c6d2abd62188523337d2a8732ba71b3f87
[dbsrgits/DBM-Deep.git] / t / 23_misc.t
1 ##
2 # DBM::Deep Test
3 ##
4 use strict;
5 use Test::More tests => 7;
6 use Test::Exception;
7 use t::common qw( new_fh );
8
9 use_ok( 'DBM::Deep' );
10
11 my ($fh, $filename) = new_fh();
12 my $db = DBM::Deep->new( $filename );
13
14 $db->{key1} = "value1";
15 is( $db->{key1}, "value1", "Value set correctly" );
16
17 # Testing to verify that the close() will occur if open is called on an open DB.
18 #XXX WOW is this hacky ...
19 $db->_get_self->_storage->open;
20 is( $db->{key1}, "value1", "Value still set after re-open" );
21
22 throws_ok {
23     my $db = DBM::Deep->new( 't' );
24 } qr/^DBM::Deep: Cannot sysopen file 't': /, "Can't open a file we aren't allowed to touch";
25
26 throws_ok {
27     my $db = DBM::Deep->new( __FILE__ );
28 } qr/^DBM::Deep: Signature not found -- file is not a Deep DB/, "Only DBM::Deep DB files will be opened";
29
30 {
31     my $db = DBM::Deep->new(
32         file => $filename,
33         locking => 1,
34     );
35     $db->_get_self->_storage->close( $db->_get_self );
36     ok( !$db->lock, "Calling lock() on a closed database returns false" );
37 }
38
39 {
40     my $db = DBM::Deep->new(
41         file => $filename,
42         locking => 1,
43     );
44     $db->lock;
45     $db->_get_self->_storage->close( $db->_get_self );
46     ok( !$db->unlock, "Calling unlock() on a closed database returns false" );
47 }