1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
=pod
=encoding utf-8
=head1 PURPOSE
Test that MooseX::AttributeTags compiles and works.
=head1 AUTHOR
Toby Inkster E<lt>tobyink@cpan.orgE<gt>.
=head1 COPYRIGHT AND LICENCE
This software is copyright (c) 2013, 2019 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
use strict;
use warnings;
use Test::More;
use Test::Fatal;
{
package Foo;
use Moose;
use namespace::autoclean;
use MooseX::AttributeTags (
'Foo',
'Bar' => [
quux => [ is => 'ro', default => 666 ],
quuux => [ is => 'ro', default => 999 ],
xyzzy => sub { 42 },
],
'Baz' => [
barry => [ is => 'ro', required => 1 ],
],
);
has munchkin1 => (
traits => [ Foo, Bar ],
is => 'ro',
quux => 777,
);
::like(
::exception {
has munchkin2 => (
traits => [ Baz ],
is => 'ro',
);
},
qr{\AAttribute .?barry.? is required},
);
}
my $m1 = 'Foo'->meta->get_attribute('munchkin1');
ok $m1->does(Foo::Foo);
ok $m1->does(Foo::Bar);
can_ok($m1, qw/quux quuux xyzzy/);
is($m1->quux, 777);
is($m1->quuux, 999);
is($m1->xyzzy, 42);
done_testing;
|