3 use Test::More tests => 16;
7 use MouseX::Types -declare => [qw/ Headers /];
8 use MouseX::Types::Mouse 'HashRef';
10 type Headers, where { defined $_ && eval { $_->isa('Headers1') } };
13 Headers1->new(%{ $_ });
20 use MouseX::Types -declare => [qw/ Headers /];
21 use MouseX::Types::Mouse 'HashRef';
23 type Headers, where { defined $_ && eval { $_->isa('Headers2') } };
26 Headers2->new(%{ $_ });
34 has 'foo' => ( is => 'rw' );
40 has 'foo' => ( is => 'rw' );
46 BEGIN { Types->import(qw/ Headers /) }
58 BEGIN { Types->import(qw/ Headers /) }
70 BEGIN { Types2->import(qw/ Headers /) }
82 BEGIN { Types2->import(qw/ Headers /) }
91 my $res = Response->new(headers => { foo => 'bar' });
92 isa_ok($res->headers, 'Headers1');
93 is($res->headers->foo, 'bar');
94 $res->headers({foo => 'yay'});
95 isa_ok($res->headers, 'Headers1');
96 is($res->headers->foo, 'yay');
98 my $req = Request->new(headers => { foo => 'bar' });
99 isa_ok($res->headers, 'Headers1');
100 is($req->headers->foo, 'bar');
101 $req->headers({foo => 'yay'});
102 isa_ok($res->headers, 'Headers1');
103 is($req->headers->foo, 'yay');
105 $res = Response2->new(headers => { foo => 'bar' });
106 isa_ok($res->headers, 'Headers2');
107 is($res->headers->foo, 'bar');
108 $res->headers({foo => 'yay'});
109 isa_ok($res->headers, 'Headers2');
110 is($res->headers->foo, 'yay');
112 $req = Request2->new(headers => { foo => 'bar' });
113 isa_ok($res->headers, 'Headers2');
114 is($req->headers->foo, 'bar');
115 $req->headers({foo => 'yay'});
116 isa_ok($res->headers, 'Headers2');
117 is($req->headers->foo, 'yay');