15759b3d2Safresh1package Test2::Event::Ok; 25759b3d2Safresh1use strict; 35759b3d2Safresh1use warnings; 45759b3d2Safresh1 5*5486feefSafresh1our $VERSION = '1.302199'; 65759b3d2Safresh1 75759b3d2Safresh1 85759b3d2Safresh1BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } 95759b3d2Safresh1use Test2::Util::HashBase qw{ 105759b3d2Safresh1 pass effective_pass name todo 115759b3d2Safresh1}; 125759b3d2Safresh1 135759b3d2Safresh1sub init { 145759b3d2Safresh1 my $self = shift; 155759b3d2Safresh1 165759b3d2Safresh1 # Do not store objects here, only true or false 175759b3d2Safresh1 $self->{+PASS} = $self->{+PASS} ? 1 : 0; 185759b3d2Safresh1 $self->{+EFFECTIVE_PASS} = $self->{+PASS} || (defined($self->{+TODO}) ? 1 : 0); 195759b3d2Safresh1} 205759b3d2Safresh1 215759b3d2Safresh1{ 225759b3d2Safresh1 no warnings 'redefine'; 235759b3d2Safresh1 sub set_todo { 245759b3d2Safresh1 my $self = shift; 255759b3d2Safresh1 my ($todo) = @_; 265759b3d2Safresh1 $self->{+TODO} = $todo; 275759b3d2Safresh1 $self->{+EFFECTIVE_PASS} = defined($todo) ? 1 : $self->{+PASS}; 285759b3d2Safresh1 } 295759b3d2Safresh1} 305759b3d2Safresh1 315759b3d2Safresh1sub increments_count { 1 }; 325759b3d2Safresh1 335759b3d2Safresh1sub causes_fail { !$_[0]->{+EFFECTIVE_PASS} } 345759b3d2Safresh1 355759b3d2Safresh1sub summary { 365759b3d2Safresh1 my $self = shift; 375759b3d2Safresh1 385759b3d2Safresh1 my $name = $self->{+NAME} || "Nameless Assertion"; 395759b3d2Safresh1 405759b3d2Safresh1 my $todo = $self->{+TODO}; 415759b3d2Safresh1 if ($todo) { 425759b3d2Safresh1 $name .= " (TODO: $todo)"; 435759b3d2Safresh1 } 445759b3d2Safresh1 elsif (defined $todo) { 455759b3d2Safresh1 $name .= " (TODO)" 465759b3d2Safresh1 } 475759b3d2Safresh1 485759b3d2Safresh1 return $name; 495759b3d2Safresh1} 505759b3d2Safresh1 515759b3d2Safresh1sub extra_amnesty { 525759b3d2Safresh1 my $self = shift; 535759b3d2Safresh1 return unless defined($self->{+TODO}) || ($self->{+EFFECTIVE_PASS} && !$self->{+PASS}); 545759b3d2Safresh1 return { 555759b3d2Safresh1 tag => 'TODO', 565759b3d2Safresh1 details => $self->{+TODO}, 575759b3d2Safresh1 }; 585759b3d2Safresh1} 595759b3d2Safresh1 605759b3d2Safresh1sub facet_data { 615759b3d2Safresh1 my $self = shift; 625759b3d2Safresh1 635759b3d2Safresh1 my $out = $self->common_facet_data; 645759b3d2Safresh1 655759b3d2Safresh1 $out->{assert} = { 665759b3d2Safresh1 no_debug => 1, # Legacy behavior 675759b3d2Safresh1 pass => $self->{+PASS}, 685759b3d2Safresh1 details => $self->{+NAME}, 695759b3d2Safresh1 }; 705759b3d2Safresh1 71*5486feefSafresh1 if (my @extra_amnesty = $self->extra_amnesty) { 72256a93a4Safresh1 my %seen; 73256a93a4Safresh1 74256a93a4Safresh1 # It is possible the extra amnesty can be a duplicate, so filter it. 75256a93a4Safresh1 $out->{amnesty} = [ 76256a93a4Safresh1 grep { !$seen{defined($_->{tag}) ? $_->{tag} : ''}->{defined($_->{details}) ? $_->{details} : ''}++ } 77*5486feefSafresh1 @extra_amnesty, 78256a93a4Safresh1 @{$out->{amnesty}}, 79256a93a4Safresh1 ]; 805759b3d2Safresh1 } 815759b3d2Safresh1 825759b3d2Safresh1 return $out; 835759b3d2Safresh1} 845759b3d2Safresh1 855759b3d2Safresh11; 865759b3d2Safresh1 875759b3d2Safresh1__END__ 885759b3d2Safresh1 895759b3d2Safresh1=pod 905759b3d2Safresh1 915759b3d2Safresh1=encoding UTF-8 925759b3d2Safresh1 935759b3d2Safresh1=head1 NAME 945759b3d2Safresh1 955759b3d2Safresh1Test2::Event::Ok - Ok event type 965759b3d2Safresh1 975759b3d2Safresh1=head1 DESCRIPTION 985759b3d2Safresh1 995759b3d2Safresh1Ok events are generated whenever you run a test that produces a result. 1005759b3d2Safresh1Examples are C<ok()>, and C<is()>. 1015759b3d2Safresh1 1025759b3d2Safresh1=head1 SYNOPSIS 1035759b3d2Safresh1 1045759b3d2Safresh1 use Test2::API qw/context/; 1055759b3d2Safresh1 use Test2::Event::Ok; 1065759b3d2Safresh1 1075759b3d2Safresh1 my $ctx = context(); 1085759b3d2Safresh1 my $event = $ctx->ok($bool, $name, \@diag); 1095759b3d2Safresh1 1105759b3d2Safresh1or: 1115759b3d2Safresh1 1125759b3d2Safresh1 my $ctx = context(); 1135759b3d2Safresh1 my $event = $ctx->send_event( 1145759b3d2Safresh1 'Ok', 1155759b3d2Safresh1 pass => $bool, 1165759b3d2Safresh1 name => $name, 1175759b3d2Safresh1 ); 1185759b3d2Safresh1 1195759b3d2Safresh1=head1 ACCESSORS 1205759b3d2Safresh1 1215759b3d2Safresh1=over 4 1225759b3d2Safresh1 1235759b3d2Safresh1=item $rb = $e->pass 1245759b3d2Safresh1 1255759b3d2Safresh1The original true/false value of whatever was passed into the event (but 1265759b3d2Safresh1reduced down to 1 or 0). 1275759b3d2Safresh1 1285759b3d2Safresh1=item $name = $e->name 1295759b3d2Safresh1 1305759b3d2Safresh1Name of the test. 1315759b3d2Safresh1 1325759b3d2Safresh1=item $b = $e->effective_pass 1335759b3d2Safresh1 1345759b3d2Safresh1This is the true/false value of the test after TODO and similar modifiers are 1355759b3d2Safresh1taken into account. 1365759b3d2Safresh1 1375759b3d2Safresh1=back 1385759b3d2Safresh1 1395759b3d2Safresh1=head1 SOURCE 1405759b3d2Safresh1 1415759b3d2Safresh1The source code repository for Test2 can be found at 142*5486feefSafresh1L<https://github.com/Test-More/test-more/>. 1435759b3d2Safresh1 1445759b3d2Safresh1=head1 MAINTAINERS 1455759b3d2Safresh1 1465759b3d2Safresh1=over 4 1475759b3d2Safresh1 1485759b3d2Safresh1=item Chad Granum E<lt>exodist@cpan.orgE<gt> 1495759b3d2Safresh1 1505759b3d2Safresh1=back 1515759b3d2Safresh1 1525759b3d2Safresh1=head1 AUTHORS 1535759b3d2Safresh1 1545759b3d2Safresh1=over 4 1555759b3d2Safresh1 1565759b3d2Safresh1=item Chad Granum E<lt>exodist@cpan.orgE<gt> 1575759b3d2Safresh1 1585759b3d2Safresh1=back 1595759b3d2Safresh1 1605759b3d2Safresh1=head1 COPYRIGHT 1615759b3d2Safresh1 162256a93a4Safresh1Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. 1635759b3d2Safresh1 1645759b3d2Safresh1This program is free software; you can redistribute it and/or 1655759b3d2Safresh1modify it under the same terms as Perl itself. 1665759b3d2Safresh1 167*5486feefSafresh1See L<https://dev.perl.org/licenses/> 1685759b3d2Safresh1 1695759b3d2Safresh1=cut 170