#!/usr/bin/perl # This is automatically generated by author/import-moose-test.pl. # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!! use t::lib::MooseCompat; use strict; use warnings; use Test::More; use Test::Exception; { package HTTPHeader; use Mouse; use Mouse::Util::TypeConstraints; coerce 'HTTPHeader' => from ArrayRef => via { HTTPHeader->new(array => $_[0]) }; coerce 'HTTPHeader' => from HashRef => via { HTTPHeader->new(hash => $_[0]) }; has 'array' => (is => 'ro'); has 'hash' => (is => 'ro'); package Engine; use strict; use warnings; use Mouse; has 'header' => (is => 'rw', isa => 'HTTPHeader', coerce => 1); } { my $engine = Engine->new(); isa_ok($engine, 'Engine'); # try with arrays lives_ok { $engine->header([ 1, 2, 3 ]); } '... type was coerced without incident'; isa_ok($engine->header, 'HTTPHeader'); is_deeply( $engine->header->array, [ 1, 2, 3 ], '... got the right array value of the header'); ok(!defined($engine->header->hash), '... no hash value set'); # try with hash lives_ok { $engine->header({ one => 1, two => 2, three => 3 }); } '... type was coerced without incident'; isa_ok($engine->header, 'HTTPHeader'); is_deeply( $engine->header->hash, { one => 1, two => 2, three => 3 }, '... got the right hash value of the header'); ok(!defined($engine->header->array), '... no array value set'); dies_ok { $engine->header("Foo"); } '... dies with the wrong type, even after coercion'; lives_ok { $engine->header(HTTPHeader->new); } '... lives with the right type, even after coercion'; } { my $engine = Engine->new(header => [ 1, 2, 3 ]); isa_ok($engine, 'Engine'); isa_ok($engine->header, 'HTTPHeader'); is_deeply( $engine->header->array, [ 1, 2, 3 ], '... got the right array value of the header'); ok(!defined($engine->header->hash), '... no hash value set'); } { my $engine = Engine->new(header => { one => 1, two => 2, three => 3 }); isa_ok($engine, 'Engine'); isa_ok($engine->header, 'HTTPHeader'); is_deeply( $engine->header->hash, { one => 1, two => 2, three => 3 }, '... got the right hash value of the header'); ok(!defined($engine->header->array), '... no array value set'); } { my $engine = Engine->new(header => HTTPHeader->new()); isa_ok($engine, 'Engine'); isa_ok($engine->header, 'HTTPHeader'); ok(!defined($engine->header->hash), '... no hash value set'); ok(!defined($engine->header->array), '... no array value set'); } dies_ok { Engine->new(header => 'Foo'); } '... dies correctly with bad params'; dies_ok { Engine->new(header => \(my $var)); } '... dies correctly with bad params'; done_testing;