Roles can now accept attributes named 0 and ""
[gitmo/Moose.git] / t / 020_attributes / 023_attribute_names.t
index f63b948..9656e47 100644 (file)
@@ -5,25 +5,54 @@ use warnings;
 use Test::More tests => 8;
 use Test::Exception;
 
-# note: not sure about "" and 0 being illegal attribute names
-# but I'm just copying what Class::MOP::Attribute does
-
 my $exception_regex = qr/You must provide a name for the attribute/;
 {
     package My::Role;
     use Moose::Role;
-    ::throws_ok{ has;       } $exception_regex, 'has; fails';
-    ::throws_ok{ has undef; } $exception_regex, 'has undef; fails';
-    ::throws_ok{ has "";    } $exception_regex, 'has ""; fails';
-    ::throws_ok{ has 0;     } $exception_regex, 'has 0; fails';
+
+    ::throws_ok {
+        has;
+    } $exception_regex, 'has; fails';
+
+    ::throws_ok {
+        has undef;
+    } $exception_regex, 'has undef; fails';
+
+    ::lives_ok {
+        has "" => (
+            is => 'bare',
+        );
+    } 'has ""; works now';
+
+    ::lives_ok {
+        has 0 => (
+            is => 'bare',
+        );
+    } 'has 0; works now';
 }
 
 {
     package My::Class;
     use Moose;
-    ::throws_ok{ has;       } $exception_regex, 'has; fails';
-    ::throws_ok{ has undef; } $exception_regex, 'has undef; fails';
-    ::throws_ok{ has "";    } $exception_regex, 'has ""; fails';
-    ::throws_ok{ has 0;     } $exception_regex, 'has 0; fails';
+
+    ::throws_ok {
+        has;
+    } $exception_regex, 'has; fails';
+
+    ::throws_ok {
+        has undef;
+    } $exception_regex, 'has undef; fails';
+
+    ::lives_ok {
+        has "" => (
+            is => 'bare',
+        );
+    } 'has ""; works now';
+
+    ::lives_ok {
+        has 0 => (
+            is => 'bare',
+        );
+    } 'has 0; works now';
 }