4 use Test2::Tools::Tiny;
6 use Test2::API qw/run_subtest intercept test2_stack/;
9 package Formatter::Hide;
11 sub hide_buffered { 1 }
15 package Formatter::Show;
17 sub hide_buffered { 0 }
21 package Formatter::NA;
29 my $events = intercept {
31 my $hub = test2_stack->top;
32 $HAS_FORMATTER{unbuffered_none} = $hub->format ? 1 : 0;
34 run_subtest('unbuffered', $code);
37 my $hub = test2_stack->top;
38 $HAS_FORMATTER{buffered_none} = $hub->format ? 1 : 0;
40 run_subtest('buffered', $code, 'BUFFERED');
44 test2_stack->top->format(bless {}, 'Formatter::Hide');
46 my $hub = test2_stack->top;
47 $HAS_FORMATTER{unbuffered_hide} = $hub->format ? 1 : 0;
49 run_subtest('unbuffered', $code);
52 my $hub = test2_stack->top;
53 $HAS_FORMATTER{buffered_hide} = $hub->format ? 1 : 0;
55 run_subtest('buffered', $code, 'BUFFERED');
59 test2_stack->top->format(bless {}, 'Formatter::Show');
61 my $hub = test2_stack->top;
62 $HAS_FORMATTER{unbuffered_show} = $hub->format ? 1 : 0;
64 run_subtest('unbuffered', $code);
67 my $hub = test2_stack->top;
68 $HAS_FORMATTER{buffered_show} = $hub->format ? 1 : 0;
70 run_subtest('buffered', $code, 'BUFFERED');
75 my $hub = test2_stack->top;
76 $HAS_FORMATTER{unbuffered_na} = $hub->format ? 1 : 0;
78 run_subtest('unbuffered', $code);
80 test2_stack->top->format(bless {}, 'Formatter::NA');
82 my $hub = test2_stack->top;
83 $HAS_FORMATTER{buffered_na} = $hub->format ? 1 : 0;
85 run_subtest('buffered', $code, 'BUFFERED');
88 ok(!$HAS_FORMATTER{unbuffered_none}, "Unbuffered with no parent formatter has no formatter");
89 ok( $HAS_FORMATTER{unbuffered_show}, "Unbuffered where parent has 'show' formatter has formatter");
90 ok( $HAS_FORMATTER{unbuffered_hide}, "Unbuffered where parent has 'hide' formatter has formatter");
92 ok(!$HAS_FORMATTER{buffered_none}, "Buffered with no parent formatter has no formatter");
93 ok( $HAS_FORMATTER{buffered_show}, "Buffered where parent has 'show' formatter has formatter");
94 ok(!$HAS_FORMATTER{buffered_hide}, "Buffered where parent has 'hide' formatter has no formatter");