use strict;
use warnings;
-use Test::More tests => 270;
+use Test::More tests => 277;
use Test::Exception;
use Scalar::Util ();
BEGIN {
- use_ok('Moose::Util::TypeConstraints');
+ use_ok('Moose::Util::TypeConstraints');
}
my $SCALAR_REF = \(my $var);
my $fh;
open($fh, '<', $0) || die "Could not open $0 for the test";
+my $fh_obj = bless {}, "IO::Handle"; # not really
+
Moose::Util::TypeConstraints->export_type_constraints_as_functions();
ok(defined Any(0), '... Any accepts anything');
ok(!defined GlobRef($SCALAR_REF), '... GlobRef rejects anything which is not a GlobRef');
ok(defined GlobRef($GLOB_REF), '... GlobRef accepts anything which is a GlobRef');
ok(defined GlobRef($fh), '... GlobRef accepts anything which is a GlobRef');
+ok(!defined GlobRef($fh_obj), '... GlobRef rejects anything which is not a GlobRef');
ok(!defined GlobRef(qr/../), '... GlobRef rejects anything which is not a GlobRef');
ok(!defined GlobRef(bless {}, 'Foo'), '... GlobRef rejects anything which is not a GlobRef');
ok(!defined GlobRef(undef), '... GlobRef rejects anything which is not a GlobRef');
ok(!defined FileHandle($SCALAR_REF), '... FileHandle rejects anything which is not a FileHandle');
ok(!defined FileHandle($GLOB_REF), '... FileHandle rejects anything which is not a FileHandle');
ok(defined FileHandle($fh), '... FileHandle accepts anything which is a FileHandle');
+ok(defined FileHandle($fh_obj), '... FileHandle accepts anything which is a FileHandle');
ok(!defined FileHandle(qr/../), '... FileHandle rejects anything which is not a FileHandle');
ok(!defined FileHandle(bless {}, 'Foo'), '... FileHandle rejects anything which is not a FileHandle');
ok(!defined FileHandle(undef), '... FileHandle rejects anything which is not a FileHandle');
ok(defined Object(bless {}, 'Foo'), '... Object accepts anything which is blessed');
ok(!defined Object(undef), '... Object accepts anything which is blessed');
-{
- package My::Role;
- sub does { 'fake' }
-}
-
-ok(!defined Role(0), '... Role rejects anything which is not a Role');
-ok(!defined Role(100), '... Role rejects anything which is not a Role');
-ok(!defined Role(''), '... Role rejects anything which is not a Role');
-ok(!defined Role('Foo'), '... Role rejects anything which is not a Role');
-ok(!defined Role([]), '... Role rejects anything which is not a Role');
-ok(!defined Role({}), '... Role rejects anything which is not a Role');
-ok(!defined Role(sub {}), '... Role rejects anything which is not a Role');
-ok(!defined Role($SCALAR_REF), '... Role rejects anything which is not a Role');
-ok(!defined Role($GLOB_REF), '... Role rejects anything which is not a Role');
-ok(!defined Role($fh), '... Role rejects anything which is not a Role');
-ok(!defined Role(qr/../), '... Role rejects anything which is not a Role');
-ok(!defined Role(bless {}, 'Foo'), '... Role accepts anything which is not a Role');
-ok(defined Role(bless {}, 'My::Role'), '... Role accepts anything which is not a Role');
-ok(!defined Role(undef), '... Role accepts anything which is not a Role');
-
ok(!defined ClassName(0), '... ClassName rejects anything which is not a ClassName');
ok(!defined ClassName(100), '... ClassName rejects anything which is not a ClassName');
ok(!defined ClassName(''), '... ClassName rejects anything which is not a ClassName');
{
package Quux::Wibble; # this makes Quux symbol table exist
+
+ sub foo {}
}
ok(!defined ClassName('Quux'), '... ClassName rejects anything which is not a ClassName');
ok(!defined ClassName(bless {}, 'Foo'), '... ClassName rejects anything which is not a ClassName');
ok(!defined ClassName(undef), '... ClassName rejects anything which is not a ClassName');
ok(defined ClassName('UNIVERSAL'), '... ClassName accepts anything which is a ClassName');
+ok(defined ClassName('Quux::Wibble'), '... ClassName accepts anything which is a ClassName');
ok(defined ClassName('Moose::Meta::TypeConstraint'), '... ClassName accepts anything which is a ClassName');
+ok(!defined RoleName(0), '... RoleName rejects anything which is not a RoleName');
+ok(!defined RoleName(100), '... RoleName rejects anything which is not a RoleName');
+ok(!defined RoleName(''), '... RoleName rejects anything which is not a RoleName');
+ok(!defined RoleName('Baz'), '... RoleName rejects anything which is not a RoleName');
+
+{
+ package Quux::Wibble::Role; # this makes Quux symbol table exist
+ use Moose::Role;
+ sub foo {}
+}
+
+ok(!defined RoleName('Quux'), '... RoleName rejects anything which is not a RoleName');
+ok(!defined RoleName([]), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName({}), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName(sub {}), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName($SCALAR_REF), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName($fh), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName($GLOB_REF), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName(qr/../), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName(bless {}, 'Foo'), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName(undef), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName('UNIVERSAL'), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName('Quux::Wibble'), '... Rolename rejects anything which is not a RoleName');
+ok(!defined RoleName('Moose::Meta::TypeConstraint'), '... RoleName accepts anything which is a RoleName');
+ok(defined RoleName('Quux::Wibble::Role'), '... RoleName accepts anything which is a RoleName');
+
close($fh) || die "Could not close the filehandle $0 for test";