9 use Moose::Util::TypeConstraints;
15 has 'array' => (is => 'ro');
16 has 'hash' => (is => 'ro');
21 => where { $_->isa('HTTPHeader') };
25 => via { HTTPHeader->new(array => $_[0]) }
27 => via { HTTPHeader->new(hash => $_[0]) };
30 Moose::Util::TypeConstraints->export_type_constraints_as_functions();
32 my $header = HTTPHeader->new();
33 isa_ok($header, 'HTTPHeader');
35 ok(Header($header), '... this passed the type test');
36 ok(!Header([]), '... this did not pass the type test');
37 ok(!Header({}), '... this did not pass the type test');
39 my $anon_type = subtype Object => where { $_->isa('HTTPHeader') };
44 => via { HTTPHeader->new(array => $_[0]) }
46 => via { HTTPHeader->new(hash => $_[0]) };
47 }, undef, 'coercion of anonymous subtype succeeds' );
49 foreach my $coercion (
50 find_type_constraint('Header')->coercion,
54 isa_ok($coercion, 'Moose::Meta::TypeCoercion');
57 my $coerced = $coercion->coerce([ 1, 2, 3 ]);
58 isa_ok($coerced, 'HTTPHeader');
63 '... got the right array');
64 is($coerced->hash(), undef, '... nothing assigned to the hash');
68 my $coerced = $coercion->coerce({ one => 1, two => 2, three => 3 });
69 isa_ok($coerced, 'HTTPHeader');
73 { one => 1, two => 2, three => 3 },
74 '... got the right hash');
75 is($coerced->array(), undef, '... nothing assigned to the array');
79 my $scalar_ref = \(my $var);
80 my $coerced = $coercion->coerce($scalar_ref);
81 is($coerced, $scalar_ref, '... got back what we put in');
85 my $coerced = $coercion->coerce("Foo");
86 is($coerced, "Foo", '... got back what we put in');
90 subtype 'StrWithTrailingX'
94 coerce 'StrWithTrailingX'
98 my $tc = find_type_constraint('StrWithTrailingX');
99 is($tc->coerce("foo"), "fooX", "coerce when needed");
100 is($tc->coerce("fooX"), "fooX", "do not coerce when unneeded");