File Coverage

blib/lib/Test/TypeTiny.pm
Criterion Covered Total %
statement 1722 1722 100.0
branch 28 38 73.6
condition 22 30 73.3
subroutine 574 574 100.0
pod 4 4 100.0
total 2350 2368 99.2


line stmt bran cond sub pod time code
1             package Test::TypeTiny;
2              
3 432     432   5401492 use strict;
  432         3467  
  432         54256  
4 432     432   8746 use warnings;
  432         5223  
  432         50050  
5              
6 431     431   12505 use Test::More qw();
  431         144221  
  431         38095  
7 431     431   14122 use Scalar::Util qw(blessed);
  431         3325  
  431         55436  
8 427     427   101112 use Types::TypeTiny ();
  427         1480  
  427         44440  
9 427     427   120537 use Type::Tiny ();
  427         2475  
  427         63514  
10              
11             require Exporter::Tiny;
12             our @ISA = 'Exporter::Tiny';
13              
14             BEGIN {
15 426 100   426   91626 *EXTENDED_TESTING = $ENV{EXTENDED_TESTING} ? sub() { !!1 } : sub() { !!0 };
16             }
17              
18             our $AUTHORITY = 'cpan:TOBYINK';
19             our $VERSION = '2.010001';
20             our @EXPORT = qw( should_pass should_fail ok_subtype );
21             our @EXPORT_OK = qw( EXTENDED_TESTING matchfor );
22              
23             $VERSION =~ tr/_//d;
24              
25             my $overloads_installed = 0;
26              
27             sub matchfor {
28 294     293 1 334537 my @matchers = @_;
29 294         35554 bless \@matchers, do {
30             package #
31             Test::TypeTiny::Internal::MATCHFOR;
32 293 100       2697 Test::TypeTiny::Internal::MATCHFOR->Type::Tiny::_install_overloads(
33             q[==] => 'match',
34             q[eq] => 'match',
35             q[""] => 'to_string',
36             ) unless $overloads_installed++;
37            
38             sub to_string {
39 290     288   39587 $_[0][0];
40             }
41            
42             sub match {
43 290     290   2454 my ( $self, $e ) = @_;
44 290 100 33     1377 my $does =
45             Scalar::Util::blessed( $e )
46             ? ( $e->can( 'DOES' ) || $e->can( 'isa' ) )
47             : undef;
48 290         37841 for my $s ( @$self ) {
49 297 100 100     5323 return 1 if ref( $s ) && $e =~ $s;
50 295 100 100     1106 return 1 if !ref( $s ) && $does && $e->$does( $s );
      100        
51             }
52 287         43146 return;
53             } #/ sub match
54 293         1052 __PACKAGE__;
55             };
56             } #/ sub matchfor
57              
58             sub _mk_message {
59 1875     1875   14777 require Type::Tiny;
60 1875         6092 my ( $template, $value ) = @_;
61 1875         33888 sprintf( $template, Type::Tiny::_dd( $value ) );
62             }
63              
64             sub ok_subtype {
65 230     230 1 344520 my ( $type, @s ) = @_;
66 230         770 @_ = (
67             not( scalar grep !$_->is_subtype_of( $type ), @s ),
68             sprintf( "%s subtype: %s", $type, join q[, ], @s ),
69             );
70 230         112181 goto \&Test::More::ok;
71             }
72              
73 4269 50 33 4269 1 1711372 eval( EXTENDED_TESTING ? <<'SLOW' : <<'FAST');
  4269 50 100 1770 1 47866  
  4269 50 66 299   35440  
  4269 100 33 298   17672  
  4257 100 100 298   15399  
  4257 50 66 298   39461  
  4257 50   295   14936  
  4257 50   295   15199  
  4257 50   294   36716  
  4256 50   294   14374  
  4256 100   288   9829  
  4256 100   287   40566  
  4170 50   286   16750  
  4170 50   282   19372  
  4170     278   49784  
  4256     278   40672  
  4256     195   3016944  
  4256     195   4491276  
  4254     194   2298178  
  4254     193   2252403  
  4254     192   2270179  
  8148     192   2404549  
  4254     94   2212104  
  4254     94   7703749  
  1766     94   3309292  
  1766     92   7834  
  1766     91   40181  
  1766     91   8975  
  1862     90   7881  
  1862     90   35971  
  1859     89   25346  
  1859     88   8307  
  1859     88   28254  
  1858     88   21943  
  1858     87   4965  
  1858     87   29320  
  1794     87   21050  
  1794     87   8042  
  1794     85   29942  
  1854     85   30128  
  1853     77   1178347  
  1853     77   1782389  
  1851     64   929484  
  1851     64   910900  
  1851     63   936300  
  3290     63   973091  
  1851     59   876612  
  1851     59   3059083  
  203     59   14517  
  203     59   1115  
  203     57   13023  
  203     57   16125  
  200     57   1236  
  200     55   13271  
  200     55   16224  
  200     55   1334  
  200     54   13396  
  199     54   16055  
  198     52   1099  
  198     52   15350  
  198     51   12617  
  198     51   1331  
  198     49   15021  
  198     49   17520  
  196     49   2268  
  196     49   12599  
  195     47   14384  
  195     47   1609  
  195     47   11686  
  195     47   14620  
  193     12   1125  
  193     12   13167  
  193     9   12110  
  193     8   1245  
  193     8   11296  
  191     7   16477  
  190     7   1098  
  190     7   12165  
  189     6   13208  
  189     6   1159  
  189     6   14877  
  189     6   46586  
  188     6   1325  
  188     6   12666  
  187     6   13324  
  187     6   4339  
  187     6   11060  
  187     6   15649  
  90     6   222  
  90     6   23144  
  89     6   928  
  89     6   263  
  89     6   10216  
  88     6   711  
  88     6   218  
  88     6   12814  
  88     6   799  
  88     6   250  
  88     6   11419  
  88     6   673  
  88     6   213  
  88     6   11642  
  87     6   769  
  87     6   217  
  87     6   10343  
  87     6   766  
  87     6   219  
  87     6   11878  
  87     6   752  
  87     6   245  
  87     5   9759  
  87     5   653  
  87     4   220  
  87     4   12127  
  85     4   893  
  85     4   247  
  85     4   10107  
  85     4   657  
  85     4   238  
  85     4   11345  
  77     4   701  
  77     4   196  
  77     4   9791  
  77     4   2172  
  77     4   194  
  77     4   13480  
  64     4   565  
  64     4   158  
  64     4   9608  
  64     4   504  
  64     4   159  
  64     4   10443  
  63     4   599  
  63     4   175  
  63     4   7777  
  63     4   520  
  63     4   159  
  63     4   8993  
  59     4   537  
  59     4   143  
  59     3   7822  
  59     3   475  
  59     3   164  
  59     3   9790  
  59     3   852  
  59     2   142  
  59     2   6529  
  59     2   442  
  59     2   169  
  59     2   9518  
  57     2   566  
  57     2   148  
  57     2   7591  
  57     2   449  
  57     1   134  
  57     1   8298  
  57     1   463  
  57     1   141  
  57     1   6975  
  55     1   406  
  55     1   141  
  55     1   9898  
  55     1   2885  
  55     1   143  
  55     1   6798  
  55     1   394  
  55     1   128  
  55     1   8182  
  54     1   471  
  54     1   137  
  54     1   13948  
  54     1   388  
  54     1   135  
  54     1   11147  
  52     1   457  
  52     1   117  
  52     1   7143  
  52     1   425  
  52     1   155  
  52     1   7610  
  51     1   488  
  51     1   145  
  51     1   8067  
  51     1   373  
  51     1   128  
  51     1   6948  
  49     1   447  
  49     1   124  
  49     1   6733  
  49     1   357  
  49     1   191  
  49     1   6571  
  49     1   507  
  49     1   125  
  49     1   5974  
  49     1   380  
  49     1   134  
  49     1   7022  
  47     1   405  
  47     1   112  
  47     1   5682  
  47     1   342  
  47     1   107  
  47     1   6048  
  47     1   419  
  47     1   136  
  47     1   6110  
  47     1   335  
  47     1   116  
  47     1   6556  
  12     1   86  
  12     1   29  
  12     1   1219  
  12     1   77  
  12     1   26  
  12     1   1332  
  9     1   90  
  9     1   25  
  9     1   3162  
  8     1   62  
  8     1   21  
  8     1   1568  
  8     1   71  
  8     1   25  
  8     1   1392  
  7     1   80  
  7     1   18  
  7     1   1556  
  7     1   57  
  7     1   15  
  7     1   1050  
  7     1   82  
  7     1   25  
  7     1   1603  
  6     1   49  
  6     1   29  
  6     1   482  
  6     1   42  
  6     1   16  
  6     1   692  
  6     1   55  
  6     1   16  
  6     1   1082  
  6     1   49  
  6     1   20  
  6     1   1057  
  6     1   55  
  6     1   15  
  6     1   681  
  6     1   47  
  6     1   17  
  6     1   931  
  6     1   45  
  6     1   14  
  6     1   625  
  6     1   45  
  6     1   15  
  6     1   804  
  6     1   54  
  6     1   17  
  6     1   1243  
  6     1   50  
  6     1   16  
  6     1   949  
  6     1   48  
  6     1   18  
  6     1   782  
  6     1   47  
  6     1   531  
  6     1   814  
  6     1   76  
  6     1   16  
  6     1   534  
  6     1   49  
  6     1   14  
  6     1   848  
  6     1   50  
  6     1   15  
  6     1   1121  
  6     1   43  
  6     1   33  
  6     1   898  
  6     1   49  
  6     1   15  
  6     1   769  
  6     1   45  
  6     1   17  
  6     1   784  
  6     1   534  
  6     1   22  
  6     1   518  
  6     1   50  
  6     1   15  
  6     1   864  
  6     1   51  
  6     1   16  
  6     1   1016  
  6     1   45  
  6     1   15  
  6     1   831  
  6     1   45  
  6     1   14  
  6     1   656  
  6     1   41  
  6     1   14  
  6     1   797  
  6     1   41  
  6     1   13  
  6     1   646  
  6     1   49  
  6     1   14  
  6     1   973  
  6     1   70  
  6     1   16  
  6     1   724  
  6     1   62  
  6     1   15  
  6     1   526  
  6     1   3125  
  6     1   18  
  6     1   844  
  6     1   50  
  6     1   17  
  6     1   1054  
  6     1   47  
  6     1   12  
  6     1   552  
  6     1   43  
  6     1   16  
  6     1   766  
  5     1   37  
  5     1   10  
  5     1   716  
  5     1   49  
  5     1   13  
  5     1   607  
  4     1   35  
  4     1   11  
  4     1   627  
  4     1   33  
  4     1   11  
  4     1   652  
  4     1   32  
  4     1   10  
  4     1   584  
  4     1   36  
  4     1   10  
  4     1   1390  
  4     1   34  
  4     1   13  
  4     1   558  
  4     1   30  
  4     1   9  
  4     1   459  
  4     1   36  
  4     1   10  
  4     1   777  
  4     1   32  
  4     1   11  
  4     1   782  
  4     1   33  
  4     1   9  
  4     1   381  
  4     1   33  
  4     1   10  
  4     1   620  
  4     1   34  
  4     1   11  
  4     1   711  
  4     1   30  
  4     1   10  
  4     1   568  
  4     1   31  
  4     1   7  
  4     1   536  
  4     1   31  
  4     1   9  
  4     1   621  
  4     1   29  
  4     1   12  
  4     1   609  
  4     1   36  
  4     1   9  
  4     1   747  
  4     1   33  
  4     1   10  
  4     1   554  
  4     1   29  
  4     1   9  
  4     1   443  
  4     1   34  
  4     1   9  
  4     1   851  
  4     1   33  
  4     1   11  
  4     1   799  
  4     1   29  
  4     1   10  
  4     1   390  
  4     1   28  
  4     1   10  
  4     1   592  
  4     1   31  
  4     1   11  
  4     1   783  
  4     1   29  
  4     1   11  
  4     1   609  
  4     1   30  
  4     1   10  
  4     1   749  
  4     1   32  
  4     1   13  
  4     1   765  
  4     1   33  
  4     1   12  
  4     1   600  
  4     1   31  
  4     1   10  
  4     1   744  
  3     1   29  
  3     1   10  
  3     1   549  
  3     1   28  
  3     1   27  
  3     1   415  
  3     1   31  
  3     1   10  
  3     1   404  
  3     1   27  
  3     1   10  
  3     1   507  
  3     1   26  
  3     1   9  
  3     1   365  
  2     1   19  
  2     1   6  
  2     1   307  
  2     1   18  
  2     1   6  
  2     1   407  
  2     1   16  
  2     1   6  
  2     1   391  
  2     1   16  
  2     1   6  
  2     1   405  
  2     1   19  
  2     1   8  
  2     1   426  
  2     1   19  
  2     1   5  
  2     1   330  
  2     1   19  
  2     1   5  
  2     1   521  
  2     1   20  
  2     1   6  
  2     1   353  
  2     1   18  
  2     1   5  
  2     1   434  
  1     1   8  
  1     1   3  
  1     1   145  
  1     1   9  
  1     1   3  
  1     1   105  
  1     1   8  
  1     1   4  
  1     1   76  
  1     1   8  
  1     1   2  
  1     1   134  
  1     1   9  
  1     1   2  
  1     1   82  
  1     1   7  
  1     1   4  
  1     1   85  
  1     1   10  
  1     1   2  
  1     1   127  
  1     1   10  
  1     1   3  
  1     1   106  
  1     1   8  
  1     1   2  
  1     1   79  
  1     1   10  
  1     1   3  
  1     1   150  
  1     1   9  
  1     1   3  
  1     1   98  
  1     1   9  
  1     1   2  
  1     1   73  
  1     1   10  
  1     1   3  
  1     1   153  
  1     1   9  
  1     1   2  
  1     1   91  
  1     1   8  
  1     1   1  
  1     1   87  
  1     1   9  
  1     1   4  
  1     1   127  
  1     1   9  
  1     1   2  
  1     1   114  
  1     1   8  
  1     1   2  
  1     1   77  
  1     1   10  
  1     1   3  
  1     1   110  
  1     1   10  
  1     1   3  
  1     1   89  
  1     1   8  
  1     1   3  
  1     1   96  
  1     1   11  
  1     1   4  
  1     1   162  
  1     1   11  
  1     1   3  
  1     1   90  
  1     1   8  
  1     1   3  
  1     1   78  
  1     1   10  
  1     1   3  
  1     1   159  
  1     1   9  
  1     1   4  
  1     1   98  
  1     1   9  
  1     1   4  
  1     1   79  
  1     1   10  
  1     1   4  
  1     1   146  
  1     1   9  
  1     1   3  
  1     1   102  
  1     1   8  
  1     1   4  
  1     1   86  
  1     1   10  
  1     1   3  
  1     1   130  
  1     1   10  
  1     1   3  
  1     1   90  
  1     1   8  
  1     1   3  
  1     1   83  
  1     1   9  
  1         2  
  1         152  
  1         9  
  1         3  
  1         112  
  1         8  
  1         3  
  1         108  
  1         9  
  1         4  
  1         119  
  1         9  
  1         4  
  1         90  
  1         8  
  1         2  
  1         83  
  1         8  
  1         3  
  1         157  
  1         9  
  1         3  
  1         91  
  1         7  
  1         4  
  1         82  
  1         11  
  1         2  
  1         150  
  1         9  
  1         3  
  1         88  
  1         8  
  1         2  
  1         80  
  1         9  
  1         5  
  1         142  
  1         9  
  1         3  
  1         86  
  1         7  
  1         3  
  1         82  
  1         8  
  1         2  
  1         120  
  1         9  
  1         3  
  1         140  
  1         9  
  1         3  
  1         73  
  1         8  
  1         3  
  1         150  
  1         9  
  1         3  
  1         83  
  1         8  
  1         2  
  1         77  
  1         10  
  1         3  
  1         125  
  1         10  
  1         3  
  1         101  
  1         8  
  1         3  
  1         79  
  1         9  
  1         4  
  1         123  
  1         11  
  1         3  
  1         103  
  1         8  
  1         3  
  1         113  
  1         8  
  1         4  
  1         121  
  1         10  
  1         3  
  1         104  
  1         9  
  1         2  
  1         89  
  1         11  
  1         3  
  1         164  
  1         10  
  1         3  
  1         87  
  1         8  
  1         2  
  1         83  
  1         11  
  1         3  
  1         136  
  1         9  
  1         3  
  1         103  
  1         8  
  1         2  
  1         73  
  1         9  
  1         2  
  1         146  
  1         10  
  1         3  
  1         110  
  1         9  
  1         3  
  1         83  
  1         10  
  1         3  
  1         156  
  1         8  
  1         5  
  1         111  
  1         7  
  1         3  
  1         81  
  1         11  
  1         3  
  1         138  
  1         9  
  1         3  
  1         167  
  1         9  
  1         3  
  1         84  
  1         9  
  1         5  
  1         137  
  1         10  
  1         3  
  1         113  
  1         9  
  1         2  
  1         75  
  1         12  
  1         2  
  1         178  
  1         9  
  1         3  
  1         88  
  1         7  
  1         2  
  1         87  
  1         9  
  1         3  
  1         125  
  1         11  
  1         3  
  1         88  
  1         8  
  1         2  
  1         83  
  1         11  
  1         2  
  1         147  
  1         9  
  1         2  
  1         84  
  1         8  
  1         3  
  1         104  
  1         10  
  1         3  
  1         131  
  1         10  
  1         3  
  1         110  
  1         8  
  1         2  
  1         155  
  1         11  
  1         2  
  1         134  
  1         10  
  1         3  
  1         172  
  1         10  
  1         3  
  1         69  
  1         8  
  1         2  
  1         132  
  1         11  
  1         3  
  1         103  
  1         8  
  1         3  
  1         77  
  1         9  
  1         5  
  1         129  
  1         9  
  1         4  
  1         84  
  1         7  
  1         2  
  1         78  
  1         9  
  1         3  
  1         157  
  1         10  
  1         3  
  1         89  
  1         9  
  1         2  
  1         88  
  1         10  
  1         3  
  1         142  
  1         11  
  1         3  
  1         109  
  1         38  
  1         4  
  1         89  
  1         10  
  1         4  
  1         149  
  1         9  
  1         3  
  1         87  
  1         8  
  1         2  
  1         82  
  1         9  
  1         4  
  1         145  
  1         10  
  1         2  
  1         108  
  1         9  
  1         3  
  1         81  
  1         10  
  1         3  
  1         138  
  1         8  
  1         2  
  1         105  
  1         8  
  1         3  
  1         109  
  1         11  
  1         3  
  1         170  
  1         9  
  1         3  
  1         89  
  1         8  
  1         3  
  1         68  
  1         10  
  1         3  
  1         150  
  1         10  
  1         4  
  1         92  
  1         9  
  1         2  
  1         87  
  1         10  
  1         4  
  1         145  
  1         11  
  1         3  
  1         140  
  1         11  
  1         4  
  1         101  
  1         11  
  1         4  
  1         168  
  1         9  
  1         3  
  1         84  
  1         7  
  1         2  
  1         79  
  1         11  
  1         3  
  1         152  
  1         12  
  1         3  
  1         90  
  1         9  
  1         2  
  1         78  
  1         10  
  1         4  
  1         171  
  1         9  
  1         3  
  1         118  
  1         8  
  1         3  
  1         82  
  1         8  
  1         3  
  1         131  
  1         10  
  1         3  
  1         133  
  1         9  
  1         3  
  1         81  
  1         10  
  1         3  
  1         145  
  1         10  
  1         3  
  1         80  
  1         7  
  1         3  
  1         70  
  1         10  
  1         3  
  1         148  
  1         11  
  1         3  
  1         90  
  1         9  
  1         3  
  1         96  
  1         10  
  1         3  
  1         148  
  1         13  
  1         3  
  1         93  
  1         8  
  1         2  
  1         97  
  1         11  
  1         2  
  1         145  
  1         10  
  1         2  
  1         126  
  1         10  
  1         2  
  1         82  
  1         11  
  1         3  
  1         142  
  1         11  
  1         4  
  1         90  
  1         7  
  1         3  
  1         83  
  1         10  
  1         3  
  1         165  
  1         10  
  1         2  
  1         111  
  1         9  
  1         2  
  1         81  
  1         10  
  1         3  
  1         133  
  1         9  
  1         2  
  1         91  
  1         9  
  1         2  
  1         79  
  1         9  
  1         3  
  1         128  
  1         8  
  1         3  
  1         100  
  1         7  
  1         3  
  1         72  
  1         10  
  1         2  
  1         130  
  1         9  
  1         3  
  1         88  
  1         8  
  1         3  
  1         96  
  1         9  
  1         3  
  1         120  
  1         9  
  1         3  
  1         109  
  1         8  
  1         2  
  1         72  
  1         7  
  1         1  
  1         114  
  1         10  
  1         3  
  1         70  
  1         4  
  1         3  
  1         52  
  1         11  
  1         4  
  1         131  
  1         7  
  1         2  
  1         95  
  1         7  
  1         2  
  1         46  
  1         7  
  1         2  
  1         110  
  1         5  
  1         41  
  1         62  
  1         5  
  1         2  
  1         53  
  1         8  
  1         2  
  1         112  
  1         7  
  1         2  
  1         57  
  1         4  
  1         1  
  1         47  
  1         6  
  1         3  
  1         122  
  1         6  
  1         3  
  1         66  
  1         4  
  1         1  
  1         44  
  1         6  
  1         2  
  1         107  
  1         6  
  1         2  
  1         70  
  1         5  
  1         3  
  1         45  
  1         12  
  1         3  
  1         164  
  1         8  
  1         2  
  1         94  
  1         16  
  1         3  
  1         57  
  1         8  
  1         2  
  1         101  
  1         7  
  1         2  
  1         69  
  1         4  
  1         1  
  1         45  
  1         6  
  1         2  
  1         104  
  1         6  
  1         3  
  1         73  
  1         5  
  1         2  
  1         48  
  1         8  
  1         2  
  1         104  
  1         5  
  1         4  
  1         70  
  1         5  
  1         2  
  1         45  
  1         7  
  1         2  
  1         110  
  1         9  
  1         4  
  1         109  
  1         8  
  1         3  
  1         49  
  1         7  
  1         1  
  1         108  
  1         6  
  1         2  
  1         69  
  1         4  
  1         2  
  1         45  
  1         8  
  1         2  
  1         106  
  1         6  
  1         2  
  1         62  
  1         6  
  1         3  
  1         44  
  1         11  
  1         3  
  1         166  
  1         8  
  1         4  
  1         83  
  1         8  
  1         3  
  1         74  
  1         11  
  1         3  
  1         131  
  1         7  
  1         3  
  1         119  
  1         7  
  1         3  
  1         75  
  1         10  
  1         3  
  1         117  
  1         10  
  1         2  
  1         131  
  1         10  
  1         3  
  1         71  
  1         9  
  1         4  
  1         132  
  1         10  
  1         4  
  1         87  
  1         8  
  1         3  
  1         64  
  1         8  
  1         4  
  1         123  
  1         10  
  1         3  
  1         85  
  1         7  
  1         2  
  1         118  
  1         10  
  1         3  
  1         125  
  1         8  
  1         2  
  1         100  
  1         8  
  1         2  
  1         87  
  1         9  
  1         4  
  1         150  
  1         9  
  1         4  
  1         103  
  1         9  
  1         3  
  1         68  
  1         8  
  1         4  
  1         129  
  1         9  
  1         3  
  1         82  
  1         7  
  1         3  
  1         74  
  1         9  
  1         3  
  1         128  
  1         11  
  1         3  
  1         102  
  1         9  
  1         3  
  1         75  
  1         9  
  1         3  
  1         124  
  1         8  
  1         3  
  1         97  
  1         7  
  1         2  
  1         76  
  1         9  
  1         4  
  1         123  
  1         8  
  1         3  
  1         139  
  1         9  
  1         3  
  1         71  
  1         9  
  1         3  
  1         122  
  1         10  
  1         3  
  1         86  
  1         8  
  1         3  
  1         77  
  1         10  
  1         3  
  1         132  
  1         9  
  1         3  
  1         125  
  1         9  
  1         3  
  1         81  
  1         9  
  1         2  
  1         121  
  1         9  
  1         3  
  1         83  
  1         9  
  1         2  
  1         72  
  1         9  
  1         3  
  1         124  
  1         7  
  1         3  
  1         129  
  1         9  
  1         3  
  1         97  
  1         9  
  1         4  
  1         159  
  1         9  
  1         4  
  1         85  
  1         7  
  1         4  
  1         93  
  1         12  
  1         3  
  1         132  
  1         12  
  1         4  
  1         86  
  1         8  
  1         3  
  1         99  
  1         9  
  1         4  
  1         129  
  1         9  
  1         3  
  1         141  
  1         9  
  1         2  
  1         81  
  1         11  
  1         3  
  1         187  
  1         9  
  1         3  
  1         91  
  1         8  
  1         1  
  1         100  
  1         30  
  1         5  
  1         112  
  1         8  
  1         3  
  1         88  
  1         8  
  1         3  
  1         63  
  1         10  
  1         3  
  1         114  
  1         9  
  1         3  
  1         110  
  1         9  
  1         4  
  1         63  
  1         9  
  1         2  
  1         111  
  1         8  
  1         4  
  1         142  
  1         8  
  1         3  
  1         63  
  1         10  
  1         4  
  1         115  
  1         9  
  1         3  
  1         90  
  1         8  
  1         2  
  1         95  
  1         10  
  1         2  
  1         133  
  1         37  
  1         5  
  1         92  
  1         8  
  1         2  
  1         75  
  1         10  
  1         2  
  1         135  
  1         12  
  1         3  
  1         106  
  1         8  
  1         3  
  1         71  
  1         9  
  1         3  
  1         124  
  1         10  
  1         3  
  1         116  
  1         8  
  1         3  
  1         76  
  1         10  
  1         2  
  1         132  
  1         8  
  1         3  
  1         84  
  1         7  
  1         3  
  1         80  
  1         9  
  1         5  
  1         191  
  1         8  
  1         5  
  1         121  
  1         8  
  1         3  
  1         71  
  1         12  
  1         3  
  1         236  
  1         8  
  1         3  
  1         88  
  1         8  
  1         2  
  1         101  
  1         10  
  1         3  
  1         154  
  1         8  
  1         4  
  1         101  
  1         9  
  1         50  
  1         105  
  1         10  
  1         3  
  1         162  
  1         8  
  1         2  
  1         120  
  1         9  
  1         3  
  1         76  
  1         12  
  1         19  
  1         215  
  1         7  
  1         4  
  1         89  
  1         7  
  1         3  
  1         99  
  1         10  
  1         3  
  1         164  
  1         7  
  1         2  
  1         119  
  1         8  
  1         2  
  1         73  
  1         8  
  1         2  
  1         151  
  1         7  
  1         1  
  1         80  
  1         5  
  1         2  
  1         53  
  1         10  
  1         3  
  1         126  
  1         6  
  1         3  
  1         94  
  1         8  
  1         2  
  1         78  
  1         7  
  1         1  
  1         130  
  1         5  
  1         2  
  1         54  
  1         4  
  1         2  
  1         58  
  1         8  
  1         2  
  1         131  
  1         6  
  1         2  
  1         93  
  1         6  
  1         1  
  1         44  
  1         10  
  1         3  
  1         164  
  1         9  
  1         2  
  1         89  
  1         8  
  1         3  
  1         82  
  1         9  
  1         4  
  1         129  
  1         8  
  1         3  
  1         161  
  1         9  
  1         3  
  1         78  
  1         38  
  1         4  
  1         121  
  1         9  
  1         3  
  1         88  
  1         8  
  1         2  
  1         119  
  1         9  
  1         3  
  1         103  
  1         10  
  1         3  
  1         100  
  1         8  
  1         2  
  1         72  
  1         9  
  1         3  
  1         129  
  1         10  
  1         4  
  1         116  
  1         8  
  1         2  
  1         83  
  1         9  
  1         3  
  1         126  
  1         8  
  1         3  
  1         84  
  1         9  
  1         3  
  1         77  
  1         8  
  1         3  
  1         159  
  1         8  
  1         3  
  1         109  
  1         9  
  1         3  
  1         102  
  1         9  
  1         3  
  1         135  
  1         9  
  1         3  
  1         124  
  1         8  
  1         3  
  1         103  
  1         10  
  1         4  
  1         131  
  1         12  
  1         3  
  1         124  
  1         9  
  1         3  
  1         121  
  1         11  
  1         3  
  1         166  
  1         9  
  1         2  
  1         104  
  1         8  
  1         2  
  1         80  
  1         10  
  1         4  
  1         177  
  1         11  
  1         3  
  1         108  
  1         9  
  1         2  
  1         91  
  1         10  
  1         3  
  1         136  
  1         10  
  1         2  
  1         91  
  1         8  
  1         2  
  1         85  
  1         9  
  1         3  
  1         139  
  1         11  
  1         3  
  1         107  
  1         8  
  1         3  
  1         93  
  1         10  
  1         2  
  1         274  
  1         9  
  1         2  
  1         89  
  1         7  
  1         3  
  1         267  
  1         12  
  1         3  
  1         181  
  1         8  
  1         3  
  1         84  
  1         8  
  1         2  
  1         101  
  1         9  
  1         3  
  1         131  
  1         10  
  1         2  
  1         90  
  1         7  
  1         2  
  1         80  
  1         11  
  1         3  
  1         178  
  1         8  
  1         3  
  1         86  
  1         9  
  1         2  
  1         81  
  1         10  
  1         3  
  1         146  
  1         10  
  1         3  
  1         87  
  1         8  
  1         2  
  1         81  
  1         10  
  1         3  
  1         138  
  1         9  
  1         3  
  1         116  
  1         10  
  1         3  
  1         66  
  1         9  
  1         2  
  1         162  
  1         12  
  1         3  
  1         90  
  1         8  
  1         4  
  1         84  
  1         12  
  1         3  
  1         122  
  1         10  
  1         3  
  1         166  
  1         10  
  1         3  
  1         134  
  1         10  
  1         2  
  1         161  
  1         11  
  1         3  
  1         123  
  1         10  
  1         3  
  1         190  
  1         11  
  1         3  
  1         156  
  1         10  
  1         3  
  1         155  
  1         12  
  1         3  
  1         158  
  1         12  
  1         3  
  1         167  
  1         14  
  1         3  
  1         103  
  1         13  
  1         3  
  1         168  
  1         12  
  1         3  
  1         131  
  1         26  
  1         5  
  1         88  
  1         9  
  1         3  
  1         2176  
  1         14  
  1         3  
  1         132  
  1         1054  
  1         7  
  1         98  
  1         8  
  1         4  
  1         72  
  1         12  
  1         3  
  1         117  
  1         10  
  1         3  
  1         85  
  1         8  
  1         4  
  1         72  
  1         11  
  1         2  
  1         106  
  1         10  
  1         2  
  1         102  
  1         9  
  1         2  
  1         105  
  1         11  
  1         2  
  1         125  
  1         9  
  1         3  
  1         117  
  1         9  
  1         2  
  1         112  
  1         31  
  1         3  
  1         113  
  1         10  
  1         4  
  1         112  
  1         9  
  1         3  
  1         67  
