Revert autogenerated tests. Tests should not changed radically.
[gitmo/Mouse.git] / t / 400_mouse_util / 002_mouse_util_does_role.t
diff --git a/t/400_mouse_util/002_mouse_util_does_role.t b/t/400_mouse_util/002_mouse_util_does_role.t
new file mode 100644 (file)
index 0000000..ac2c304
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 8;
+
+BEGIN {
+    use_ok('Mouse::Util', ':all');
+}
+
+{
+  package Foo;
+
+  use Mouse::Role;
+}
+
+{
+  package Bar;
+
+  use Mouse;
+
+  with qw/Foo/;
+}
+
+{
+  package Baz;
+
+  use Mouse;
+}
+
+{
+  package Quux;
+
+  #use metaclass;
+}
+
+{
+  package Foo::Foo;
+
+  use Mouse::Role;
+
+  with 'Foo';
+}
+
+# Classes
+
+ok(does_role('Bar', 'Foo'), '... Bar does Foo');
+
+ok(!does_role('Baz', 'Foo'), '... Baz doesnt do Foo');
+
+# Objects
+
+my $bar = Bar->new;
+
+ok(does_role($bar, 'Foo'), '... $bar does Foo');
+
+my $baz = Baz->new;
+
+ok(!does_role($baz, 'Foo'), '... $baz doesnt do Foo');
+
+# Invalid values
+
+ok(!does_role(undef,'Foo'), '... undef doesnt do Foo');
+
+ok(!does_role(1,'Foo'), '... 1 doesnt do Foo');
+
+# non Mouse metaclass
+
+ok(!does_role('Quux', 'Foo'), '... Quux doesnt do Foo (does not die tho)');
+
+# TODO: make the below work, maybe?
+
+# Self
+
+#ok(does_role('Foo', 'Foo'), '... Foo does do Foo');
+
+# sub-Roles
+
+#ok(does_role('Foo::Foo', 'Foo'), '... Foo::Foo does do Foo');
+