X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=t%2F100_bugs%2F013_lazybuild_required_undef.t;fp=t%2F100_bugs%2F013_lazybuild_required_undef.t;h=2c07718c3bf2bfd684c86319afe5b50d9139338c;hp=0000000000000000000000000000000000000000;hb=4c98ebb0cca8d5d49d3a91eaf735f9861d00ccb0;hpb=ad20156284763b7d6019af2279f24e1af097f3be diff --git a/t/100_bugs/013_lazybuild_required_undef.t b/t/100_bugs/013_lazybuild_required_undef.t new file mode 100644 index 0000000..2c07718 --- /dev/null +++ b/t/100_bugs/013_lazybuild_required_undef.t @@ -0,0 +1,31 @@ +package Foo; +use Mouse; + +## Problem: +## lazy_build sets required => 1 +## required does not permit setting to undef + +## Possible solutions: +#### remove required => 1 +#### check the attr to see if it accepts Undef (Maybe[], | Undef) +#### or, make required accept undef and use a predicate test + + +has 'foo' => ( isa => 'Int | Undef', is => 'rw', coerce => 1, lazy_build => 1 ); +has 'bar' => ( isa => 'Int | Undef', is => 'rw', coerce => 1 ); + +sub _build_foo { undef } + +package main; +use Test::More tests => 4; + +ok ( !defined(Foo->new->bar), 'NonLazyBuild: Undef default' ); +ok ( !defined(Foo->new->bar(undef)), 'NonLazyBuild: Undef explicit' ); + +ok ( !defined(Foo->new->foo), 'LazyBuild: Undef default/lazy_build' ); + +## This test fails at the time of creation. +ok ( !defined(Foo->new->foo(undef)), 'LazyBuild: Undef explicit' ); + + +1;