Reorganize t/400_mouse_util
[gitmo/Mouse.git] / t / 400_mouse_util / 007_apply_roles.t
diff --git a/t/400_mouse_util/007_apply_roles.t b/t/400_mouse_util/007_apply_roles.t
new file mode 100644 (file)
index 0000000..a6b33b7
--- /dev/null
@@ -0,0 +1,74 @@
+use strict;
+# This is automatically generated by author/import-moose-test.pl.
+# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
+use t::lib::MooseCompat;
+use warnings;
+
+use Test::More;
+use Mouse::Util qw( apply_all_roles );
+
+{
+    package Role::Foo;
+    use Mouse::Role;
+}
+
+{
+    package Role::Bar;
+    use Mouse::Role;
+}
+
+{
+    package Role::Baz;
+    use Mouse::Role;
+}
+
+{
+    package Class::A;
+    use Mouse;
+}
+
+{
+    package Class::B;
+    use Mouse;
+}
+
+{
+    package Class::C;
+    use Mouse;
+}
+
+{
+    package Class::D;
+    use Mouse;
+}
+
+{
+    package Class::E;
+    use Mouse;
+}
+
+my @roles = qw( Role::Foo Role::Bar Role::Baz );
+apply_all_roles( 'Class::A', @roles );
+ok( Class::A->meta->does_role($_), "Class::A does $_" ) for @roles;
+
+apply_all_roles( 'Class::B', map { $_->meta } @roles );
+ok( Class::A->meta->does_role($_),
+    "Class::B does $_ (applied with meta role object)" )
+    for @roles;
+
+@roles = qw( Role::Foo );
+apply_all_roles( 'Class::C', @roles );
+ok( Class::A->meta->does_role($_), "Class::C does $_" ) for @roles;
+
+apply_all_roles( 'Class::D', map { $_->meta } @roles );
+ok( Class::A->meta->does_role($_),
+    "Class::D does $_ (applied with meta role object)" )
+    for @roles;
+
+@roles = qw( Role::Foo Role::Bar ), Role::Baz->meta;
+apply_all_roles( 'Class::E', @roles );
+ok( Class::A->meta->does_role($_),
+    "Class::E does $_ (mix of names and meta role object)" )
+    for @roles;
+
+done_testing;