use strict;
use warnings;
-use Test::More tests => 13;
+use Test::More tests => 28;
use Test::NoWarnings;
+use Data::Dump 'pp';
BEGIN { use_ok('List::Index' => 'rangematch'); }
for (
- [ q => 'q'],
- ['#foo.!$' => '\#foo\.\!\$'],
+ [ q => 'q'],
+ ['#foo.!$' => '\#foo\.\!\$'],
+ [ '-' => ''],
+ [ '' => ''],
[ -q => '(?:(?![q-z])|q)'],
[ -qqq => '(?:(?![q-z])|q(?![q-z])|qq(?![q-z])|qqq)'],
[ 'q-' => '[q-z]'],
['qqq-' => '(?:[r-z]|q[r-z]|qq[q-z])'],
[ 'q-x' => '[q-x]'],
+ [ 'q-q' => 'q'],
+ [ 'qq-qq' => 'qq'],
+ [ 'qq-qqx' => '(?:qq(?![x-z])|qqx)'],
+ [ 'q-qx' => '(?:q(?![x-z])|qx)'],
['qqq-xxx' => '(?:[r-w]|q[r-z]|qq[q-z]|x(?![x-z])|xx(?![x-z])|xxx)'],
+ ['qqq-xqq' => '(?:[r-w]|q[r-z]|qq[q-z]|x(?![q-z])|xq(?![q-z])|xqq)'],
+ ['qqq-xq' => '(?:[r-w]|q[r-z]|qq[q-z]|x(?![q-z])|xq)'],
+ [ 'qq-xqq' => '(?:[r-w]|q[q-z]|' . 'x(?![q-z])|xq(?![q-z])|xqq)'],
+ [ 'q-xxx' => '(?:[q-w]|x(?![x-z])|xx(?![x-z])|xxx)'],
['qqq-x' => '(?:[r-x]|q[r-z]|qq[q-z])'],
+ ['qaa-qb' => '(?:qa[a-z]|qb)'],
+ ['qaa-qq' => '(?:q[b-p]|qa[a-z]|qq)'],
['qqq-q' => '(?:q[r-z]|qq[q-z])'],
- [ 'q-xxx' => '(?:[q-w]|x(?![x-z])|xx(?![x-z])|xxx)'],
) {
my ($in, $out) = @$_;
- is(eval { rangematch($in) }, "(?i-xsm:^$out)", $in);
+ is(eval { rangematch($in) }, "(?i-xsm:^$out)", (length $in ? $in : q{''}));
diag($@) if $@;
}
+for my $in (
+ 'qqq-qc',
+ 'x-q',
+ 'xxx-qqq',
+ 'xxx-q',
+) {
+ is(eval { rangematch($in) }, undef, (length $in ? $in : q{''}) . ' failure');
+}