Fix RT #54203 (reported by chocolateboy) that setters might return undef.
[gitmo/Mouse.git] / benchmarks / subtype.pl
CommitLineData
d03295d7 1#!perl
2use strict;
3use warnings;
4use Benchmark qw/cmpthese/;
5
6for my $klass (qw/Moose Mouse/) {
7 eval qq{
8 package ${klass}One;
346a3ab8 9 use $klass;
d03295d7 10 use ${klass}::Util::TypeConstraints;
346a3ab8 11
12 subtype 'NaturalNumber', as 'Int', where { \$_ > 0 };
13
d03295d7 14 has n => (
15 is => 'rw',
16 isa => 'NaturalNumber',
17 );
18 no $klass;
19 __PACKAGE__->meta->make_immutable;
20 };
21 die $@ if $@;
22}
23
000bf66b 24#use Data::Dumper;
25#$Data::Dumper::Deparse = 1;
26#$Data::Dumper::Indent = 1;
27#print Mouse::Util::TypeConstraints::find_type_constraint('NaturalNumber')->dump(3);
28#print Moose::Util::TypeConstraints::find_type_constraint('NaturalNumber')->dump(3);
d03295d7 29
30print "Class::MOP: $Class::MOP::VERSION\n";
31print "Moose: $Moose::VERSION\n";
32print "Mouse: $Mouse::VERSION\n";
33print "---- new\n";
34cmpthese(
35 -1 => {
36 map { my $x = $_; $_ => sub { $x->new(n => 3) } }
37 map { "${_}One" }
38 qw/Moose Mouse/
39 }
40);
41
42print "---- new,set\n";
43cmpthese(
44 -1 => {
45 map { my $y = $_; $_ => sub { $y->new(n => 3)->n(5) } }
46 map { "${_}One" }
47 qw/Moose Mouse/
48 }
49);
50
51print "---- set\n";
52my %c = map { $_ => "${_}One"->new(n => 3) } qw/Moose Mouse/;
53cmpthese(
54 -1 => {
55 map { my $y = $_; $_ => sub { $c{$y}->n(5) } }
56 qw/Moose Mouse/
57 }
58);