6 use Test::More tests => 25;
14 use Mouse::Util::TypeConstraints;
18 => via { HTTPHeader->new(array => $_[0]) };
22 => via { HTTPHeader->new(hash => $_[0]) };
24 has 'array' => (is => 'ro');
25 has 'hash' => (is => 'ro');
32 has 'header' => (is => 'rw', isa => 'HTTPHeader', coerce => 1);
36 my $engine = Engine->new();
37 isa_ok($engine, 'Engine');
42 $engine->header([ 1, 2, 3 ]);
43 } '... type was coerced without incident';
44 isa_ok($engine->header, 'HTTPHeader');
47 $engine->header->array,
49 '... got the right array value of the header');
50 ok(!defined($engine->header->hash), '... no hash value set');
55 $engine->header({ one => 1, two => 2, three => 3 });
56 } '... type was coerced without incident';
57 isa_ok($engine->header, 'HTTPHeader');
60 $engine->header->hash,
61 { one => 1, two => 2, three => 3 },
62 '... got the right hash value of the header');
63 ok(!defined($engine->header->array), '... no array value set');
66 $engine->header("Foo");
67 } '... dies with the wrong type, even after coercion';
70 $engine->header(HTTPHeader->new);
71 } '... lives with the right type, even after coercion';
75 my $engine = Engine->new(header => [ 1, 2, 3 ]);
76 isa_ok($engine, 'Engine');
78 isa_ok($engine->header, 'HTTPHeader');
81 $engine->header->array,
83 '... got the right array value of the header');
84 ok(!defined($engine->header->hash), '... no hash value set');
88 my $engine = Engine->new(header => { one => 1, two => 2, three => 3 });
89 isa_ok($engine, 'Engine');
91 isa_ok($engine->header, 'HTTPHeader');
94 $engine->header->hash,
95 { one => 1, two => 2, three => 3 },
96 '... got the right hash value of the header');
97 ok(!defined($engine->header->array), '... no array value set');
101 my $engine = Engine->new(header => HTTPHeader->new());
102 isa_ok($engine, 'Engine');
104 isa_ok($engine->header, 'HTTPHeader');
106 ok(!defined($engine->header->hash), '... no hash value set');
107 ok(!defined($engine->header->array), '... no array value set');
111 Engine->new(header => 'Foo');
112 } '... dies correctly with bad params';
115 Engine->new(header => \(my $var));
116 } '... dies correctly with bad params';