$_->has_default,
$_->default,
$_->builder,
+
+ $_->init_arg,
]} $mi->get_all_attributes ]
);
}
ok( defined &Moose::XS::new_accessor, "new_accessor" );
ok( defined &Moose::XS::new_predicate, "new_predicate" );
+my $trigger;
+
{
package Foo;
use Moose;
has c => ( isa => "ClassName", is => "rw" );
has b => ( is => "ro", lazy_build => 1 ); # fixme type constraint checking
has tc => ( is => "rw", isa => "FiveChars" );
+ has t => ( is => "rw", trigger => sub { $trigger = "got: " . $_[1] } );
sub _build_b { "builded!" }
}
{
- my ( $x, $y, $z, $ref, $a, $s, $i, $o, $f, $c, $b ) = map { Foo->meta->get_attribute($_) } qw(x y z ref a s i o f c b);
+ my ( $x, $y, $z, $ref, $a, $s, $i, $o, $f, $c, $b, $tc, $t ) = map { Foo->meta->get_attribute($_) } qw(x y z ref a s i o f c b tc t);
$x->Moose::XS::new_accessor("Foo::x");
$x->Moose::XS::new_predicate("Foo::has_x");
$y->Moose::XS::new_reader("Foo::y");
$f->Moose::XS::new_accessor("Foo::f");
$c->Moose::XS::new_accessor("Foo::c");
$b->Moose::XS::new_accessor("Foo::b");
+ $tc->Moose::XS::new_accessor("Foo::tc");
+ $t->Moose::XS::new_accessor("Foo::t");
}
undef $ref;
is( $foo->ref(), undef, "weak ref destroyed" );
+is( $trigger, undef, "trigger not yet called" );
+is( $foo->t, undef, "no value in t" );
+is( $trigger, undef, "trigger not yet called" );
+$foo->t("laaa");
+is( $trigger, "got: laaa", "trigger called" );
+
ok( !eval { $foo->a("not a ref"); 1 }, "ArrayRef" );
ok( !eval { $foo->a(3); 1 }, "ArrayRef" );
ok( !eval { $foo->a({}); 1 }, "ArrayRef" );
ok( !eval { $foo->i("1.3"); 1 }, "Int" );
ok( !eval { $foo->i("foo"); 1 }, "Int" );
ok( !eval { $foo->i(undef); 1 }, "Int" );
+ok( !eval { $foo->i(\undef); 1 }, "Int" );
ok( !eval { $foo->s(undef); 1 }, "Str" );
ok( !eval { $foo->s([]); 1 }, "Str" );
ok( !eval { $foo->o({}); 1 }, "Object" );