5 use Test::More tests => 13;
9 BEGIN { use_ok('List::Index' => 'rangematch'); }
11 eval { Test::More->VERSION(0.93) } or eval q{
12 diag "Install Test::More v0.93 to run subtests\n";
14 SKIP: { skip 'subtest', 1; }
21 ['#foo.!$' => '\#foo\.\!\$'],
26 [ -q => '(?:(?![q-z])|q)'],
27 [ -qqq => '(?:(?![q-z])|q(?![q-z])|qq(?![q-z])|qqq)'],
31 ['qqq-' => '(?:[r-z]|q[r-z]|qq[q-z])'],
32 ['zzz-' => 'zz[z-z]'],
37 [ 'qq-qqx' => '(?:qq(?![x-z])|qqx)'],
38 [ 'q-qx' => '(?:q(?![x-z])|qx)'],
41 ['qqq-qq' => 'qq[q-z]'],
42 ['qqq-q' => '(?:q[r-z]|qq[q-z])'],
46 ['qqq-xxx' => '(?:[r-w]|q[r-z]|qq[q-z]|x(?![x-z])|xx(?![x-z])|xxx)'],
47 ['qqq-xqq' => '(?:[r-w]|q[r-z]|qq[q-z]|x(?![q-z])|xq(?![q-z])|xqq)'],
49 ['interchar mixed length',
50 ['qqq-xq' => '(?:[r-w]|q[r-z]|qq[q-z]|x(?![q-z])|xq)'],
51 [ 'qq-xqq' => '(?:[r-w]|q[q-z]|' . 'x(?![q-z])|xq(?![q-z])|xqq)'],
52 [ 'q-xxx' => '(?:[q-w]|x(?![x-z])|xx(?![x-z])|xxx)'],
53 ['qqq-x' => '(?:[r-x]|q[r-z]|qq[q-z])'],
54 ['qaa-qb' => '(?:qa[a-z]|qb)'],
55 ['qaa-qq' => '(?:q[b-p]|qa[a-z]|qq)'],
64 ['non-alphabetic offset',
66 ['...-' => '(?:[a-z]|[^a-z][a-z])'],
67 [ '.q-' => '(?:[a-z]|[^a-z][q-z])'],
68 [ '.q-.' => '[^a-z][q-z]'],
71 ['.q.-q' => '(?:[a-q]|[^a-z][q-z])'],
72 ['..z-q' => '(?:[a-q]|[^a-z][a-z]|[^a-z][^a-z][z-z])'],
73 ['.q.-z' => '(?:[a-z]|[^a-z][q-z])'],
74 ['.q.-zz' => '(?:[a-y]|[^a-z][q-z]|' . 'z(?![z-z])|zz)'],
75 ['.q..-zz' => '(?:[a-y]|[^a-z][r-z]|[^a-z]q' . '[a-z]|z(?![z-z])|zz)'],
78 ['.q.-z.' => '(?:[a-y]|[^a-z][q-z]|' . 'z(?![a-z]))'],
79 [ '..-.' => '(?:[^a-z](?![a-z]))'],
80 [ '.-.' => '(?![a-z])'],
81 [ '-.' => '(?![a-z])'],
82 [ '-...' => '(?![a-z])(?!.[a-z])(?!..[a-z])'],
83 [ '-q.' => '(?:(?![q-z])|q(?![a-z]))'],
84 [ '-q..' => '(?:(?![q-z])|q(?![a-z])(?!.[a-z]))'],
85 # [ '..-...' => '(?:[^a-z](?![a-z])|[^a-z][^a-z](?![a-z]))'],
86 # [ '.-...' => '[^a-z][^a-z](?![a-z])'],
92 my ($name, @tests) = @$_;
93 subtest($name => sub {
94 plan tests => scalar @tests;
98 eval { rangematch($in) },
99 defined $out ? "(?i-xsm:^$out)" : undef,
100 (length $in ? $in : q{''}) . (!defined $out && ' failure')