Add tests for subtyping issue
gfx [Mon, 19 Oct 2009 09:27:31 +0000 (18:27 +0900)]
t/001_mouse/057_subtype_without_where.t [new file with mode: 0644]

diff --git a/t/001_mouse/057_subtype_without_where.t b/t/001_mouse/057_subtype_without_where.t
new file mode 100644 (file)
index 0000000..2b6ebb4
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl -w
+use Test::More tests => 4;
+use Test::Exception;
+
+use Mouse::Util::TypeConstraints;
+
+{
+    package Class;
+    sub new {
+        my $class = shift;
+        return bless { @_ }, $class;
+    }
+}
+
+subtype 'Class',
+    as 'Object',
+    where { $_->isa('Class') };
+
+subtype 'C', as 'Class'; # subtyping without "where"
+
+coerce 'C',
+    from 'Str',
+    via { Class->new(content => $_) },
+    from 'HashRef',
+    via { Class->new(content => $_->{content}) };
+
+{
+    package A;
+    use Mouse;
+
+    has foo => (
+        is => 'ro',
+        isa => 'C',
+        coerce => 1,
+        requried => 1,
+    );
+}
+
+lives_and{
+    my $a = A->new(foo => 'foobar');
+    isa_ok $a->foo, 'Class';
+    is $a->foo->{content}, 'foobar';
+};
+
+lives_and{
+    my $a = A->new(foo => { content => 42 });
+    isa_ok $a->foo, 'Class';
+    is $a->foo->{content}, 42;
+};