#!/usr/bin/perl -w print "1..1\n"; use strict; use File::CounterFile; my $cf = "./zz-counter-$$"; # the name for out temprary counter # Test normal object creation and increment unlink $cf; my $c = new File::CounterFile $cf; my $id1 = $c->inc; my $id2 = $c->inc; $c = new File::CounterFile $cf; my $id3 = $c->inc; my $id4 = $c->dec; die "test failed" unless ($id1 == 1 && $id2 == 2 && $id3 == 3 && $id4 == 2); unlink $cf or die "Can't unlink $cf: $!"; # Test magic increment $id1 = (new File::CounterFile $cf, "aa98")->inc; $id2 = (new File::CounterFile $cf)->inc; $id3 = (new File::CounterFile $cf)->inc; eval { # This should now work because "Decrement is not magical in perl" $c = new File::CounterFile $cf; $id4 = $c->dec; $c = undef; }; die "test failed (No exception to catch)" unless $@; #print "$id1 $id2 $id3\n"; die "test failed" unless ($id1 eq "aa99" && $id2 eq "ab00" && $id3 eq "ab01"); unlink $cf or die "Can't unlink $cf: $!"; # Test operator overloading $c = new File::CounterFile $cf, "100"; $c->lock; $c++; # counter is now 101 $c++; # counter is now 102 $c++; # counter is now 103 $c--; # counter is now 102 again $id1 = "$c"; $id2 = ++$c; $c = undef; # destroy object unlink $cf; die "test failed" unless $id1 == 102 && $id2 == 103; print "# Selftest for File::CounterFile $File::CounterFile::VERSION ok\n"; print "ok 1\n";