use
5.014;
my
$test
= testauto(__FILE__);
my
$subs
=
$test
->standard;
$subs
->synopsis(fun(
$tryable
) {
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok !
length
$result
->id;
ok !
length
$result
->context;
ok
length
$result
->frames;
is
$result
->message,
'Exception!'
;
$result
});
$subs
->scenario(
'args-1'
, fun(
$tryable
) {
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok !
length
$result
->id;
ok !
length
$result
->context;
ok
length
$result
->frames;
is
$result
->message,
'Oops!'
;
$result
});
$subs
->scenario(
'args-kv'
, fun(
$tryable
) {
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok !
length
$result
->id;
ok !
length
$result
->context;
ok
length
$result
->frames;
is
$result
->message,
'Oops!'
;
$result
});
$subs
->example(-1,
'throw'
,
'method'
, fun(
$tryable
) {
$tryable
->
default
(fun(
$caught
) {
$caught
});
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok !
length
$result
->id;
ok !
length
$result
->context;
ok
length
$result
->frames;
is
$result
->message,
'Oops!'
;
$result
});
$subs
->example(-2,
'throw'
,
'method'
, fun(
$tryable
) {
$tryable
->
default
(fun(
$caught
) {
$caught
});
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok !
length
$result
->id;
ok !
length
$result
->context;
ok
length
$result
->frames;
is
$result
->message,
'Oops!'
;
$result
});
$subs
->example(-3,
'throw'
,
'method'
, fun(
$tryable
) {
$tryable
->
default
(fun(
$caught
) {
$caught
});
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
is
$result
->id,
'E001'
;
ok !
length
$result
->context;
ok
length
$result
->frames;
is
$result
->message,
'Oops!'
;
$result
});
$subs
->example(-1,
'explain'
,
'method'
, fun(
$tryable
) {
ok
my
$result
=
$tryable
->result;
$result
});
my
$frames
;
$subs
->example(-1,
'trace'
,
'method'
, fun(
$tryable
) {
$tryable
->
default
(fun(
$caught
) {
$caught
});
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok
length
$result
->frames;
is
ref
$result
->frames,
'ARRAY'
;
$frames
=
$result
->frames;
ok @{
$result
->frames};
$result
});
$subs
->example(-2,
'trace'
,
'method'
, fun(
$tryable
) {
$tryable
->
default
(fun(
$caught
) {
$caught
});
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok
length
$result
->frames;
is
ref
$result
->frames,
'ARRAY'
;
is @{
$result
->frames}, (
@$frames
- 1);
$result
});
$subs
->example(-3,
'trace'
,
'method'
, fun(
$tryable
) {
$tryable
->
default
(fun(
$caught
) {
$caught
});
ok
my
$result
=
$tryable
->result;
ok
$result
->isa(
'Data::Object::Exception'
);
ok
length
$result
->frames;
is
ref
$result
->frames,
'ARRAY'
;
is @{
$result
->frames}, 1;
$result
});
ok 1 and done_testing;