2 use warnings FATAL => 'all';
6 use t::common qw( new_dbm );
10 if ( $ENV{NO_TEST_TRANSACTIONS} ) {
15 my $dbm_factory = new_dbm(
20 while ( my $dbm_maker = $dbm_factory->() ) {
21 my $db1 = $dbm_maker->();
22 my $db2 = $dbm_maker->();
25 $db1->{bar} = $db1->{foo};
27 is( $db1->{foo}, 5, "Foo is still 5" );
28 is( $db1->{bar}, 5, "Bar is now 5" );
32 is( $db1->{foo}, 6, "Foo is now 6" );
33 is( $db1->{bar}, 5, "Bar is still 5" );
35 $db1->{foo} = [ 1 .. 3 ];
36 $db1->{bar} = $db1->{foo};
38 is( $db1->{foo}[1], 2, "Foo[1] is still 2" );
39 is( $db1->{bar}[1], 2, "Bar[1] is now 2" );
43 is( $db1->{foo}[3], 42, "Foo[3] is now 42" );
44 is( $db1->{bar}[3], 42, "Bar[3] is also 42" );
47 is( $db1->{bar}[3], 42, "After delete Foo, Bar[3] is still 42" );
49 $db1->{foo} = $db1->{bar};
55 is( $db2->{bar}, undef, "It's deleted in the transaction" );
56 is( $db1->{bar}[3], 42, "... but not in the main" );
60 # Why hasn't this failed!? Is it because stuff isn't getting deleted as
61 # expected? I need a test that walks the sectors
62 is( $db1->{bar}[3], 42, "After delete Foo, Bar[3] is still 42" );
63 is( $db2->{bar}[3], 42, "After delete Foo, Bar[3] is still 42" );
67 is( $db1->{bar}[3], 42, "After delete Foo, Bar[3] is still 42" );
79 ok( !exists $db1->{bar}, "After commit, bar is gone" );