fix for prototype undecl issue when type constraint utils loaded before consumers...
[gitmo/Moose.git] / t / 060_moose_for_meta.t
index de4c1d7..dc966cd 100644 (file)
@@ -3,20 +3,33 @@
 use strict;
 use warnings;
 
-use Test::More tests => 16;
+use Test::More tests => 17;
 use Test::Exception;
 
 BEGIN {
     use_ok('Moose');           
 }
 
+=pod
+
+This test demonstrates the ability to extend
+Moose meta-level classes using Moose itself.
+
+=cut
+
 {
     package My::Meta::Class;
-    use strict;
-    use warnings;
     use Moose;
     
     extends 'Moose::Meta::Class';
+    
+    around 'create_anon_class' => sub {
+        my $next = shift;
+        my ($self, %options) = @_;
+        $options{superclasses} = [ 'Moose::Object' ]
+            unless exists $options{superclasses};
+        $next->($self, %options);
+    };
 }
 
 my $anon = My::Meta::Class->create_anon_class();
@@ -24,19 +37,23 @@ isa_ok($anon, 'My::Meta::Class');
 isa_ok($anon, 'Moose::Meta::Class');
 isa_ok($anon, 'Class::MOP::Class');
 
+is_deeply(
+    [ $anon->superclasses ], 
+    [ 'Moose::Object' ], 
+    '... got the default superclasses');
+
 {
     package My::Meta::Attribute::DefaultReadOnly;
-    use strict;
-    use warnings;
     use Moose;
     
     extends 'Moose::Meta::Attribute';
     
     around 'new' => sub {
         my $next = shift;
-        my $self = shift;
-        my $name = shift;
-        $next->($self, $name, (is => 'ro'), @_);
+        my ($self, $name, %options) = @_;
+        $options{is} = 'ro' 
+            unless exists $options{is};
+        $next->($self, $name, %options);
     };    
 }