cached singletons for most cases. The external reference issue is starting to come...
[dbsrgits/DBM-Deep.git] / t / 31_references.t
CommitLineData
019ab3a1 1use strict;
3300d0b3 2
9d4fa373 3use Test::More tests => 16;
019ab3a1 4use Test::Exception;
fde3db1a 5use t::common qw( new_fh );
019ab3a1 6
7use_ok( 'DBM::Deep' );
8
fde3db1a 9my ($fh, $filename) = new_fh();
019ab3a1 10my $db = DBM::Deep->new( $filename );
11
12my %hash = (
13 foo => 1,
14 bar => [ 1 .. 3 ],
15 baz => { a => 42 },
16);
17
18$db->{hash} = \%hash;
685e40f1 19isa_ok( tied(%hash), 'DBM::Deep::Hash' );
019ab3a1 20
21is( $db->{hash}{foo}, 1 );
22is_deeply( $db->{hash}{bar}, [ 1 .. 3 ] );
23is_deeply( $db->{hash}{baz}, { a => 42 } );
24
25$hash{foo} = 2;
26is( $db->{hash}{foo}, 2 );
c6ea6b6c 27
28$hash{bar}[1] = 90;
29is( $db->{hash}{bar}[1], 90 );
30
31$hash{baz}{b} = 33;
32is( $db->{hash}{baz}{b}, 33 );
33
34my @array = (
35 1, [ 1 .. 3 ], { a => 42 },
36);
37
38$db->{array} = \@array;
39isa_ok( tied(@array), 'DBM::Deep::Array' );
40
41is( $db->{array}[0], 1 );
42is_deeply( $db->{array}[1], [ 1 .. 3 ] );
43is_deeply( $db->{array}[2], { a => 42 } );
44
45$array[0] = 2;
46is( $db->{array}[0], 2 );
47
48$array[1][2] = 9;
49is( $db->{array}[1][2], 9 );
50
51$array[2]{b} = 'floober';
52is( $db->{array}[2]{b}, 'floober' );
9d4fa373 53
54my %hash2 = ( abc => [ 1 .. 3 ] );
55$array[3] = \%hash2;
9d4fa373 56
3300d0b3 57$hash2{ def } = \%hash;
58is( $array[3]{def}{foo}, 2 );