6 use Test::More tests => 40;
16 my($class, @args) = @_;
17 return $class->meta->new_object(@args);
21 __PACKAGE__->meta->add_attribute('bar' =>
24 predicate => 'has_bar',
25 clearer => 'clear_bar',
28 my ($self, $bar) = @_;
34 __PACKAGE__->meta->add_attribute('baz' =>
36 predicate => 'has_baz',
37 clearer => 'clear_baz',
38 trigger => '_baz_set',
43 my ($self, $baz) = @_;
49 my $foo = Foo->new(bar => '*bar*', baz => '*baz*');
53 is $foo->get_bar, '*bar*';
54 is $foo->baz, '*baz*';
56 is $bar_set, '*bar*', 'trigger (CODE ref) on initialization';
57 is $baz_set, '*baz*', 'trigger (method name) on initialization';
59 $foo->set_bar('_bar_');
62 is $foo->get_bar, '_bar_';
63 is $foo->baz, '_baz_';
65 is $bar_set, '_bar_', 'trigger (CODE ref) on the writer';
66 is $baz_set, '_baz_', 'trigger (method name) on the writer';
71 is $bar_set, '_bar_', 'trigger (CODE ref) not called on the predicate';
72 is $baz_set, '_baz_', 'trigger (method name) not called on the predicate';
77 is $bar_set, undef, 'trigger (CODE ref) called on the clearer';
78 is $baz_set, undef, 'trigger (method name) called on the clearer';
84 if($foo->meta->is_mutable){
85 ok $foo->meta->make_immutable(replace_constructor => 1), 'make_immutable()';
96 __PACKAGE__->meta->add_attribute(fail =>
102 __PACKAGE__->meta->add_attribute(fail =>
109 __PACKAGE__->meta->add_attribute(fail =>