credit for Alex
[dbsrgits/DBM-Deep.git] / t / 43_transaction_maximum.t
1 use strict;
2 use Test::More;
3 use Test::Deep;
4 use Test::Exception;
5 use t::common qw( new_fh );
6
7 use DBM::Deep;
8
9 my $max_txns = 250;
10
11 my ($fh, $filename) = new_fh();
12
13 my @dbs = grep { $_ } map {
14     my $x = 
15     eval {
16         DBM::Deep->new(
17             file     => $filename,
18             num_txns => $max_txns,
19         );
20     };
21     die $@ if $@;
22     $x;
23 } 1 .. $max_txns;
24
25 my $num = $#dbs;
26
27 plan tests => do {
28     my $n = $num + 1;
29     2 * $n;
30 };
31
32 my %trans_ids;
33 for my $n (0 .. $num) {
34     lives_ok {
35         $dbs[$n]->begin_work
36     } "DB $n can begin_work";
37
38     my $trans_id = $dbs[$n]->_engine->trans_id;
39     ok( !exists $trans_ids{ $trans_id }, "DB $n has a unique transaction ID ($trans_id)" );
40     $trans_ids{ $trans_id } = $n;
41 }