--- /dev/null
+#!/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