2 use Test::More tests => 47;
4 use t::common qw( new_fh );
8 my ($fh, $filename) = new_fh();
9 my $db1 = DBM::Deep->new(
14 type => DBM::Deep->TYPE_ARRAY,
17 my $db2 = DBM::Deep->new(
22 type => DBM::Deep->TYPE_ARRAY,
26 is( $db1->[0], 'y', "Before transaction, DB1's 0 is Y" );
27 is( $db2->[0], 'y', "Before transaction, DB2's 0 is Y" );
31 is( $db1->[0], 'y', "DB1 transaction started, no actions - DB1's 0 is Y" );
32 is( $db2->[0], 'y', "DB1 transaction started, no actions - DB2's 0 is Y" );
35 is( $db1->[0], 'z', "Within DB1 transaction, DB1's 0 is Z" );
36 is( $db2->[0], 'y', "Within DB1 transaction, DB2's 0 is still Y" );
39 is( $db2->[1], 'foo', "DB2 set 1 within DB1's transaction, so DB2 can see it" );
40 ok( !exists $db1->[1], "Since 1 was added after the transaction began, DB1 doesn't see it." );
42 cmp_ok( scalar(@$db1), '==', 1, "DB1 has 1 element" );
43 cmp_ok( scalar(@$db2), '==', 2, "DB2 has 2 elements" );
47 is( $db1->[0], 'y', "After rollback, DB1's 0 is Y" );
48 is( $db2->[0], 'y', "After rollback, DB2's 0 is Y" );
50 is( $db1->[1], 'foo', "After DB1 transaction is over, DB1 can see 1" );
51 is( $db2->[1], 'foo', "After DB1 transaction is over, DB2 can still see 1" );
53 cmp_ok( scalar(@$db1), '==', 2, "DB1 now has 2 elements" );
54 cmp_ok( scalar(@$db2), '==', 2, "DB2 still has 2 elements" );
58 is( $db1->[0], 'y', "DB1 transaction started, no actions - DB1's 0 is Y" );
59 is( $db2->[0], 'y', "DB1 transaction started, no actions - DB2's 0 is Y" );
62 is( $db1->[2], 'z', "Within DB1 transaction, DB1's 2 is Z" );
63 ok( !exists $db2->[2], "Within DB1 transaction, DB2 cannot see 2" );
65 cmp_ok( scalar(@$db1), '==', 3, "DB1 has 3 elements" );
66 cmp_ok( scalar(@$db2), '==', 2, "DB2 has 2 elements" );
70 is( $db1->[0], 'y', "After rollback, DB1's 0 is Y" );
71 is( $db2->[0], 'y', "After rollback, DB2's 0 is Y" );
73 is( $db1->[2], 'z', "After DB1 transaction is over, DB1 can still see 2" );
74 is( $db2->[2], 'z', "After DB1 transaction is over, DB2 can now see 2" );
76 cmp_ok( scalar(@$db1), '==', 3, "DB1 now has 2 elements" );
77 cmp_ok( scalar(@$db2), '==', 3, "DB2 still has 2 elements" );
84 cmp_ok( scalar(@$db1), '==', 5, "DB1 now has 5 elements" );
85 cmp_ok( scalar(@$db2), '==', 3, "DB2 still has 3 elements" );
87 is( $db1->[0], 'bar' );
88 is( $db1->[-1], 'foo' );
92 cmp_ok( scalar(@$db1), '==', 3, "DB1 is back to 3 elements" );
93 cmp_ok( scalar(@$db2), '==', 3, "DB2 still has 3 elements" );
100 cmp_ok( scalar(@$db1), '==', 5, "DB1 now has 5 elements" );
101 cmp_ok( scalar(@$db2), '==', 3, "DB2 still has 3 elements" );
105 cmp_ok( scalar(@$db1), '==', 5, "DB1 is still at 5 elements" );
106 cmp_ok( scalar(@$db2), '==', 5, "DB2 now has 5 elements" );
108 is( $db1->[0], 'bar' );
109 is( $db1->[-1], 'foo' );
111 is( $db2->[0], 'bar' );
112 is( $db2->[-1], 'foo' );
116 @$db1 = (); # clear()
118 cmp_ok( scalar(@$db1), '==', 0, "DB1 now has 0 elements" );
119 cmp_ok( scalar(@$db2), '==', 5, "DB2 still has 5 elements" );
123 cmp_ok( scalar(@$db1), '==', 5, "DB1 now has 5 elements" );
124 cmp_ok( scalar(@$db2), '==', 5, "DB2 still has 5 elements" );