9 use Moose::Util::TypeConstraints;
11 # testing the parameterize method
14 my $parameterizable = subtype 'parameterizable_hashref', as 'HashRef';
16 my $parameterized = subtype 'parameterized_hashref', as 'HashRef[Int]';
18 my $int = Moose::Util::TypeConstraints::find_type_constraint('Int');
20 my $from_parameterizable = $parameterizable->parameterize($int);
22 isa_ok $parameterizable,
23 'Moose::Meta::TypeConstraint::Parameterizable', =>
24 'Got expected type instance';
26 package Test::Moose::Meta::TypeConstraint::Parameterizable;
29 has parameterizable => ( is => 'rw', isa => $parameterizable );
30 has parameterized => ( is => 'rw', isa => $parameterized );
31 has from_parameterizable => ( is => 'rw', isa => $from_parameterizable );
34 # Create and check a dummy object
36 ok my $params = Test::Moose::Meta::TypeConstraint::Parameterizable->new() =>
37 'Create Dummy object for testing';
39 isa_ok $params, 'Test::Moose::Meta::TypeConstraint::Parameterizable' =>
42 # test parameterizable
45 $params->parameterizable( { a => 'Hello', b => 'World' } );
46 }, undef, 'No problem setting parameterizable' );
48 is_deeply $params->parameterizable,
49 { a => 'Hello', b => 'World' } => 'Got expected values';
54 $params->parameterized( { a => 1, b => 2 } );
55 }, undef, 'No problem setting parameterized' );
57 is_deeply $params->parameterized, { a => 1, b => 2 } => 'Got expected values';
60 $params->parameterized( { a => 'Hello', b => 'World' } );
61 }, qr/Attribute \(parameterized\) does not pass the type constraint/, 'parameterized throws expected error' );
63 # test from_parameterizable
66 $params->from_parameterizable( { a => 1, b => 2 } );
67 }, undef, 'No problem setting from_parameterizable' );
69 is_deeply $params->from_parameterizable,
70 { a => 1, b => 2 } => 'Got expected values';
73 $params->from_parameterizable( { a => 'Hello', b => 'World' } );
74 }, qr/Attribute \(from_parameterizable\) does not pass the type constraint/, 'from_parameterizable throws expected error' );