1*5486feefSafresh1use Test2::Bundle::Extended -target => 'Test2::Todo'; 2*5486feefSafresh1 3*5486feefSafresh1my $todo = Test2::Todo->new(reason => 'xyz'); 4*5486feefSafresh1def isa_ok => ($todo, $CLASS); 5*5486feefSafresh1def ok => ((grep {$_->{code} == $todo->_filter} @{Test2::API::test2_stack->top->_pre_filters}), "filter added"); 6*5486feefSafresh1def is => ($todo->reason, 'xyz', "got reason"); 7*5486feefSafresh1def ref_is => ($todo->hub, Test2::API::test2_stack->top, "used current hub"); 8*5486feefSafresh1def ok => (my $filter = $todo->_filter, "stored filter"); 9*5486feefSafresh1$todo->end; 10*5486feefSafresh1 11*5486feefSafresh1do_def; 12*5486feefSafresh1ok(!(grep {$_->{code} == $filter} @{Test2::API::test2_stack->top->_pre_filters}), "filter removed"); 13*5486feefSafresh1 14*5486feefSafresh1my $ok = Test2::Event::Ok->new(pass => 0, name => 'xxx'); 15*5486feefSafresh1my $diag = Test2::Event::Diag->new(message => 'xxx'); 16*5486feefSafresh1 17*5486feefSafresh1ok(!$ok->todo, "ok is not TODO"); 18*5486feefSafresh1ok(!$ok->effective_pass, "not effectively passing"); 19*5486feefSafresh1my $filtered_ok = $filter->(Test2::API::test2_stack->top, $ok); 20*5486feefSafresh1is($filtered_ok->todo, 'xyz', "the ok is now todo"); 21*5486feefSafresh1ok($filtered_ok->effective_pass, "now effectively passing"); 22*5486feefSafresh1 23*5486feefSafresh1isa_ok($diag, 'Test2::Event::Diag'); 24*5486feefSafresh1my $filtered_diag = $filter->(Test2::API::test2_stack->top, $diag); 25*5486feefSafresh1isa_ok($filtered_diag, 'Test2::Event::Note'); 26*5486feefSafresh1is($filtered_diag->message, $diag->message, "new note has the same message"); 27*5486feefSafresh1 28*5486feefSafresh1my $events = intercept { 29*5486feefSafresh1 ok(0, 'fail'); 30*5486feefSafresh1 31*5486feefSafresh1 my $todo = Test2::Todo->new(reason => 'xyz'); 32*5486feefSafresh1 ok(0, 'todo fail'); 33*5486feefSafresh1 $todo = undef; 34*5486feefSafresh1 35*5486feefSafresh1 ok(0, 'fail'); 36*5486feefSafresh1}; 37*5486feefSafresh1 38*5486feefSafresh1like( 39*5486feefSafresh1 $events, 40*5486feefSafresh1 array { 41*5486feefSafresh1 event Ok => { pass => 0, effective_pass => 0, todo => DNE }; 42*5486feefSafresh1 event Diag => {}; 43*5486feefSafresh1 44*5486feefSafresh1 event Ok => { pass => 0, effective_pass => 1, todo => 'xyz' }; 45*5486feefSafresh1 event Note => {}; 46*5486feefSafresh1 47*5486feefSafresh1 event Ok => { pass => 0, effective_pass => 0, todo => DNE }; 48*5486feefSafresh1 event Diag => {}; 49*5486feefSafresh1 }, 50*5486feefSafresh1 "Got expected events" 51*5486feefSafresh1); 52*5486feefSafresh1 53*5486feefSafresh1$todo = $CLASS->new(reason => 'this is a todo'); 54*5486feefSafresh1$todo->end; 55*5486feefSafresh1 56*5486feefSafresh1is("$todo", 'this is a todo', "Stringify's to the reason"); 57*5486feefSafresh1ok($todo eq 'this is a todo', "String comparison works"); 58*5486feefSafresh1 59*5486feefSafresh1done_testing; 60