aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog5
-rw-r--r--test/Makefile.am6
-rw-r--r--test/Makefile.in11
-rw-r--r--test/Maketests5
-rw-r--r--test/regrange.awk30
-rw-r--r--test/regrange.ok6
6 files changed, 59 insertions, 4 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index f28153ab..764fd90d 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+Tue May 31 22:50:28 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regrange.awk, regrange.ok: New files.
+ * Makefile.am (regrange): New test.
+
Thu May 26 22:08:27 2011 Arnold D. Robbins <arnold@skeeve.com>
* fpat2.awk, fpat2.ok: New files. Thanks to Pat Rankin for the cases.
diff --git a/test/Makefile.am b/test/Makefile.am
index 065bff1d..e3dbce04 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -579,6 +579,8 @@ EXTRA_DIST = \
regeq.awk \
regeq.in \
regeq.ok \
+ regrange.awk \
+ regrange.ok \
regtest.sh \
regx8bit.awk \
regx8bit.ok \
@@ -771,8 +773,8 @@ BASIC_TESTS = \
ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup \
paramres paramtyp parse1 parsefld parseme pcntplus posix2008sub \
prdupval prec printf0 printf1 prmarscl prmreuse prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq reindops reparse resplit rs \
- rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4 \
+ rand range1 rebt8b1 redfilnm regeq regrange reindops reparse resplit \
+ rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4 \
rstest5 rswhite scalar sclforin sclifin sortempty splitargv \
splitarr splitdef splitvar splitwht strcat1 strnum1 strtod subamp \
subi18n subsepnm subslash substr swaplns synerr1 synerr2 tradanch \
diff --git a/test/Makefile.in b/test/Makefile.in
index 1fa42e36..3de264e3 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -764,6 +764,8 @@ EXTRA_DIST = \
regeq.awk \
regeq.in \
regeq.ok \
+ regrange.awk \
+ regrange.ok \
regtest.sh \
regx8bit.awk \
regx8bit.ok \
@@ -956,8 +958,8 @@ BASIC_TESTS = \
ofmta ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup \
paramres paramtyp parse1 parsefld parseme pcntplus posix2008sub \
prdupval prec printf0 printf1 prmarscl prmreuse prt1eval prtoeval \
- rand range1 rebt8b1 redfilnm regeq reindops reparse resplit rs \
- rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4 \
+ rand range1 rebt8b1 redfilnm regeq regrange reindops reparse resplit \
+ rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4 \
rstest5 rswhite scalar sclforin sclifin sortempty splitargv \
splitarr splitdef splitvar splitwht strcat1 strnum1 strtod subamp \
subi18n subsepnm subslash substr swaplns synerr1 synerr2 tradanch \
@@ -2367,6 +2369,11 @@ regeq:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+regrange:
+ @echo regrange
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
reindops:
@echo reindops
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 7577b893..243d07b7 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -645,6 +645,11 @@ regeq:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+regrange:
+ @echo regrange
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
reindops:
@echo reindops
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/regrange.awk b/test/regrange.awk
new file mode 100644
index 00000000..71879316
--- /dev/null
+++ b/test/regrange.awk
@@ -0,0 +1,30 @@
+# Tests due to John Haque, May 2011
+#
+# The following should be fatal; can't catch them inside awk, though
+# $> echo 'a' | ./gawk '/[z-a]/ { print }'
+# $> echo 'A' | ./gawk '/[+-[:digit:]]/'
+
+BEGIN {
+ char[1] = "."
+ pat[1] = "[--\\/]"
+
+ char[2] = "a"
+ pat[2] = "[]-c]"
+
+ char[3] = "c"
+ pat[3] = "[[a-d]"
+
+ char[4] = "\\"
+ pat[4] = "[\\[-\\]]"
+
+ char[5] = "[.c.]"
+ pat[5] = "[a-[.e.]]"
+
+ char[6] = "[.d.]"
+ pat[6] = "[[.c.]-[.z.]]"
+
+ for (i = 1; i in char; i++) {
+ printf("\"%s\" ~ /%s/ --> %d\n", char[i], pat[i],
+ char[i] ~ pat[i])
+ }
+}
diff --git a/test/regrange.ok b/test/regrange.ok
new file mode 100644
index 00000000..1fa00c70
--- /dev/null
+++ b/test/regrange.ok
@@ -0,0 +1,6 @@
+"." ~ /[--\/]/ --> 1
+"a" ~ /[]-c]/ --> 1
+"c" ~ /[[a-d]/ --> 1
+"\" ~ /[\[-\]]/ --> 1
+"[.c.]" ~ /[a-[.e.]]/ --> 1
+"[.d.]" ~ /[[.c.]-[.z.]]/ --> 0