| File: | t/02-xdefault.t |
| Coverage: | 53.8% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | 1 1 1 | 6692 3 55 | use strict; | ||||
| 2 | 1 1 1 | 7 2 71 | use warnings; | ||||
| 3 | 1 1 1 | 581 4 113 | use Dispatch::Fu; | ||||
| 4 | |||||||
| 5 | 1 1 1 | 855 144404 6 | use Test::More tests => 8; | ||||
| 6 | |||||||
| 7 | 1 | 64838 | my $INPUT = q{case1}; | ||||
| 8 | |||||||
| 9 | my $results = dispatch { | ||||||
| 10 | 1 | 7 | my $input_str = shift; | ||||
| 11 | 1 | 2 | xdefault $input_str, q{do_default}; # if $input_str is not in supported cases, return the string 'default' | ||||
| 12 | } | ||||||
| 13 | $INPUT, | ||||||
| 14 | 0 | 0 | on default => sub { 6 }, | ||||
| 15 | 0 | 0 | on case0 => sub { 0 }, | ||||
| 16 | 1 | 1 | on case1 => sub { 1 }, | ||||
| 17 | 0 | 0 | on case2 => sub { 2 }, | ||||
| 18 | 0 | 0 | on case3 => sub { 3 }, | ||||
| 19 | 0 | 0 | on case4 => sub { 4 }, | ||||
| 20 | 1 0 | 8 0 | on case5 => sub { 5 }; | ||||
| 21 | |||||||
| 22 | 1 | 7 | is $results, 1, q{POD example for xdefault works when string being tested matches a case}; | ||||
| 23 | |||||||
| 24 | 1 | 244 | $INPUT = q{not a case}; | ||||
| 25 | |||||||
| 26 | $results = dispatch { | ||||||
| 27 | 1 | 1 | my $input_str = shift; | ||||
| 28 | 1 | 1 | xdefault $input_str, q{do_default}; # if $input_str is not in supported cases, return the string 'default' | ||||
| 29 | } | ||||||
| 30 | $INPUT, | ||||||
| 31 | 1 | 2 | on do_default => sub { 6 }, | ||||
| 32 | 0 | 0 | on case0 => sub { 0 }, | ||||
| 33 | 0 | 0 | on case1 => sub { 1 }, | ||||
| 34 | 0 | 0 | on case2 => sub { 2 }, | ||||
| 35 | 0 | 0 | on case3 => sub { 3 }, | ||||
| 36 | 0 | 0 | on case4 => sub { 4 }, | ||||
| 37 | 1 0 | 7 0 | on case5 => sub { 5 }; | ||||
| 38 | |||||||
| 39 | 1 | 6 | is $results, 6, q{POD example for xdefault works when default case is specified}; | ||||
| 40 | |||||||
| 41 | 1 | 243 | $INPUT = q{not a case}; | ||||
| 42 | |||||||
| 43 | $results = dispatch { | ||||||
| 44 | 1 | 1 | my $input_str = shift; | ||||
| 45 | 1 | 1 | xdefault $input_str; # if $input_str is not in supported cases, return the string 'default' | ||||
| 46 | } | ||||||
| 47 | $INPUT, | ||||||
| 48 | 1 | 1 | on default => sub { 6 }, | ||||
| 49 | 0 | 0 | on case0 => sub { 0 }, | ||||
| 50 | 0 | 0 | on case1 => sub { 1 }, | ||||
| 51 | 0 | 0 | on case2 => sub { 2 }, | ||||
| 52 | 0 | 0 | on case3 => sub { 3 }, | ||||
| 53 | 0 | 0 | on case4 => sub { 4 }, | ||||
| 54 | 1 0 | 7 0 | on case5 => sub { 5 }; | ||||
| 55 | |||||||
| 56 | 1 | 6 | is $results, 6, q{POD example for xdefault works when default case is not specified (uses 'default')}; | ||||
| 57 | |||||||
| 58 | 1 | 208 | $INPUT = undef; | ||||
| 59 | |||||||
| 60 | $results = dispatch { | ||||||
| 61 | 1 | 1 | my $input_str = shift; | ||||
| 62 | 1 | 2 | xdefault $input_str; # if $input_str is not in supported cases, return the string 'default' | ||||
| 63 | } | ||||||
| 64 | $INPUT, | ||||||
| 65 | 1 | 1 | on default => sub { 6 }, | ||||
| 66 | 0 | 0 | on case0 => sub { 0 }, | ||||
| 67 | 0 | 0 | on case1 => sub { 1 }, | ||||
| 68 | 0 | 0 | on case2 => sub { 2 }, | ||||
| 69 | 0 | 0 | on case3 => sub { 3 }, | ||||
| 70 | 0 | 0 | on case4 => sub { 4 }, | ||||
| 71 | 1 0 | 7 0 | on case5 => sub { 5 }; | ||||
| 72 | |||||||
| 73 | 1 | 8 | is $results, 6, q{POD example for xdefault works when $input_str is undef (uses 'default')}; | ||||
| 74 | |||||||
| 75 | 1 | 204 | $INPUT = undef; | ||||
| 76 | |||||||
| 77 | $results = dispatch { | ||||||
| 78 | 1 | 1 | my $input_str = shift; | ||||
| 79 | 1 | 2 | xdefault $input_str, q{case0}; # if $input_str is not in supported cases, return the string 'default' | ||||
| 80 | } | ||||||
| 81 | $INPUT, | ||||||
| 82 | 0 | 0 | on default => sub { 6 }, | ||||
| 83 | 1 | 2 | on case0 => sub { 0 }, | ||||
| 84 | 0 | 0 | on case1 => sub { 1 }, | ||||
| 85 | 0 | 0 | on case2 => sub { 2 }, | ||||
| 86 | 0 | 0 | on case3 => sub { 3 }, | ||||
| 87 | 0 | 0 | on case4 => sub { 4 }, | ||||
| 88 | 1 0 | 6 0 | on case5 => sub { 5 }; | ||||
| 89 | |||||||
| 90 | 1 | 6 | is $results, 0, q{POD example for xdefault works when $input_str is undef (uses 'case0')}; | ||||
| 91 | |||||||
| 92 | 1 | 204 | $INPUT = q{0}; | ||||
| 93 | |||||||
| 94 | $results = dispatch { | ||||||
| 95 | 1 | 1 | xdefault shift; | ||||
| 96 | } | ||||||
| 97 | $INPUT, | ||||||
| 98 | 0 | 0 | on default => sub { 6 }, | ||||
| 99 | 1 1 | 4 2 | on 0 => sub { 0 }; | ||||
| 100 | |||||||
| 101 | 1 | 3 | is $results, 0, q{xdefault accepts false-but-defined case key "0"}; | ||||
| 102 | |||||||
| 103 | 1 | 202 | $INPUT = q{case}; | ||||
| 104 | |||||||
| 105 | $results = dispatch { | ||||||
| 106 | 1 | 1 | xdefault shift; | ||||
| 107 | } | ||||||
| 108 | $INPUT, | ||||||
| 109 | 1 | 1 | on default => sub { 6 }, | ||||
| 110 | 1 0 | 4 0 | on case1 => sub { 1 }; | ||||
| 111 | |||||||
| 112 | 1 | 3 | is $results, 6, q{xdefault requires an exact case match, not a substring match}; | ||||
| 113 | |||||||
| 114 | 1 | 203 | $INPUT = q{case.}; | ||||
| 115 | |||||||
| 116 | $results = dispatch { | ||||||
| 117 | 1 | 2 | xdefault shift; | ||||
| 118 | } | ||||||
| 119 | $INPUT, | ||||||
| 120 | 1 | 2 | on default => sub { 6 }, | ||||
| 121 | 1 0 | 5 0 | on case1 => sub { 1 }; | ||||
| 122 | |||||||
| 123 | 1 | 3 | is $results, 6, q{xdefault treats regex metacharacters as literal characters}; | ||||
| 124 | |||||||
| 125 | |||||||