We need to say new -> _new? what's the better way of doing this?
[gitmo/Moose.git] / t / 040_type_constraints / 003_util_std_type_constraints.t
index 83dbaef..2457d50 100644 (file)
@@ -3,13 +3,13 @@
 use strict;
 use warnings;
 
-use Test::More tests => 273;
+use Test::More tests => 291;
 use Test::Exception;
 
 use Scalar::Util ();
 
 BEGIN {
-    use_ok('Moose::Util::TypeConstraints');           
+    use_ok('Moose::Util::TypeConstraints');
 }
 
 my $SCALAR_REF = \(my $var);
@@ -299,9 +299,9 @@ ok(!defined Role($SCALAR_REF),          '... Role rejects anything which is not
 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 Role(bless {}, 'Foo'),      '... Role rejects anything which is not a Role');
+ok(defined Role(bless {}, 'My::Role'),  '... Role accepts anything which is a Role');
+ok(!defined Role(undef),                '... Role rejects 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');
@@ -328,4 +328,30 @@ ok(defined ClassName('UNIVERSAL'),      '... ClassName accepts anything which is
 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";