Remove numbers from our tests
[gitmo/Moose.git] / t / roles / application_toclass.t
diff --git a/t/roles/application_toclass.t b/t/roles/application_toclass.t
new file mode 100644 (file)
index 0000000..faf0b01
--- /dev/null
@@ -0,0 +1,76 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+
+do {
+    package Role::Foo;
+    use Moose::Role;
+
+    sub foo { }
+
+
+    package Consumer::Basic;
+    use Moose;
+
+    with 'Role::Foo';
+
+    package Consumer::Excludes;
+    use Moose;
+
+    with 'Role::Foo' => { -excludes => 'foo' };
+
+    package Consumer::Aliases;
+    use Moose;
+
+    with 'Role::Foo' => { -alias => { 'foo' => 'role_foo' } };
+
+    package Consumer::Overrides;
+    use Moose;
+
+    with 'Role::Foo';
+
+    sub foo { }
+};
+
+my @basic     = Consumer::Basic->meta->role_applications;
+my @excludes  = Consumer::Excludes->meta->role_applications;
+my @aliases   = Consumer::Aliases->meta->role_applications;
+my @overrides = Consumer::Overrides->meta->role_applications;
+
+is(@basic,     1);
+is(@excludes,  1);
+is(@aliases,   1);
+is(@overrides, 1);
+
+my $basic     = $basic[0];
+my $excludes  = $excludes[0];
+my $aliases   = $aliases[0];
+my $overrides = $overrides[0];
+
+isa_ok($basic,     'Moose::Meta::Role::Application::ToClass');
+isa_ok($excludes,  'Moose::Meta::Role::Application::ToClass');
+isa_ok($aliases,   'Moose::Meta::Role::Application::ToClass');
+isa_ok($overrides, 'Moose::Meta::Role::Application::ToClass');
+
+is($basic->role,     Role::Foo->meta);
+is($excludes->role,  Role::Foo->meta);
+is($aliases->role,   Role::Foo->meta);
+is($overrides->role, Role::Foo->meta);
+
+is($basic->class,     Consumer::Basic->meta);
+is($excludes->class,  Consumer::Excludes->meta);
+is($aliases->class,   Consumer::Aliases->meta);
+is($overrides->class, Consumer::Overrides->meta);
+
+is_deeply($basic->get_method_aliases,     {});
+is_deeply($excludes->get_method_aliases,  {});
+is_deeply($aliases->get_method_aliases,   { foo => 'role_foo' });
+is_deeply($overrides->get_method_aliases, {});
+
+is_deeply($basic->get_method_exclusions,     []);
+is_deeply($excludes->get_method_exclusions,  ['foo']);
+is_deeply($aliases->get_method_exclusions,   []);
+is_deeply($overrides->get_method_exclusions, []);
+
+done_testing;