File Coverage

File:t/02-xdefault.t
Coverage:53.8%

linestmtbrancondsubpodtimecode
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
9my $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