lots more stuff
[gitmo/Moose.git] / t / 700_xs / 001_basic.t
index 66498f8..0828a74 100644 (file)
@@ -18,10 +18,10 @@ BEGIN {
     plan 'no_plan';
 }
 
-ok( defined &Moose::XS::install_simple_getter );
-ok( defined &Moose::XS::install_simple_setter );
-ok( defined &Moose::XS::install_simple_accessor );
-ok( defined &Moose::XS::install_predicate );
+ok( defined &Moose::XS::new_getter );
+ok( defined &Moose::XS::new_setter );
+ok( defined &Moose::XS::new_accessor );
+ok( defined &Moose::XS::new_predicate );
 
 {
     package Foo;
@@ -30,19 +30,28 @@ ok( defined &Moose::XS::install_predicate );
     has x => ( is => "rw", predicate => "has_x" );
     has y => ( is => "ro" );
     has z => ( reader => "z", setter => "set_z" );
+    has ref => ( is => "rw", weak_ref => 1 );
+}
+
+{
+    my ( $x, $y, $z, $ref ) = map { Foo->meta->get_attribute($_) } qw(x y z ref);
+    $x->Moose::XS::new_accessor("Foo::x");
+    $x->Moose::XS::new_predicate("Foo::has_x");
+    $y->Moose::XS::new_getter("Foo::y");
+    $z->Moose::XS::new_getter("Foo::z");
+    $z->Moose::XS::new_setter("Foo::set_z");
+    $ref->Moose::XS::new_accessor("Foo::ref");
 }
 
-Moose::XS::install_simple_accessor("Foo::x", "x");
-Moose::XS::install_predicate("Foo::has_x", "x");
-Moose::XS::install_simple_getter("Foo::y", "y");
-Moose::XS::install_simple_getter("Foo::z", "z");
-Moose::XS::install_simple_setter("Foo::set_z", "z");
 
-my $foo = Foo->new( x => "ICKS", y => "WHY", z => "ZEE" );
+my $ref = [ ];
+
+my $foo = Foo->new( x => "ICKS", y => "WHY", z => "ZEE", ref => $ref );
 
 is( $foo->x, "ICKS" );
 is( $foo->y, "WHY" );
 is( $foo->z, "ZEE" );
+is( $foo->ref, $ref, );
 
 lives_ok { $foo->x("YASE") };
 
@@ -64,3 +73,19 @@ ok( $foo->has_x );
 
 ok( !Foo->new->has_x );
 
+undef $ref;
+
+is( $foo->ref(), undef );
+
+$ref = { };
+
+$foo->ref($ref);
+
+is( $foo->ref, $ref, );
+
+undef $ref;
+
+is( $foo->ref(), undef );
+
+use Data::Dumper;
+warn Dumper($foo);