7 my %values_for_type = (
26 #valid => [], # populated later with the values from Any
31 valid => [undef, "", 1, 0, "1", "0"],
62 \do { my $v = undef },
68 # populated later with the values from Undef
144 $values_for_type{Item}{valid} = $values_for_type{Any}{valid};
145 $values_for_type{Defined}{valid} = $values_for_type{Undef}{invalid};
146 $values_for_type{Defined}{invalid} = $values_for_type{Undef}{valid};
149 $plan += 5 * @{ $values_for_type{$_}{valid} } for keys %values_for_type;
150 $plan += 4 * @{ $values_for_type{$_}{invalid} } for keys %values_for_type;
159 for my $type (keys %values_for_type) {
167 can_ok(Class => keys %values_for_type);
169 for my $type (keys %values_for_type) {
170 for my $value (@{ $values_for_type{$type}{valid} }) {
172 my $via_new = Class->new($type => $value);
173 is_deeply($via_new->$type, $value, "correctly set a $type in the constructor");
177 my $via_set = Class->new;
178 is($via_set->$type, undef, "initially unset");
179 $via_set->$type($value);
180 is_deeply($via_set->$type, $value, "correctly set a $type in the setter");
184 for my $value (@{ $values_for_type{$type}{invalid} }) {
185 my $display = defined($value) ? $value : 'undef';
188 $via_new = Class->new($type => $value);
189 } qr/Attribute \($type\) does not pass the type constraint because: Validation failed for '$type' failed with value \Q$display\E/;
190 is($via_new, undef, "no object created");
192 my $via_set = Class->new;
194 $via_set->$type($value);
195 } qr/Attribute \($type\) does not pass the type constraint because: Validation failed for '$type' failed with value \Q$display\E/;
197 is($via_set->$type, undef, "value for $type not set");