Skip threading tests on Test::More 2.00_01
[gitmo/Mouse.git] / t / 001_mouse / 067-traits.t
index 97c79e8..9826440 100644 (file)
@@ -6,17 +6,31 @@ use Test::More;
 
 use Test::Mouse qw(does_ok);
 
-BEGIN{
+BEGIN{ $SIG{__WARN__} = \&Carp::confess }
+
+BEGIN {
     package MyMouseX::Foo::Method;
     use Mouse::Role;
 
-    sub foo {}
+    sub foo_method {}
+
+    package MyMouseX::Foo::Class;
+    use Mouse::Role;
+
+    sub foo_class {}
 
     package MyMouseX::Bar::Method;
     use Mouse::Role;
 
     sub bar {}
 
+    package MyMouseX::Bar::Class;
+    use Mouse::Role;
+
+    sub bar_class {}
+}
+
+BEGIN {
     package MyMouseX::Foo;
     use Mouse::Exporter;
     use Mouse::Util::MetaRole;
@@ -31,6 +45,7 @@ BEGIN{
         Mouse::Util::MetaRole::apply_metaroles(
             for             => $options{for_class},
             class_metaroles => {
+                class  => ['MyMouseX::Foo::Class'],
                 method => ['MyMouseX::Foo::Method'],
             },
         );
@@ -52,6 +67,7 @@ BEGIN{
         Mouse::Util::MetaRole::apply_metaroles(
             for             => $options{for_class},
             class_metaroles => {
+                class  => ['MyMouseX::Bar::Class'],
                 method => ['MyMouseX::Bar::Method'],
             },
         );
@@ -69,9 +85,37 @@ BEGIN{
     use MyMouseX::Bar;
 
     sub b {}
+
+    package ClassXAFoo;
+    use MyMouseX::Foo;
+
+    extends qw(ClassA);
+
+    sub xa {}
+
+    package ClassXABar;
+    use MyMouseX::Bar;
+
+    extends qw(ClassA);
+
+    sub xa {}
 }
 
+does_ok(ClassA->meta,                  'MyMouseX::Foo::Class');
 does_ok(ClassA->meta->get_method('a'), 'MyMouseX::Foo::Method');
+
+does_ok(ClassB->meta,                  'MyMouseX::Bar::Class');
 does_ok(ClassB->meta->get_method('b'), 'MyMouseX::Bar::Method');
 
+
+does_ok(ClassXAFoo->meta,                   'MyMouseX::Foo::Class');
+does_ok(ClassXAFoo->meta->get_method('xa'), 'MyMouseX::Foo::Method');
+
+does_ok(ClassXABar->meta,                   'MyMouseX::Foo::Class');
+does_ok(ClassXABar->meta->get_method('xa'), 'MyMouseX::Foo::Method');
+
+does_ok(ClassXABar->meta,                   'MyMouseX::Bar::Class');
+does_ok(ClassXABar->meta->get_method('xa'), 'MyMouseX::Bar::Method');
+
+
 done_testing;