Add various things
[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..5447418
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/bin/perl\r
+\r
+use strict;\r
+use warnings;\r
+\r
+use Test::More tests => 8;\r
+\r
+BEGIN {\r
+    use_ok('Mouse::Util', ':all');\r
+}\r
+\r
+{\r
+  package Foo;\r
+\r
+  use Mouse::Role;\r
+}\r
+\r
+{\r
+  package Bar;\r
+\r
+  use Mouse;\r
+\r
+  with qw/Foo/;\r
+}\r
+\r
+{\r
+  package Baz;\r
+\r
+  use Mouse;\r
+}\r
+\r
+{\r
+  package Quux;\r
+\r
+  use metaclass;\r
+}\r
+\r
+{\r
+  package Foo::Foo;\r
+\r
+  use Mouse::Role;\r
+\r
+  with 'Foo';\r
+}\r
+\r
+# Classes\r
+\r
+ok(does_role('Bar', 'Foo'), '... Bar does Foo');\r
+\r
+ok(!does_role('Baz', 'Foo'), '... Baz doesnt do Foo');\r
+\r
+# Objects\r
+\r
+my $bar = Bar->new;\r
+\r
+ok(does_role($bar, 'Foo'), '... $bar does Foo');\r
+\r
+my $baz = Baz->new;\r
+\r
+ok(!does_role($baz, 'Foo'), '... $baz doesnt do Foo');\r
+\r
+# Invalid values\r
+\r
+ok(!does_role(undef,'Foo'), '... undef doesnt do Foo');\r
+\r
+ok(!does_role(1,'Foo'), '... 1 doesnt do Foo');\r
+\r
+# non Mouse metaclass\r
+\r
+ok(!does_role('Quux', 'Foo'), '... Quux doesnt do Foo (does not die tho)');\r
+\r
+# TODO: make the below work, maybe?\r
+\r
+# Self\r
+\r
+#ok(does_role('Foo', 'Foo'), '... Foo does do Foo');\r
+\r
+# sub-Roles\r
+\r
+#ok(does_role('Foo::Foo', 'Foo'), '... Foo::Foo does do Foo');\r
+\r