X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Moose-t-failing%2F040_type_constraints%2F012_container_type_coercion.t;fp=Moose-t-failing%2F040_type_constraints%2F012_container_type_coercion.t;h=b94c1ed724a6d0ab2844e7182c41655e1dc12450;hb=c47cf41554416ee1828eab17d31342a53aaa0839;hp=0000000000000000000000000000000000000000;hpb=9864f0e4ba233c5f30ad6dc7c484ced43d883d27;p=gitmo%2FMouse.git diff --git a/Moose-t-failing/040_type_constraints/012_container_type_coercion.t b/Moose-t-failing/040_type_constraints/012_container_type_coercion.t new file mode 100644 index 0000000..b94c1ed --- /dev/null +++ b/Moose-t-failing/040_type_constraints/012_container_type_coercion.t @@ -0,0 +1,72 @@ +#!/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; +$TODO = q{Mouse is not yet completed}; +use Test::Exception; + +BEGIN { + use_ok('Mouse::Util::TypeConstraints'); + use_ok('Mouse::Meta::TypeConstraint'); +} + +my $r = Mouse::Util::TypeConstraints->get_type_constraint_registry; + +# Array of Ints + +my $array_of_ints = Mouse::Meta::TypeConstraint->new( + name => 'ArrayRef[Int]', + parent => find_type_constraint('ArrayRef'), + type_parameter => find_type_constraint('Int'), +); +isa_ok($array_of_ints, 'Mouse::Meta::TypeConstraint'); +isa_ok($array_of_ints, 'Mouse::Meta::TypeConstraint'); + +$r->add_type_constraint($array_of_ints); + +is(find_type_constraint('ArrayRef[Int]'), $array_of_ints, '... found the type we just added'); + +# Hash of Ints + +my $hash_of_ints = Mouse::Meta::TypeConstraint->new( + name => 'HashRef[Int]', + parent => find_type_constraint('HashRef'), + type_parameter => find_type_constraint('Int'), +); +isa_ok($hash_of_ints, 'Mouse::Meta::TypeConstraint'); +isa_ok($hash_of_ints, 'Mouse::Meta::TypeConstraint'); + +$r->add_type_constraint($hash_of_ints); + +is(find_type_constraint('HashRef[Int]'), $hash_of_ints, '... found the type we just added'); + +## now attempt a coercion + +{ + package Foo; + use Mouse; + use Mouse::Util::TypeConstraints; + + coerce 'ArrayRef[Int]' + => from 'HashRef[Int]' + => via { [ values %$_ ] }; + + has 'bar' => ( + is => 'ro', + isa => 'ArrayRef[Int]', + coerce => 1, + ); + +} + +my $foo = Foo->new(bar => { one => 1, two => 2, three => 3 }); +isa_ok($foo, 'Foo'); + +is_deeply([ sort @{$foo->bar} ], [ 1, 2, 3 ], '... our coercion worked!'); + +done_testing;