--- /dev/null
+#!/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 $@;
+}
+