my
$CLASS
;
BEGIN {
$CLASS
=
'Test2::Util::Facets2Legacy'
;
*_get_facet_data
=
$CLASS
->can(
'_get_facet_data'
);
}
tests
_get_facet_data
=>
sub
{
my
$pass
= Test2::Event::Pass->new(
name
=>
'xxx'
);
is_deeply(
_get_facet_data(
$pass
),
{
about
=> {
package
=>
'Test2::Event::Pass'
,
details
=>
'pass'
,
eid
=>
$pass
->eid},
assert
=> {
pass
=> 1,
details
=>
'xxx'
},
},
"Got facet data from event"
);
is_deeply(
_get_facet_data({
assert
=> {
pass
=> 1}}),
{
assert
=> {
pass
=> 1}},
"Facet data gets passed through"
);
my
$file
= __FILE__;
my
$line
;
like(
exception {
$line
= __LINE__; _get_facet_data([]) },
qr/'ARRAY\(.*\)' Does not appear to be either a Test::Event or an EventFacet hashref at \Q$file\E line $line/
,
"Must provide sane input data"
);
{
}
my
$e
= Fake::Event->new();
like(
exception {
$line
= __LINE__;
$e
->causes_fail },
qr/Cycle between Facets2Legacy and Fake::Event=HASH\(.*\)->facet_data\(\) \(Did you forget to override the facet_data\(\) method\?\)/
,
"Cannot depend on legacy facet_data and Facets2Legacy"
);
};
tests
causes_fail
=>
sub
{
is(causes_fail({
errors
=> [{
fail
=> 1}]}), 1,
"Fatal errors cause failure"
);
is(causes_fail({
control
=> {
terminate
=> 0}}), 0,
"defined but 0 termination does not cause failure"
);
is(causes_fail({
control
=> {
terminate
=> 1}}), 1,
"non-zero defined termination causes failure"
);
is(causes_fail({
control
=> {
halt
=> 1}}), 1,
"A halt causes failure"
);
is(causes_fail({
assert
=> {
pass
=> 0}}), 1,
"non-passign assert causes failure"
);
is(causes_fail({
assert
=> {
pass
=> 0},
amnesty
=> [{}]}), 0,
"amnesty prevents assertion failure"
);
is(causes_fail({}), 0,
"Default is no failure"
);
};
tests
diagnostics
=>
sub
{
is(diagnostics({}), 0,
"Default is no"
);
is(diagnostics({
errors
=> [{}]}), 1,
"Errors mean diagnostics"
);
is(diagnostics({
info
=> [{}]}), 0,
"Info alone does not make diagnostics"
);
is(diagnostics({
info
=> [{
debug
=> 1}]}), 1,
"Debug flag makes info diagnostics"
);
};
tests
global
=>
sub
{
is(global({}), 0,
"not global by default"
);
is(global({
control
=> {
global
=> 0}}), 0,
"global not set"
);
is(global({
control
=> {
global
=> 1}}), 1,
"global is set"
);
};
tests
increments_count
=>
sub
{
is(increments_count({}), 0,
"No count bump without an assertion"
);
is(increments_count({
assert
=> {}}), 1,
"count bump with assertion"
);
};
tests
no_display
=>
sub
{
is(no_display({}), 0,
"default is no"
);
is(no_display({
about
=> {
no_display
=> 0}}), 0,
"set to off"
);
is(no_display({
about
=> {
no_display
=> 1}}), 1,
"set to on"
);
};
tests
subtest_id
=>
sub
{
is(subtest_id({}),
undef
,
"none by default"
);
is(subtest_id({
parent
=> {
hid
=> 123}}), 123,
"use parent hid when present"
);
};
tests
summary
=>
sub
{
is(summary({}),
''
,
"no summary without about->details"
);
is(summary({
about
=> {
details
=>
'foo'
}}),
'foo'
,
"got about->details"
);
};
tests
terminate
=>
sub
{
is(terminate({}),
undef
,
"undef by default"
);
is(terminate({
control
=> {
terminate
=>
undef
}}),
undef
,
"undef by choice"
);
is(terminate({
control
=> {
terminate
=> 100}}), 100,
"got the terminate value"
);
is(terminate({
control
=> {
terminate
=> 0}}), 0,
"0 is passed through"
);
};
tests
sets_plan
=>
sub
{
is_deeply( [sets_plan({})], [],
"No plan by default"
);
is_deeply(
[sets_plan({
plan
=> {}})],
[0],
"Empty plan means count of 0, nothing extra"
);
is_deeply(
[sets_plan({
plan
=> {
count
=> 100}})],
[100],
"Got simple count"
);
is_deeply(
[sets_plan({
plan
=> {
count
=> 0,
none
=> 1}})],
[0,
'NO PLAN'
],
"No Plan"
);
is_deeply(
[sets_plan({
plan
=> {
count
=> 0,
skip
=> 1}})],
[0,
'SKIP'
],
"Skip"
);
is_deeply(
[sets_plan({
plan
=> {
count
=> 0,
skip
=> 1,
details
=>
'foo bar'
}})],
[0,
'SKIP'
,
'foo bar'
],
"Skip with reason"
);
};
done_testing;