Refactored to _descend to fix the recursion bug
[dbsrgits/DBM-Deep.git] / t / 43_transaction_maximum.t
CommitLineData
e9b0b5f0 1use strict;
0e3e3555 2use warnings FATAL => 'all';
3
e9b0b5f0 4use Test::More;
5use Test::Deep;
6use Test::Exception;
0e3e3555 7use t::common qw( new_dbm );
e9b0b5f0 8
0e3e3555 9use_ok( 'DBM::Deep' );
e9b0b5f0 10
9c87a079 11my $max_txns = 255;
e9b0b5f0 12
0e3e3555 13my $dbm_factory = new_dbm(
14 num_txns => $max_txns,
15);
16while ( my $dbm_maker = $dbm_factory->() ) {
580e5ee2 17 my @dbs = ( $dbm_maker->() );
18 next unless $dbs[0]->supports('transactions');
0e3e3555 19
580e5ee2 20 push @dbs, grep { $_ } map {
21 eval { $dbm_maker->() }
22 } 2 .. $max_txns;
0e3e3555 23
24 cmp_ok( scalar(@dbs), '==', $max_txns, "We could open enough DB handles" );
25
26 my %trans_ids;
27 for my $n (0 .. $#dbs) {
28 lives_ok {
29 $dbs[$n]->begin_work
30 } "DB $n can begin_work";
31
32 my $trans_id = $dbs[$n]->_engine->trans_id;
33 ok( !exists $trans_ids{ $trans_id }, "DB $n has a unique transaction ID ($trans_id)" );
34 $trans_ids{ $trans_id } = $n;
35 }
e9b0b5f0 36}
0e3e3555 37
38done_testing;