74              
75             sub should_pass
76             {
77             my ($value, $type, $message) = @_;
78            
79             local $Test::Builder::Level = $Test::Builder::Level + 1;
80             $type = Types::TypeTiny::to_TypeTiny($type) unless blessed($type) && $type->can("check");
81            
82             my $strictures = $type->can("_strict_check");
83             my $compiled = $type->can("compiled_check");
84             my $can_inline = $type->can("can_be_inlined") && $type->can_be_inlined && $type->can("inline_check");
85            
86             my $count = 1;
87             $count +=1 if $strictures;
88             $count +=1 if $compiled;
89             $count +=2 if $can_inline;
90            
91             my @codes;
92             if ( $can_inline ) {
93             push @codes, eval sprintf('no warnings; [ q(inlined), sub { my $VAR = shift; %s } ]', $type->inline_check('$VAR'));
94             local $Type::Tiny::AvoidCallbacks = 1;
95             push @codes, eval sprintf('no warnings; [ q(inlined avoiding callbacks), sub { my $VAR = shift; %s } ]', $type->inline_check('$VAR'));
96             }
97            
98             my $test = "Test::Builder"->new->child(
99             $message || _mk_message("%s passes type constraint $type", $value),
100             );
101             $test->plan(tests => $count);
102             $test->ok(!!$type->check($value), '->check');
103             $test->ok(!!$type->_strict_check($value), '->_strict_check') if $strictures;
104             $test->ok(!!$type->compiled_check->($value), '->compiled_check') if $compiled;
105             for my $code ( @codes ) {
106             $test->ok(!!$code->[1]->($value), $code->[0]);
107             }
108             $test->finalize;
109             return $test->is_passing;
110             }
111              
112             sub should_fail
113             {
114             my ($value, $type, $message) = @_;
115             $type = Types::TypeTiny::to_TypeTiny($type) unless blessed($type) && $type->can("check");
116            
117             local $Test::Builder::Level = $Test::Builder::Level + 1;
118            
119             my $strictures = $type->can("_strict_check");
120             my $compiled = $type->can("compiled_check");
121             my $can_inline = $type->can("can_be_inlined") && $type->can_be_inlined && $type->can("inline_check");
122            
123             my $count = 1;
124             $count +=1 if $strictures;
125             $count +=1 if $compiled;
126             $count +=2 if $can_inline;
127            
128             my @codes;
129             if ( $can_inline ) {
130             push @codes, eval sprintf('no warnings; [ q(inlined), sub { my $VAR = shift; %s } ]', $type->inline_check('$VAR'));
131             local $Type::Tiny::AvoidCallbacks = 1;
132             push @codes, eval sprintf('no warnings; [ q(inlined avoiding callbacks), sub { my $VAR = shift; %s } ]', $type->inline_check('$VAR'));
133             }
134            
135             my $test = "Test::Builder"->new->child(
136             $message || _mk_message("%s fails type constraint $type", $value),
137             );
138             $test->plan(tests => $count);
139             $test->ok(!$type->check($value), '->check');
140             $test->ok(!$type->_strict_check($value), '->_strict_check') if $strictures;
141             $test->ok(!$type->compiled_check->($value), '->compiled_check') if $compiled;
142             for my $code ( @codes ) {
143             $test->ok(!$code->[1]->($value), $code->[0]);
144             }
145             $test->finalize;
146             return $test->is_passing;
147             }
148              
149             SLOW
150              
151             sub should_pass
152             {
153             my ($value, $type, $message) = @_;
154             $type = Types::TypeTiny::to_TypeTiny($type) unless blessed($type) && $type->can("check");
155             @_ = (
156             !!$type->check($value),
157             $message || _mk_message("%s passes type constraint $type", $value),
158             );
159             goto \&Test::More::ok;
160             }
161              
162             sub should_fail
163             {
164             my ($value, $type, $message) = @_;
165             $type = Types::TypeTiny::to_TypeTiny($type) unless blessed($type) && $type->can("check");
166             @_ = (
167             !$type->check($value),
168             $message || _mk_message("%s fails type constraint $type", $value),
169             );
170             goto \&Test::More::ok;
171             }
172              
173             FAST
174              
175             1;
176              
177             __END__