X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fmethod-generate-accessor.t;h=118ff47c33f61266093941960c0570f901a93cb9;hb=HEAD;hp=64dbfeec6da5ebafdbed2ec9d088da7f6938cb00;hpb=4752c97bb22149613a59912fa5a23b865cadef54;p=gitmo%2FMoo.git diff --git a/t/method-generate-accessor.t b/t/method-generate-accessor.t index 64dbfee..118ff47 100644 --- a/t/method-generate-accessor.t +++ b/t/method-generate-accessor.t @@ -32,39 +32,51 @@ like( qr/Unknown is purple/, 'is purple rejected' ); -for my $setting (qw( default coerce )) { - like( - exception { $gen->generate_method('Foo' => 'four' => { is => 'ro', $setting => 5 }) }, - qr/Invalid $setting/, "$setting - scalar rejected" - ); +is(exception { + $gen->generate_method('Foo' => 'three' => { is => 'bare', predicate => 1 }); +}, undef, 'generating bare accessor works'); + +ok(Foo->can('has_three'), 'bare accessor will still generate predicate'); + +like( + exception { $gen->generate_method('Foo' => 'four' => { is => 'ro', coerce => 5 }) }, + qr/Invalid coerce/, "coerce - scalar rejected" +); + +is( + exception { $gen->generate_method('Foo' => 'four' => { is => 'ro', default => 5 }) }, + undef, "default - non-ref scalar accepted" +); + +foreach my $setting (qw( default coerce )) { like( - exception { $gen->generate_method('Foo' => 'five' => { is => 'ro', $setting => [] }) }, + exception { $gen->generate_method('Foo' => 'five' => { allow_overwrite => 1, is => 'ro', $setting => [] }) }, qr/Invalid $setting/, "$setting - arrayref rejected" ); like( - exception { $gen->generate_method('Foo' => 'five' => { is => 'ro', $setting => Foo->new }) }, + exception { $gen->generate_method('Foo' => 'five' => { allow_overwrite => 1, is => 'ro', $setting => Foo->new }) }, qr/Invalid $setting/, "$setting - non-code-convertible object rejected" ); is( - exception { $gen->generate_method('Foo' => 'six' => { is => 'ro', $setting => sub { 5 } }) }, + exception { $gen->generate_method('Foo' => 'six' => { allow_overwrite => 1, is => 'ro', $setting => sub { 5 } }) }, undef, "$setting - coderef accepted" ); is( - exception { $gen->generate_method('Foo' => 'seven' => { is => 'ro', $setting => bless sub { 5 } => 'Blah' }) }, + exception { $gen->generate_method('Foo' => 'seven' => { allow_overwrite => 1, is => 'ro', $setting => bless sub { 5 } => 'Blah' }) }, undef, "$setting - blessed sub accepted" ); is( - exception { $gen->generate_method('Foo' => 'eight' => { is => 'ro', $setting => WithOverload->new }) }, + exception { $gen->generate_method('Foo' => 'eight' => { allow_overwrite => 1, is => 'ro', $setting => WithOverload->new }) }, undef, "$setting - object with overloaded ->() accepted" ); like( - exception { $gen->generate_method('Foo' => 'nine' => { is => 'ro', $setting => bless {} => 'Blah' }) }, + exception { $gen->generate_method('Foo' => 'nine' => { allow_overwrite => 1, is => 'ro', $setting => bless {} => 'Blah' }) }, qr/Invalid $setting/, "$setting - object rejected" ); }