use Scalar::Util directly
[gitmo/Mouse.git] / t / 201-squirrel.t
index aa09a9d..8a37731 100644 (file)
@@ -4,8 +4,9 @@ use strict;
 use warnings;
 
 use Test::More;
+use Scalar::Util 'blessed';
 
-{
+do {
     package Foo;
     use Squirrel;
 
@@ -13,17 +14,19 @@ use Test::More;
         isa => "Int",
         is  => "rw",
     );
-}
+
+    no Squirrel;
+};
 
 # note that 'Foo' is defined before this, to prevent Moose being loaded from
 # affecting its definition
 
 BEGIN {
     plan skip_all => "Moose required for this test" unless eval { require Moose };
-    plan 'no_plan';
+    plan tests => 12;
 }
 
-{
+do {
     package Bar;
     use Squirrel;
 
@@ -31,20 +34,41 @@ BEGIN {
         isa => "Int",
         is  => "rw",
     );
-}
 
-my $foo = Foo->new( foo => 3 );
+    no Squirrel;
+};
+
+my $foo = Foo->new(foo => 3);
+isa_ok($foo, "Foo");
+isa_ok($foo, "Mouse::Object");
+is($foo->foo, 3, "accessor");
+
+my $bar = Bar->new(foo => 3);
+isa_ok($bar, "Bar");
+isa_ok($bar, "Moose::Object");
+is($bar->foo, 3, "accessor");
 
-isa_ok( $foo, "Foo" );
+ok(!Foo->can('has'), "Mouse::has was unimported");
+ok(!Bar->can('has'), "Moose::has was unimported");
 
-isa_ok( $foo, "Mouse::Object" );
+eval "
+    package Foo;
+    use Squirrel;
+
+    has bar => (is => 'rw');
+    __PACKAGE__->meta->make_immutable;
 
-is( $foo->foo, 3, "accessor" );
+    package Bar;
+    use Squirrel;
 
+    has bar => (is => 'rw');
+    __PACKAGE__->meta->make_immutable;
+";
+warn $@ if $@;
 
-my $bar = Bar->new( foo => 3 );
+is(blessed(Foo->meta->get_attribute('foo')), 'Mouse::Meta::Attribute');
+is(blessed(Foo->meta->get_attribute('bar')), 'Mouse::Meta::Attribute', 'Squirrel is consistent if Moose was loaded between imports');
 
-isa_ok( $bar, "Bar" );
-isa_ok( $bar, "Moose::Object" );
+is(blessed(Bar->meta->get_attribute('foo')), 'Moose::Meta::Attribute');
+is(blessed(Bar->meta->get_attribute('bar')), 'Moose::Meta::Attribute');
 
-is( $bar->foo, 3, "accessor" );