my
$union1
= Int | MyArrayRef;
my
$union2
= MyArrayRef | Int;
isa_ok(
$union1
,
"Mouse::Meta::TypeConstraint"
);
isa_ok(
$union1
,
"Mouse::Meta::TypeConstraint"
);
isa_ok(
$union2
,
"Type::Tiny"
);
should_pass([],
$union1
);
should_pass(2,
$union1
);
should_fail({},
$union1
);
should_pass([],
$union2
);
should_pass(2,
$union2
);
should_fail({},
$union2
);
note explain(
$union2
);
my
$param1
= MyArrayRef[Int];
my
$param2
= ArrayRef[MyInt];
should_pass([1,2,3],
$param1
);
should_pass([],
$param1
);
should_fail({},
$param1
);
should_fail([
"x"
],
$param1
);
should_pass([1,2,3],
$param2
);
should_pass([],
$param2
);
should_fail({},
$param2
);
should_fail([
"x"
],
$param2
);
my
$param_union
= MyArrayRef[Int | ArrayRef];
should_pass([],
$param_union
);
should_pass([1,2,3],
$param_union
);
should_pass([[],[]],
$param_union
);
should_pass([11,[]],
$param_union
);
should_pass([[],11],
$param_union
);
should_fail([1.111],
$param_union
);
done_testing;