use strict; use warnings; # change 'tests => 1' to 'tests => last_test_to_print'; use Test::More qw(no_plan); use Data::Dumper; $Data::Dumper::Indent = 1; #== TESTS =========================================================================== use TM; require_ok( 'TM::Synchronizable::Null' ); can_ok 'TM::Synchronizable::Null', 'apply'; Class::Trait->apply ('TM' => qw(TM::Synchronizable::Null)); { # structural tests my $tm = new TM (baseuri => 'tm:'); ok ($tm->isa('TM'), 'correct class'); ok ($tm->does ('TM::Synchronizable::Null'), 'trait: Null'); ok ($tm->can ('sync_in'), 'trait: can in'); ok ($tm->can ('sync_out'), 'trait: can out'); } { my $tm = new TM (url => 'io:stdin'); $tm->sync_in; $tm->sync_out; is ($tm->{_ins}, 1, 'once in'); is ($tm->{_outs}, undef, 'never out'); $tm->url ('io:stdout'); $tm->sync_in; $tm->sync_out; is ($tm->{_ins}, 2, 'once in'); is ($tm->{_outs}, undef, 'not out'); $tm->consolidate; # do something, whatever $tm->sync_out; is ($tm->{_ins}, 2, 'once in'); is ($tm->{_outs}, 1, 'finally out'); } __END__