Regenerate test files
[gitmo/Mouse.git] / t / 010_basics / 021-moose-object-does.t
diff --git a/t/010_basics/021-moose-object-does.t b/t/010_basics/021-moose-object-does.t
new file mode 100644 (file)
index 0000000..60403fd
--- /dev/null
@@ -0,0 +1,161 @@
+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 Test::Mouse;
+
+{
+    package Role::A;
+    use Mouse::Role
+}
+
+{
+    package Role::B;
+    use Mouse::Role
+}
+
+{
+    package Foo;
+    use Mouse;
+}
+
+{
+    package Bar;
+    use Mouse;
+
+    with 'Role::A';
+}
+
+{
+    package Baz;
+    use Mouse;
+
+    with qw( Role::A Role::B );
+}
+
+{
+    package Foo::Child;
+    use Mouse;
+
+    extends 'Foo';
+}
+
+{
+    package Bar::Child;
+    use Mouse;
+
+    extends 'Bar';
+}
+
+{
+    package Baz::Child;
+    use Mouse;
+
+    extends 'Baz';
+}
+
+with_immutable {
+
+    for my $thing ( 'Foo', Foo->new, 'Foo::Child', Foo::Child->new ) {
+        my $name = ref $thing ? (ref $thing) . ' object' : "$thing class";
+        $name .= ' (immutable)' if $thing->meta->is_immutable;
+
+        ok(
+            !$thing->does('Role::A'),
+            "$name does not do Role::A"
+        );
+        ok(
+            !$thing->does('Role::B'),
+            "$name does not do Role::B"
+        );
+
+        ok(
+            !$thing->does( Role::A->meta ),
+            "$name does not do Role::A (passed as object)"
+        );
+        ok(
+            !$thing->does( Role::B->meta ),
+            "$name does not do Role::B (passed as object)"
+        );
+
+        ok(
+            !$thing->DOES('Role::A'),
+            "$name does not do Role::A (using DOES)"
+        );
+        ok(
+            !$thing->DOES('Role::B'),
+            "$name does not do Role::B (using DOES)"
+        );
+    }
+
+    for my $thing ( 'Bar', Bar->new, 'Bar::Child', Bar::Child->new ) {
+        my $name = ref $thing ? (ref $thing) . ' object' : "$thing class";
+        $name .= ' (immutable)' if $thing->meta->is_immutable;
+
+        ok(
+            $thing->does('Role::A'),
+            "$name does Role::A"
+        );
+        ok(
+            !$thing->does('Role::B'),
+            "$name does not do Role::B"
+        );
+
+        ok(
+            $thing->does( Role::A->meta ),
+            "$name does Role::A (passed as object)"
+        );
+        ok(
+            !$thing->does( Role::B->meta ),
+            "$name does not do Role::B (passed as object)"
+        );
+
+        ok(
+            $thing->DOES('Role::A'),
+            "$name does Role::A (using DOES)"
+        );
+        ok(
+            !$thing->DOES('Role::B'),
+            "$name does not do Role::B (using DOES)"
+        );
+    }
+
+    for my $thing ( 'Baz', Baz->new, 'Baz::Child', Baz::Child->new ) {
+        my $name = ref $thing ? (ref $thing) . ' object' : "$thing class";
+        $name .= ' (immutable)' if $thing->meta->is_immutable;
+
+        ok(
+            $thing->does('Role::A'),
+            "$name does Role::A"
+        );
+        ok(
+            $thing->does('Role::B'),
+            "$name does Role::B"
+        );
+
+        ok(
+            $thing->does( Role::A->meta ),
+            "$name does Role::A (passed as object)"
+        );
+        ok(
+            $thing->does( Role::B->meta ),
+            "$name does Role::B (passed as object)"
+        );
+
+        ok(
+            $thing->DOES('Role::A'),
+            "$name does Role::A (using DOES)"
+        );
+        ok(
+            $thing->DOES('Role::B'),
+            "$name does Role::B (using DOES)"
+        );
+    }
+
+}
+qw( Foo Bar Baz Foo::Child Bar::Child Baz::Child );
+
+done_testing;