added test case for compatibility
[gitmo/Mouse.git] / t / 800_shikabased / 012-role-compatibility.t
diff --git a/t/800_shikabased/012-role-compatibility.t b/t/800_shikabased/012-role-compatibility.t
new file mode 100644 (file)
index 0000000..15584aa
--- /dev/null
@@ -0,0 +1,38 @@
+use strict;
+use warnings;
+use Test::More;
+plan skip_all => "This test requires Moose" unless eval "require Moose; 1;";
+plan tests => 4;
+
+test('Moose');
+test('Mouse');
+exit;
+
+sub test {
+    my $class = shift;
+    eval <<"...";
+{
+    package ${class}Parent;
+    use ${class};
+    sub parent_method { 'ok' }
+}
+
+{
+    package ${class}ChildRole;
+    use ${class}::Role;
+    use base qw/${class}Parent/;
+    sub conflict { "role's" }
+}
+
+{
+    package ${class}Class;
+    use ${class};
+    with '${class}ChildRole';
+    sub conflict { "class's" }
+}
+...
+    die $@ if $@;
+    ok !"${class}Class"->can('parent_method');
+    is "${class}Class"->conflict(), "class's";
+}
+