r14214@rob-kinyons-computer (orig r8081): rkinyon | 2006-11-17 20:51:21 -0500
[dbsrgits/DBM-Deep.git] / t / 31_references.t
CommitLineData
019ab3a1 1##
2# DBM::Deep Test
3##
4use strict;
9d4fa373 5use Test::More tests => 16;
019ab3a1 6use Test::Exception;
fde3db1a 7use t::common qw( new_fh );
019ab3a1 8
9use_ok( 'DBM::Deep' );
10
fde3db1a 11my ($fh, $filename) = new_fh();
019ab3a1 12my $db = DBM::Deep->new( $filename );
13
14my %hash = (
15 foo => 1,
16 bar => [ 1 .. 3 ],
17 baz => { a => 42 },
18);
19
20$db->{hash} = \%hash;
685e40f1 21isa_ok( tied(%hash), 'DBM::Deep::Hash' );
019ab3a1 22
23is( $db->{hash}{foo}, 1 );
24is_deeply( $db->{hash}{bar}, [ 1 .. 3 ] );
25is_deeply( $db->{hash}{baz}, { a => 42 } );
26
27$hash{foo} = 2;
28is( $db->{hash}{foo}, 2 );
c6ea6b6c 29
30$hash{bar}[1] = 90;
31is( $db->{hash}{bar}[1], 90 );
32
33$hash{baz}{b} = 33;
34is( $db->{hash}{baz}{b}, 33 );
35
36my @array = (
37 1, [ 1 .. 3 ], { a => 42 },
38);
39
40$db->{array} = \@array;
41isa_ok( tied(@array), 'DBM::Deep::Array' );
42
43is( $db->{array}[0], 1 );
44is_deeply( $db->{array}[1], [ 1 .. 3 ] );
45is_deeply( $db->{array}[2], { a => 42 } );
46
47$array[0] = 2;
48is( $db->{array}[0], 2 );
49
50$array[1][2] = 9;
51is( $db->{array}[1][2], 9 );
52
53$array[2]{b} = 'floober';
54is( $db->{array}[2]{b}, 'floober' );
9d4fa373 55
56my %hash2 = ( abc => [ 1 .. 3 ] );
57$array[3] = \%hash2;
9a63e1f2 58SKIP: {
59 skip "Internal references are not supported right now", 1;
60 $hash2{ def } = \%hash;
9d4fa373 61
9a63e1f2 62 is( $array[3]{def}{foo}, 2 );
63}