diff options
Diffstat (limited to 't/tests/test2/morecompare.t')
-rw-r--r-- | t/tests/test2/morecompare.t | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/t/tests/test2/morecompare.t b/t/tests/test2/morecompare.t new file mode 100644 index 0000000..ea85a18 --- /dev/null +++ b/t/tests/test2/morecompare.t @@ -0,0 +1,75 @@ +#!perl +use strict; +use warnings; +use 5.020; +use Test2::Bundle::Extended; +use lib 't/lib'; +use Test2::Tools::MoreCompare qw(bag call_list); +use Test2::API qw(intercept); + +subtest simple => sub { + imported_ok qw{bag call_list}; +}; + +subtest bag => sub { + my $empty = bag { }; + + my $simple = bag { + item 'a'; + item 'b'; + item 'c'; + }; + + my $closed = array { + item 0 => 'a'; + item 1 => 'b'; + item 2 => 'c'; + end; + }; + + is([], $empty, "empty array"); + is(['a'], $empty, "any array matches empty"); + + is([qw/a b c/], $simple, "simple exact match"); + is([qw/b c a/], $simple, "simple out of order"); + is([qw/a b c d e/], $simple, "simple with extra"); + is([qw/b a d e c/], $simple, "simple with extra, out of order"); + + is([qw/a b c/], $closed, "closed array"); + + my $events = intercept { + is({}, $empty); + is(undef, $empty); + is(1, $empty); + is('ARRAY', $empty); + + is([qw/x y z/], $simple); + is([qw/a b x/], $simple); + is([qw/x b c/], $simple); + + is([qw/a b c d/], $closed); + }; + + @$events = grep {$_->isa('Test2::Event::Ok')} @$events; + is(@$events, 8, "8 events"); + is($_->pass, 0, "event failed") for @$events; +}; + +subtest call_list => sub { + my $obj = mock 'My::Class' => ( + add => [ + many => sub { return (1,2,3) }, + one => sub { 4 }, + ], + ); + + my $calls = object { + call one => 4; + call_list many => [1,2,3]; + call_list one => [4]; + }; + + is(bless({},'My::Class'), $calls, 'call_list matches'); +}; + +done_testing; |