use strict;
use warnings;
-use Test::More tests => 16;
+use Test::More tests => 18;
use Test::Exception;
-BEGIN {
- use_ok('Moose::Util::TypeConstraints');
- use_ok('Moose::Meta::TypeConstraint');
-}
+use Moose::Util::TypeConstraints;
+use Moose::Meta::TypeConstraint;
+
## Create a subclass with a custom method
}
}
-my $Int = Moose::Util::TypeConstraints::find_type_constraint('Int');
+my $Int = find_type_constraint('Int');
ok $Int, 'Got a good type contstraint';
my $parent = Test::Moose::Meta::TypeConstraint::AnySubType->new({
ok ! $parent->check('a'), 'correctly failed';
ok $parent->my_custom_method, 'found the custom method';
-my $subtype1 = Moose::Util::TypeConstraints::subtype 'another_subtype',
- as $parent;
+my $subtype1 = subtype 'another_subtype' => as $parent;
ok $subtype1, 'Created type constraint';
ok $subtype1->check(1), 'Correctly passed';
ok $subtype1->my_custom_method, 'found the custom method';
-my $subtype2 = Moose::Util::TypeConstraints::subtype 'another_subtype',
- as $subtype1,
- where { $_ < 10 };
+my $subtype2 = subtype 'another_subtype' => as $subtype1 => where { $_ < 10 };
ok $subtype2, 'Created type constraint';
ok $subtype2->check(1), 'Correctly passed';
ok ! $subtype2->check('a'), 'correctly failed';
ok ! $subtype2->check(100), 'correctly failed';
-ok $subtype2->my_custom_method, 'found the custom method';
\ No newline at end of file
+ok $subtype2->my_custom_method, 'found the custom method';
+
+
+{
+ package Foo;
+
+ use Moose;
+}
+
+{
+ package Bar;
+
+ use Moose;
+
+ extends 'Foo';
+}
+
+{
+ package Baz;
+
+ use Moose;
+}
+
+my $foo = class_type 'Foo';
+my $isa_foo = subtype 'IsaFoo' => as $foo;
+
+ok $isa_foo, 'Created subtype of Foo type';
+ok $isa_foo->check( Foo->new ), 'Foo passes check';
+ok $isa_foo->check( Bar->new ), 'Bar passes check';
+ok ! $isa_foo->check( Baz->new ), 'Baz does not pass check';