XXX: rangematch()
[perl/list-index.git] / t / 20-links.t
diff --git a/t/20-links.t b/t/20-links.t
new file mode 100644 (file)
index 0000000..89f5dee
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use Test::More tests => 13;
+use Test::NoWarnings;
+
+BEGIN { use_ok('List::Index' => 'rangematch'); }
+
+for (
+       [   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]'],
+       ['qqq-xxx' => '(?:[r-w]|q[r-z]|qq[q-z]|x(?![x-z])|xx(?![x-z])|xxx)'],
+       ['qqq-x'   => '(?:[r-x]|q[r-z]|qq[q-z])'],
+       ['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);
+       diag($@) if $@;
+}
+