summaryrefslogtreecommitdiff
path: root/t/20-modules/Types-Standard/lockdown.t
blob: a7d119748f4a146408631cc6e0526c7c3a01e2cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
=pod

=head1 PURPOSE

OK, we need to bite the bullet and lock down coercions on core type
constraints and parameterized type constraints.

=head1 SEE ALSO

L<RT 97516|https://rt.cpan.org/Public/Bug/Display.html?id=97516>.

=head1 AUTHOR

Toby Inkster E<lt>tobyink@cpan.orgE<gt>.

=head1 COPYRIGHT AND LICENCE

This software is copyright (c) 2014, 2017-2022 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut

use strict;
use warnings;

use Test::More;
use Test::Fatal;

use Types::Standard -types;
use Types::Common::Numeric -types;

my $frozen = qr/\AAttempt to add coercion code to a Type::Coercion/;

like(
	exception {
		Str->coercion->add_type_coercions(ArrayRef, sub { "@$_" });
	},
	$frozen,
	'Types::Standard core types are frozen',
);

like(
	exception {
		PositiveInt->coercion->add_type_coercions(NegativeInt, sub { -$_ });
	},
	$frozen,
	'Types::Common types are frozen',
);

like(
	exception {
		InstanceOf->of("Foo")->coercion->add_type_coercions(HashRef, sub { bless $_, "Foo" });
	},
	$frozen,
	'Parameterized types are frozen',
);

done_testing;