summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/=.err.posix1
-rw-r--r--testsuite/a.d5
-rw-r--r--testsuite/a.r8
-rw-r--r--testsuite/a.t9
-rw-r--r--testsuite/a1.err.posix3
-rw-r--r--testsuite/a2.err3
-rw-r--r--testsuite/a2.pr3
-rw-r--r--testsuite/addr.d9
-rw-r--r--testsuite/addr.r2
-rw-r--r--testsuite/addr.t5
-rw-r--r--testsuite/addr1.err1
-rw-r--r--testsuite/addr1.pr1
-rw-r--r--testsuite/addr2.err1
-rw-r--r--testsuite/addr2.pr1
-rw-r--r--testsuite/ascii.dbin0 -> 256 bytes
-rw-r--r--testsuite/ascii.rbin0 -> 256 bytes
-rw-r--r--testsuite/ascii.t0
-rw-r--r--testsuite/bang1.d0
-rw-r--r--testsuite/bang1.err1
-rw-r--r--testsuite/bang1.pr1
-rw-r--r--testsuite/bang1.r1
-rw-r--r--testsuite/bang1.t5
-rw-r--r--testsuite/bang2.err1
-rw-r--r--testsuite/bang2.pr1
-rw-r--r--testsuite/c.d5
-rw-r--r--testsuite/c.r4
-rw-r--r--testsuite/c.t12
-rw-r--r--testsuite/c1.err3
-rw-r--r--testsuite/c1.pr3
-rwxr-xr-xtestsuite/check.sh104
-rw-r--r--testsuite/comment.d6
-rw-r--r--testsuite/comment.r6
-rw-r--r--testsuite/comment.t5
-rw-r--r--testsuite/d.d5
-rw-r--r--testsuite/d.err1
-rw-r--r--testsuite/d.pr1
-rw-r--r--testsuite/d.r1
-rw-r--r--testsuite/d.t3
-rw-r--r--testsuite/e1.d5
-rw-r--r--testsuite/e1.err1
-rw-r--r--testsuite/e1.pr1
-rw-r--r--testsuite/e1.r4
-rw-r--r--testsuite/e1.t2
-rw-r--r--testsuite/e2.d1
-rw-r--r--testsuite/e2.err1
-rw-r--r--testsuite/e2.pr1
-rw-r--r--testsuite/e2.r1
-rw-r--r--testsuite/e2.t1
-rw-r--r--testsuite/e3.d1
-rw-r--r--testsuite/e3.err1
-rw-r--r--testsuite/e3.pr1
-rw-r--r--testsuite/e3.r1
-rw-r--r--testsuite/e3.t1
-rw-r--r--testsuite/e4.d1
-rw-r--r--testsuite/e4.r1
-rw-r--r--testsuite/e4.t1
-rw-r--r--testsuite/f1.err1
-rw-r--r--testsuite/f1.pr1
-rw-r--r--testsuite/f2.err1
-rw-r--r--testsuite/f2.pr1
-rw-r--r--testsuite/g1.d5
-rw-r--r--testsuite/g1.err1
-rw-r--r--testsuite/g1.pr1
-rw-r--r--testsuite/g1.r15
-rw-r--r--testsuite/g1.t6
-rw-r--r--testsuite/g2.d5
-rw-r--r--testsuite/g2.err1
-rw-r--r--testsuite/g2.pr1
-rw-r--r--testsuite/g2.r1
-rw-r--r--testsuite/g2.t2
-rw-r--r--testsuite/g3.d5
-rw-r--r--testsuite/g3.err1
-rw-r--r--testsuite/g3.pr1
-rw-r--r--testsuite/g3.r5
-rw-r--r--testsuite/g3.t4
-rw-r--r--testsuite/g4.d5
-rw-r--r--testsuite/g4.r7
-rw-r--r--testsuite/g4.t13
-rw-r--r--testsuite/g5.d3
-rw-r--r--testsuite/g5.r9
-rw-r--r--testsuite/g5.t2
-rw-r--r--testsuite/h.err1
-rw-r--r--testsuite/h.pr1
-rw-r--r--testsuite/i.d5
-rw-r--r--testsuite/i.r8
-rw-r--r--testsuite/i.t9
-rw-r--r--testsuite/i1.err.posix3
-rw-r--r--testsuite/i2.err3
-rw-r--r--testsuite/i2.pr3
-rw-r--r--testsuite/j.d5
-rw-r--r--testsuite/j.r4
-rw-r--r--testsuite/j.t2
-rw-r--r--testsuite/k.d5
-rw-r--r--testsuite/k.r5
-rw-r--r--testsuite/k.t10
-rw-r--r--testsuite/k1.err.posix1
-rw-r--r--testsuite/k2.err1
-rw-r--r--testsuite/k2.pr1
-rw-r--r--testsuite/k3.err1
-rw-r--r--testsuite/k3.pr1
-rw-r--r--testsuite/k4.err6
-rw-r--r--testsuite/k4.pr6
-rw-r--r--testsuite/l.d0
-rw-r--r--testsuite/l.r0
-rw-r--r--testsuite/l.t0
-rw-r--r--testsuite/m.d5
-rw-r--r--testsuite/m.err4
-rw-r--r--testsuite/m.pr5
-rw-r--r--testsuite/m.r5
-rw-r--r--testsuite/m.t7
-rw-r--r--testsuite/n.d0
-rw-r--r--testsuite/n.r0
-rw-r--r--testsuite/n.t0
-rw-r--r--testsuite/nl.err1
-rw-r--r--testsuite/nl.pr1
-rw-r--r--testsuite/nl1.d5
-rw-r--r--testsuite/nl1.r8
-rw-r--r--testsuite/nl1.t8
-rw-r--r--testsuite/nl2.d5
-rw-r--r--testsuite/nl2.r6
-rw-r--r--testsuite/nl2.t4
-rw-r--r--testsuite/p.d0
-rw-r--r--testsuite/p.r0
-rw-r--r--testsuite/p.t0
-rw-r--r--testsuite/q.d0
-rw-r--r--testsuite/q.r0
-rw-r--r--testsuite/q.t5
-rw-r--r--testsuite/q1.err1
-rw-r--r--testsuite/q1.pr1
-rw-r--r--testsuite/r1.d5
-rw-r--r--testsuite/r1.err.posix1
-rw-r--r--testsuite/r1.r7
-rw-r--r--testsuite/r1.t3
-rw-r--r--testsuite/r2.d5
-rw-r--r--testsuite/r2.err1
-rw-r--r--testsuite/r2.pr1
-rw-r--r--testsuite/r2.r10
-rw-r--r--testsuite/r2.t1
-rw-r--r--testsuite/r3.d5
-rw-r--r--testsuite/r3.r4
-rw-r--r--testsuite/r3.t2
-rw-r--r--testsuite/s1.d5
-rw-r--r--testsuite/s1.err1
-rw-r--r--testsuite/s1.pr1
-rw-r--r--testsuite/s1.r5
-rw-r--r--testsuite/s1.t6
-rw-r--r--testsuite/s10.err4
-rw-r--r--testsuite/s10.pr5
-rw-r--r--testsuite/s2.d5
-rw-r--r--testsuite/s2.err4
-rw-r--r--testsuite/s2.pr5
-rw-r--r--testsuite/s2.r5
-rw-r--r--testsuite/s2.t4
-rw-r--r--testsuite/s3.d0
-rw-r--r--testsuite/s3.err1
-rw-r--r--testsuite/s3.pr1
-rw-r--r--testsuite/s3.r1
-rw-r--r--testsuite/s3.t6
-rw-r--r--testsuite/s4.err1
-rw-r--r--testsuite/s4.pr1
-rw-r--r--testsuite/s5.err1
-rw-r--r--testsuite/s5.pr1
-rw-r--r--testsuite/s6.err1
-rw-r--r--testsuite/s6.pr1
-rw-r--r--testsuite/s7.err5
-rw-r--r--testsuite/s7.pr6
-rw-r--r--testsuite/s8.err4
-rw-r--r--testsuite/s8.pr5
-rw-r--r--testsuite/s9.err4
-rw-r--r--testsuite/s9.pr5
-rw-r--r--testsuite/t.d5
-rw-r--r--testsuite/t.r16
-rw-r--r--testsuite/t1.d5
-rw-r--r--testsuite/t1.err1
-rw-r--r--testsuite/t1.pr1
-rw-r--r--testsuite/t1.r16
-rw-r--r--testsuite/t1.t3
-rw-r--r--testsuite/t2.d5
-rw-r--r--testsuite/t2.err1
-rw-r--r--testsuite/t2.pr1
-rw-r--r--testsuite/t2.r6
-rw-r--r--testsuite/t2.t1
-rw-r--r--testsuite/u.d5
-rw-r--r--testsuite/u.err1
-rw-r--r--testsuite/u.pr1
-rw-r--r--testsuite/u.r9
-rw-r--r--testsuite/u.t31
-rw-r--r--testsuite/v.d5
-rw-r--r--testsuite/v.r11
-rw-r--r--testsuite/v.t6
-rw-r--r--testsuite/w.d5
-rw-r--r--testsuite/w.r10
-rw-r--r--testsuite/w.t2
-rw-r--r--testsuite/w1.err1
-rw-r--r--testsuite/w1.pr1
-rw-r--r--testsuite/w2.err1
-rw-r--r--testsuite/w2.pr1
-rw-r--r--testsuite/w3.err1
-rw-r--r--testsuite/w3.pr1
-rw-r--r--testsuite/x.d5
-rw-r--r--testsuite/x.err10
-rw-r--r--testsuite/x.pr1
-rw-r--r--testsuite/x.r19
-rw-r--r--testsuite/x.t8
-rw-r--r--testsuite/z.err2
-rw-r--r--testsuite/z.pr2
206 files changed, 835 insertions, 0 deletions
diff --git a/testsuite/=.err.posix b/testsuite/=.err.posix
new file mode 100644
index 0000000..6a60559
--- /dev/null
+++ b/testsuite/=.err.posix
@@ -0,0 +1 @@
+1,$=
diff --git a/testsuite/a.d b/testsuite/a.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/a.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/a.r b/testsuite/a.r
new file mode 100644
index 0000000..26257bd
--- /dev/null
+++ b/testsuite/a.r
@@ -0,0 +1,8 @@
+hello world
+line 1
+hello world!
+line 2
+line 3
+line 4
+line5
+hello world!!
diff --git a/testsuite/a.t b/testsuite/a.t
new file mode 100644
index 0000000..ac98c40
--- /dev/null
+++ b/testsuite/a.t
@@ -0,0 +1,9 @@
+0a
+hello world
+.
+2a
+hello world!
+.
+$a
+hello world!!
+.
diff --git a/testsuite/a1.err.posix b/testsuite/a1.err.posix
new file mode 100644
index 0000000..e80815f
--- /dev/null
+++ b/testsuite/a1.err.posix
@@ -0,0 +1,3 @@
+1,$a
+hello world
+.
diff --git a/testsuite/a2.err b/testsuite/a2.err
new file mode 100644
index 0000000..ec4b00b
--- /dev/null
+++ b/testsuite/a2.err
@@ -0,0 +1,3 @@
+aa
+hello world
+.
diff --git a/testsuite/a2.pr b/testsuite/a2.pr
new file mode 100644
index 0000000..ec4b00b
--- /dev/null
+++ b/testsuite/a2.pr
@@ -0,0 +1,3 @@
+aa
+hello world
+.
diff --git a/testsuite/addr.d b/testsuite/addr.d
new file mode 100644
index 0000000..8f7ba1b
--- /dev/null
+++ b/testsuite/addr.d
@@ -0,0 +1,9 @@
+line 1
+line 2
+line 3
+line 4
+line5
+1ine6
+line7
+line8
+line9
diff --git a/testsuite/addr.r b/testsuite/addr.r
new file mode 100644
index 0000000..04caf17
--- /dev/null
+++ b/testsuite/addr.r
@@ -0,0 +1,2 @@
+line 2
+line9
diff --git a/testsuite/addr.t b/testsuite/addr.t
new file mode 100644
index 0000000..750b224
--- /dev/null
+++ b/testsuite/addr.t
@@ -0,0 +1,5 @@
+1 d
+1 1 d
+1,2,d
+1;+ + ,d
+1,2;., + 2d
diff --git a/testsuite/addr1.err b/testsuite/addr1.err
new file mode 100644
index 0000000..29d6383
--- /dev/null
+++ b/testsuite/addr1.err
@@ -0,0 +1 @@
+100
diff --git a/testsuite/addr1.pr b/testsuite/addr1.pr
new file mode 100644
index 0000000..29d6383
--- /dev/null
+++ b/testsuite/addr1.pr
@@ -0,0 +1 @@
+100
diff --git a/testsuite/addr2.err b/testsuite/addr2.err
new file mode 100644
index 0000000..e96acb9
--- /dev/null
+++ b/testsuite/addr2.err
@@ -0,0 +1 @@
+-100
diff --git a/testsuite/addr2.pr b/testsuite/addr2.pr
new file mode 100644
index 0000000..e96acb9
--- /dev/null
+++ b/testsuite/addr2.pr
@@ -0,0 +1 @@
+-100
diff --git a/testsuite/ascii.d b/testsuite/ascii.d
new file mode 100644
index 0000000..c866266
--- /dev/null
+++ b/testsuite/ascii.d
Binary files differ
diff --git a/testsuite/ascii.r b/testsuite/ascii.r
new file mode 100644
index 0000000..c866266
--- /dev/null
+++ b/testsuite/ascii.r
Binary files differ
diff --git a/testsuite/ascii.t b/testsuite/ascii.t
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/ascii.t
diff --git a/testsuite/bang1.d b/testsuite/bang1.d
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/bang1.d
diff --git a/testsuite/bang1.err b/testsuite/bang1.err
new file mode 100644
index 0000000..630af90
--- /dev/null
+++ b/testsuite/bang1.err
@@ -0,0 +1 @@
+.!date
diff --git a/testsuite/bang1.pr b/testsuite/bang1.pr
new file mode 100644
index 0000000..630af90
--- /dev/null
+++ b/testsuite/bang1.pr
@@ -0,0 +1 @@
+.!date
diff --git a/testsuite/bang1.r b/testsuite/bang1.r
new file mode 100644
index 0000000..dcf02b2
--- /dev/null
+++ b/testsuite/bang1.r
@@ -0,0 +1 @@
+okay
diff --git a/testsuite/bang1.t b/testsuite/bang1.t
new file mode 100644
index 0000000..d7b1fea
--- /dev/null
+++ b/testsuite/bang1.t
@@ -0,0 +1,5 @@
+!read one
+hello, world
+a
+okay
+.
diff --git a/testsuite/bang2.err b/testsuite/bang2.err
new file mode 100644
index 0000000..79d8956
--- /dev/null
+++ b/testsuite/bang2.err
@@ -0,0 +1 @@
+!!
diff --git a/testsuite/bang2.pr b/testsuite/bang2.pr
new file mode 100644
index 0000000..79d8956
--- /dev/null
+++ b/testsuite/bang2.pr
@@ -0,0 +1 @@
+!!
diff --git a/testsuite/c.d b/testsuite/c.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/c.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/c.r b/testsuite/c.r
new file mode 100644
index 0000000..0fb3e4f
--- /dev/null
+++ b/testsuite/c.r
@@ -0,0 +1,4 @@
+at the top
+between top/middle
+in the middle
+at the bottom
diff --git a/testsuite/c.t b/testsuite/c.t
new file mode 100644
index 0000000..5fba319
--- /dev/null
+++ b/testsuite/c.t
@@ -0,0 +1,12 @@
+0c
+at the top
+.
+4c
+in the middle
+.
+$c
+at the bottom
+.
+2,3c
+between top/middle
+.
diff --git a/testsuite/c1.err b/testsuite/c1.err
new file mode 100644
index 0000000..658ec38
--- /dev/null
+++ b/testsuite/c1.err
@@ -0,0 +1,3 @@
+cc
+hello world
+.
diff --git a/testsuite/c1.pr b/testsuite/c1.pr
new file mode 100644
index 0000000..658ec38
--- /dev/null
+++ b/testsuite/c1.pr
@@ -0,0 +1,3 @@
+cc
+hello world
+.
diff --git a/testsuite/check.sh b/testsuite/check.sh
new file mode 100755
index 0000000..85b606b
--- /dev/null
+++ b/testsuite/check.sh
@@ -0,0 +1,104 @@
+#! /bin/sh
+# check script for GNU ed - The GNU line editor
+# Copyright (C) 2006, 2007, 2008, 2009 Antonio Diaz Diaz.
+#
+# This script is free software; you have unlimited permission
+# to copy, distribute and modify it.
+
+objdir=`pwd`
+testdir=`cd "$1" ; pwd`
+ED="${objdir}"/ed
+
+if [ ! -x "${ED}" ] ; then
+ echo "${ED}: cannot execute"
+ exit 1
+fi
+
+if [ -d tmp ] ; then rm -r tmp ; fi
+mkdir tmp
+
+# Generate ed test scripts, with extensions .ed and .red, from
+# .t and .err files, respectively.
+echo "building test scripts for ed..."
+cd "${testdir}"
+
+for i in *.t ; do
+ base=`echo "$i" | sed 's/\.t$//'`
+ (
+ echo "#! /bin/sh"
+ echo "${ED} -s <<'EOT'"
+ echo H
+ echo "r ${testdir}/${base}.d"
+ cat "$i"
+ echo "w ${base}.o"
+ echo EOT
+ ) > "${objdir}/tmp/${base}.ed"
+ chmod u+x "${objdir}/tmp/${base}.ed"
+done
+
+for i in *.err ; do
+ base=`echo "$i" | sed 's/\.err$//'`
+ (
+ echo "#! /bin/sh -"
+ echo "${ED} -s <<'EOT'"
+ echo H
+ echo "r ${testdir}/${base}.err"
+ cat "$i"
+ echo "w ${base}.ro"
+ echo EOT
+ ) > "${objdir}/tmp/${base}.red"
+ chmod u+x "${objdir}/tmp/${base}.red"
+done
+
+
+# Run the .ed and .red scripts just generated
+# and compare their output against the .r files, which contain
+# the correct output.
+echo "testing ed..."
+cd "${objdir}"/tmp
+
+# Run the *.red scripts first, since these don't generate output;
+# they exit with non-zero status
+for i in *.red ; do
+ echo "$i"
+ if ./"$i" ; then
+ echo "*** The script $i exited abnormally ***"
+ fi
+done > errs.ck 2>&1
+
+# Run error scripts again as pipes - these should generate output and
+# exit with error (>0) status.
+for i in *.red ; do
+ base=`echo "$i" | sed 's/\.red$//'`
+ if cat ${base}.red | "${ED}" -s ; then
+ echo "*** The piped script $i exited abnormally ***"
+ else
+ if cmp -s ${base}.ro "${testdir}"/${base}.pr ; then
+ true
+ else
+ echo "*** Output ${base}.ro of piped script $i is incorrect ***"
+ fi
+ fi
+done > pipes.ck 2>&1
+
+# Run the remainding scripts; they exit with zero status
+for i in *.ed ; do
+ base=`echo "$i" | sed 's/\.ed$//'`
+ if ./${base}.ed ; then
+ if cmp -s ${base}.o "${testdir}"/${base}.r ; then
+ true
+ else
+ echo "*** Output ${base}.o of script $i is incorrect ***"
+ fi
+ else
+ echo "*** The script $i exited abnormally ***"
+ fi
+done > scripts.ck 2>&1
+
+grep '\*\*\*' *.ck | sed 's/^[^*]*//'
+if grep '\*\*\*' *.ck > /dev/null ; then
+ exit 127
+else
+ echo "tests completed successfully."
+ if cd "${objdir}" ; then rm -r tmp ; fi
+fi
diff --git a/testsuite/comment.d b/testsuite/comment.d
new file mode 100644
index 0000000..ec1e35a
--- /dev/null
+++ b/testsuite/comment.d
@@ -0,0 +1,6 @@
+hello
+world
+this is a simple
+line of text
+for testing the comment
+command in global lists
diff --git a/testsuite/comment.r b/testsuite/comment.r
new file mode 100644
index 0000000..ae60d9d
--- /dev/null
+++ b/testsuite/comment.r
@@ -0,0 +1,6 @@
+heylo
+woryd
+this is a simpye
+yine of text
+for testing the comment
+command in gyobal lists
diff --git a/testsuite/comment.t b/testsuite/comment.t
new file mode 100644
index 0000000..ab873f8
--- /dev/null
+++ b/testsuite/comment.t
@@ -0,0 +1,5 @@
+# lines beginning with a `#' should be ignored
+g/./# including in global commands \
+s/l/x/\
+# and in the command list \
+s/x/y/
diff --git a/testsuite/d.d b/testsuite/d.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/d.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/d.err b/testsuite/d.err
new file mode 100644
index 0000000..f03f694
--- /dev/null
+++ b/testsuite/d.err
@@ -0,0 +1 @@
+dd
diff --git a/testsuite/d.pr b/testsuite/d.pr
new file mode 100644
index 0000000..f03f694
--- /dev/null
+++ b/testsuite/d.pr
@@ -0,0 +1 @@
+dd
diff --git a/testsuite/d.r b/testsuite/d.r
new file mode 100644
index 0000000..b7e242c
--- /dev/null
+++ b/testsuite/d.r
@@ -0,0 +1 @@
+line 2
diff --git a/testsuite/d.t b/testsuite/d.t
new file mode 100644
index 0000000..c7c473f
--- /dev/null
+++ b/testsuite/d.t
@@ -0,0 +1,3 @@
+1d
+2;+1d
+$d
diff --git a/testsuite/e1.d b/testsuite/e1.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/e1.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/e1.err b/testsuite/e1.err
new file mode 100644
index 0000000..827cc29
--- /dev/null
+++ b/testsuite/e1.err
@@ -0,0 +1 @@
+ee e1.err
diff --git a/testsuite/e1.pr b/testsuite/e1.pr
new file mode 100644
index 0000000..827cc29
--- /dev/null
+++ b/testsuite/e1.pr
@@ -0,0 +1 @@
+ee e1.err
diff --git a/testsuite/e1.r b/testsuite/e1.r
new file mode 100644
index 0000000..298e1f4
--- /dev/null
+++ b/testsuite/e1.r
@@ -0,0 +1,4 @@
+E e1.ed
+1;/H/+d
+w e1.o
+EOT
diff --git a/testsuite/e1.t b/testsuite/e1.t
new file mode 100644
index 0000000..a45f9d2
--- /dev/null
+++ b/testsuite/e1.t
@@ -0,0 +1,2 @@
+E e1.ed
+1;/H/+d
diff --git a/testsuite/e2.d b/testsuite/e2.d
new file mode 100644
index 0000000..aa44630
--- /dev/null
+++ b/testsuite/e2.d
@@ -0,0 +1 @@
+E !echo hello world-
diff --git a/testsuite/e2.err b/testsuite/e2.err
new file mode 100644
index 0000000..779a64b
--- /dev/null
+++ b/testsuite/e2.err
@@ -0,0 +1 @@
+.e e2.err
diff --git a/testsuite/e2.pr b/testsuite/e2.pr
new file mode 100644
index 0000000..779a64b
--- /dev/null
+++ b/testsuite/e2.pr
@@ -0,0 +1 @@
+.e e2.err
diff --git a/testsuite/e2.r b/testsuite/e2.r
new file mode 100644
index 0000000..59ebf11
--- /dev/null
+++ b/testsuite/e2.r
@@ -0,0 +1 @@
+hello world-
diff --git a/testsuite/e2.t b/testsuite/e2.t
new file mode 100644
index 0000000..aa44630
--- /dev/null
+++ b/testsuite/e2.t
@@ -0,0 +1 @@
+E !echo hello world-
diff --git a/testsuite/e3.d b/testsuite/e3.d
new file mode 100644
index 0000000..aa44630
--- /dev/null
+++ b/testsuite/e3.d
@@ -0,0 +1 @@
+E !echo hello world-
diff --git a/testsuite/e3.err b/testsuite/e3.err
new file mode 100644
index 0000000..80a7fdc
--- /dev/null
+++ b/testsuite/e3.err
@@ -0,0 +1 @@
+ee.err
diff --git a/testsuite/e3.pr b/testsuite/e3.pr
new file mode 100644
index 0000000..80a7fdc
--- /dev/null
+++ b/testsuite/e3.pr
@@ -0,0 +1 @@
+ee.err
diff --git a/testsuite/e3.r b/testsuite/e3.r
new file mode 100644
index 0000000..aa44630
--- /dev/null
+++ b/testsuite/e3.r
@@ -0,0 +1 @@
+E !echo hello world-
diff --git a/testsuite/e3.t b/testsuite/e3.t
new file mode 100644
index 0000000..1c50726
--- /dev/null
+++ b/testsuite/e3.t
@@ -0,0 +1 @@
+E
diff --git a/testsuite/e4.d b/testsuite/e4.d
new file mode 100644
index 0000000..aa44630
--- /dev/null
+++ b/testsuite/e4.d
@@ -0,0 +1 @@
+E !echo hello world-
diff --git a/testsuite/e4.r b/testsuite/e4.r
new file mode 100644
index 0000000..aa44630
--- /dev/null
+++ b/testsuite/e4.r
@@ -0,0 +1 @@
+E !echo hello world-
diff --git a/testsuite/e4.t b/testsuite/e4.t
new file mode 100644
index 0000000..d905d9d
--- /dev/null
+++ b/testsuite/e4.t
@@ -0,0 +1 @@
+e
diff --git a/testsuite/f1.err b/testsuite/f1.err
new file mode 100644
index 0000000..e60975a
--- /dev/null
+++ b/testsuite/f1.err
@@ -0,0 +1 @@
+.f f1.err
diff --git a/testsuite/f1.pr b/testsuite/f1.pr
new file mode 100644
index 0000000..e60975a
--- /dev/null
+++ b/testsuite/f1.pr
@@ -0,0 +1 @@
+.f f1.err
diff --git a/testsuite/f2.err b/testsuite/f2.err
new file mode 100644
index 0000000..26d1c5e
--- /dev/null
+++ b/testsuite/f2.err
@@ -0,0 +1 @@
+ff1.err
diff --git a/testsuite/f2.pr b/testsuite/f2.pr
new file mode 100644
index 0000000..26d1c5e
--- /dev/null
+++ b/testsuite/f2.pr
@@ -0,0 +1 @@
+ff1.err
diff --git a/testsuite/g1.d b/testsuite/g1.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/g1.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/g1.err b/testsuite/g1.err
new file mode 100644
index 0000000..f95ea22
--- /dev/null
+++ b/testsuite/g1.err
@@ -0,0 +1 @@
+g/./s //x/
diff --git a/testsuite/g1.pr b/testsuite/g1.pr
new file mode 100644
index 0000000..f95ea22
--- /dev/null
+++ b/testsuite/g1.pr
@@ -0,0 +1 @@
+g/./s //x/
diff --git a/testsuite/g1.r b/testsuite/g1.r
new file mode 100644
index 0000000..578a44b
--- /dev/null
+++ b/testsuite/g1.r
@@ -0,0 +1,15 @@
+line5
+help! world
+order
+line 4
+help! world
+order
+line 3
+help! world
+order
+line 2
+help! world
+order
+line 1
+help! world
+order
diff --git a/testsuite/g1.t b/testsuite/g1.t
new file mode 100644
index 0000000..2d0b54f
--- /dev/null
+++ b/testsuite/g1.t
@@ -0,0 +1,6 @@
+g/./m0
+g/./s/$/\
+hello world
+g/hello /s/lo/p!/\
+a\
+order
diff --git a/testsuite/g2.d b/testsuite/g2.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/g2.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/g2.err b/testsuite/g2.err
new file mode 100644
index 0000000..0ff6a5a
--- /dev/null
+++ b/testsuite/g2.err
@@ -0,0 +1 @@
+g//s/./x/
diff --git a/testsuite/g2.pr b/testsuite/g2.pr
new file mode 100644
index 0000000..0ff6a5a
--- /dev/null
+++ b/testsuite/g2.pr
@@ -0,0 +1 @@
+g//s/./x/
diff --git a/testsuite/g2.r b/testsuite/g2.r
new file mode 100644
index 0000000..3b18e51
--- /dev/null
+++ b/testsuite/g2.r
@@ -0,0 +1 @@
+hello world
diff --git a/testsuite/g2.t b/testsuite/g2.t
new file mode 100644
index 0000000..831ee83
--- /dev/null
+++ b/testsuite/g2.t
@@ -0,0 +1,2 @@
+g/[2-4]/-1,+1c\
+hello world
diff --git a/testsuite/g3.d b/testsuite/g3.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/g3.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/g3.err b/testsuite/g3.err
new file mode 100644
index 0000000..01058d8
--- /dev/null
+++ b/testsuite/g3.err
@@ -0,0 +1 @@
+g
diff --git a/testsuite/g3.pr b/testsuite/g3.pr
new file mode 100644
index 0000000..01058d8
--- /dev/null
+++ b/testsuite/g3.pr
@@ -0,0 +1 @@
+g
diff --git a/testsuite/g3.r b/testsuite/g3.r
new file mode 100644
index 0000000..cc6fbdd
--- /dev/null
+++ b/testsuite/g3.r
@@ -0,0 +1,5 @@
+linc 3
+xine 1
+xine 2
+xinc 4
+xinc5
diff --git a/testsuite/g3.t b/testsuite/g3.t
new file mode 100644
index 0000000..2d052a6
--- /dev/null
+++ b/testsuite/g3.t
@@ -0,0 +1,4 @@
+g/./s//x/\
+3m0
+g/./s/e/c/\
+2,3m1
diff --git a/testsuite/g4.d b/testsuite/g4.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/g4.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/g4.r b/testsuite/g4.r
new file mode 100644
index 0000000..350882d
--- /dev/null
+++ b/testsuite/g4.r
@@ -0,0 +1,7 @@
+hello
+zine 1
+line 2
+line 3
+line 4
+line5
+world
diff --git a/testsuite/g4.t b/testsuite/g4.t
new file mode 100644
index 0000000..ec61816
--- /dev/null
+++ b/testsuite/g4.t
@@ -0,0 +1,13 @@
+g/./s/./x/\
+u\
+s/./y/\
+u\
+s/./z/\
+u
+u
+0a
+hello
+.
+$a
+world
+.
diff --git a/testsuite/g5.d b/testsuite/g5.d
new file mode 100644
index 0000000..a92d664
--- /dev/null
+++ b/testsuite/g5.d
@@ -0,0 +1,3 @@
+line 1
+line 2
+line 3
diff --git a/testsuite/g5.r b/testsuite/g5.r
new file mode 100644
index 0000000..15a2675
--- /dev/null
+++ b/testsuite/g5.r
@@ -0,0 +1,9 @@
+line 1
+line 2
+line 3
+line 2
+line 3
+line 1
+line 3
+line 1
+line 2
diff --git a/testsuite/g5.t b/testsuite/g5.t
new file mode 100644
index 0000000..e213481
--- /dev/null
+++ b/testsuite/g5.t
@@ -0,0 +1,2 @@
+g/./1,3t$\
+1d
diff --git a/testsuite/h.err b/testsuite/h.err
new file mode 100644
index 0000000..a71e506
--- /dev/null
+++ b/testsuite/h.err
@@ -0,0 +1 @@
+.h
diff --git a/testsuite/h.pr b/testsuite/h.pr
new file mode 100644
index 0000000..a71e506
--- /dev/null
+++ b/testsuite/h.pr
@@ -0,0 +1 @@
+.h
diff --git a/testsuite/i.d b/testsuite/i.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/i.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/i.r b/testsuite/i.r
new file mode 100644
index 0000000..5f27af0
--- /dev/null
+++ b/testsuite/i.r
@@ -0,0 +1,8 @@
+hello world
+hello world!
+line 1
+line 2
+line 3
+line 4
+hello world!!
+line5
diff --git a/testsuite/i.t b/testsuite/i.t
new file mode 100644
index 0000000..6de2233
--- /dev/null
+++ b/testsuite/i.t
@@ -0,0 +1,9 @@
+0i
+hello world
+.
+2i
+hello world!
+.
+$i
+hello world!!
+.
diff --git a/testsuite/i1.err.posix b/testsuite/i1.err.posix
new file mode 100644
index 0000000..aaddede
--- /dev/null
+++ b/testsuite/i1.err.posix
@@ -0,0 +1,3 @@
+1,$i
+hello world
+.
diff --git a/testsuite/i2.err b/testsuite/i2.err
new file mode 100644
index 0000000..b63f5ac
--- /dev/null
+++ b/testsuite/i2.err
@@ -0,0 +1,3 @@
+ii
+hello world
+.
diff --git a/testsuite/i2.pr b/testsuite/i2.pr
new file mode 100644
index 0000000..b63f5ac
--- /dev/null
+++ b/testsuite/i2.pr
@@ -0,0 +1,3 @@
+ii
+hello world
+.
diff --git a/testsuite/j.d b/testsuite/j.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/j.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/j.r b/testsuite/j.r
new file mode 100644
index 0000000..66f36a8
--- /dev/null
+++ b/testsuite/j.r
@@ -0,0 +1,4 @@
+line 1
+line 2line 3
+line 4
+line5
diff --git a/testsuite/j.t b/testsuite/j.t
new file mode 100644
index 0000000..9b5d28d
--- /dev/null
+++ b/testsuite/j.t
@@ -0,0 +1,2 @@
+1,1j
+2,3j
diff --git a/testsuite/k.d b/testsuite/k.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/k.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/k.r b/testsuite/k.r
new file mode 100644
index 0000000..eeb38db
--- /dev/null
+++ b/testsuite/k.r
@@ -0,0 +1,5 @@
+line 3
+hello world
+line 4
+line5
+line 2
diff --git a/testsuite/k.t b/testsuite/k.t
new file mode 100644
index 0000000..53d588d
--- /dev/null
+++ b/testsuite/k.t
@@ -0,0 +1,10 @@
+2ka
+1d
+'am$
+1ka
+0a
+hello world
+.
+'ad
+u
+'am0
diff --git a/testsuite/k1.err.posix b/testsuite/k1.err.posix
new file mode 100644
index 0000000..eba1f3d
--- /dev/null
+++ b/testsuite/k1.err.posix
@@ -0,0 +1 @@
+1,$ka
diff --git a/testsuite/k2.err b/testsuite/k2.err
new file mode 100644
index 0000000..b34a18d
--- /dev/null
+++ b/testsuite/k2.err
@@ -0,0 +1 @@
+kA
diff --git a/testsuite/k2.pr b/testsuite/k2.pr
new file mode 100644
index 0000000..b34a18d
--- /dev/null
+++ b/testsuite/k2.pr
@@ -0,0 +1 @@
+kA
diff --git a/testsuite/k3.err b/testsuite/k3.err
new file mode 100644
index 0000000..70190c4
--- /dev/null
+++ b/testsuite/k3.err
@@ -0,0 +1 @@
+0ka
diff --git a/testsuite/k3.pr b/testsuite/k3.pr
new file mode 100644
index 0000000..70190c4
--- /dev/null
+++ b/testsuite/k3.pr
@@ -0,0 +1 @@
+0ka
diff --git a/testsuite/k4.err b/testsuite/k4.err
new file mode 100644
index 0000000..3457642
--- /dev/null
+++ b/testsuite/k4.err
@@ -0,0 +1,6 @@
+a
+hello
+.
+.ka
+'ad
+'ap
diff --git a/testsuite/k4.pr b/testsuite/k4.pr
new file mode 100644
index 0000000..3457642
--- /dev/null
+++ b/testsuite/k4.pr
@@ -0,0 +1,6 @@
+a
+hello
+.
+.ka
+'ad
+'ap
diff --git a/testsuite/l.d b/testsuite/l.d
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/l.d
diff --git a/testsuite/l.r b/testsuite/l.r
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/l.r
diff --git a/testsuite/l.t b/testsuite/l.t
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/l.t
diff --git a/testsuite/m.d b/testsuite/m.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/m.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/m.err b/testsuite/m.err
new file mode 100644
index 0000000..3aec4c3
--- /dev/null
+++ b/testsuite/m.err
@@ -0,0 +1,4 @@
+a
+hello world
+.
+1,$m1
diff --git a/testsuite/m.pr b/testsuite/m.pr
new file mode 100644
index 0000000..edbb96f
--- /dev/null
+++ b/testsuite/m.pr
@@ -0,0 +1,5 @@
+a
+hello world
+.
+1,$m1
+hello world
diff --git a/testsuite/m.r b/testsuite/m.r
new file mode 100644
index 0000000..186cf54
--- /dev/null
+++ b/testsuite/m.r
@@ -0,0 +1,5 @@
+line5
+line 1
+line 2
+line 3
+line 4
diff --git a/testsuite/m.t b/testsuite/m.t
new file mode 100644
index 0000000..c39c088
--- /dev/null
+++ b/testsuite/m.t
@@ -0,0 +1,7 @@
+1,2m$
+1,2m$
+1,2m$
+$m0
+$m0
+2,3m1
+2,3m3
diff --git a/testsuite/n.d b/testsuite/n.d
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/n.d
diff --git a/testsuite/n.r b/testsuite/n.r
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/n.r
diff --git a/testsuite/n.t b/testsuite/n.t
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/n.t
diff --git a/testsuite/nl.err b/testsuite/nl.err
new file mode 100644
index 0000000..8949a85
--- /dev/null
+++ b/testsuite/nl.err
@@ -0,0 +1 @@
+,1
diff --git a/testsuite/nl.pr b/testsuite/nl.pr
new file mode 100644
index 0000000..8949a85
--- /dev/null
+++ b/testsuite/nl.pr
@@ -0,0 +1 @@
+,1
diff --git a/testsuite/nl1.d b/testsuite/nl1.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/nl1.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/nl1.r b/testsuite/nl1.r
new file mode 100644
index 0000000..9d8854c
--- /dev/null
+++ b/testsuite/nl1.r
@@ -0,0 +1,8 @@
+
+
+hello world
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/nl1.t b/testsuite/nl1.t
new file mode 100644
index 0000000..ea192e9
--- /dev/null
+++ b/testsuite/nl1.t
@@ -0,0 +1,8 @@
+1
+
+
+0a
+
+
+hello world
+.
diff --git a/testsuite/nl2.d b/testsuite/nl2.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/nl2.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/nl2.r b/testsuite/nl2.r
new file mode 100644
index 0000000..fe99e41
--- /dev/null
+++ b/testsuite/nl2.r
@@ -0,0 +1,6 @@
+line 1
+line 2
+line 3
+line 4
+line5
+hello world
diff --git a/testsuite/nl2.t b/testsuite/nl2.t
new file mode 100644
index 0000000..73fd27b
--- /dev/null
+++ b/testsuite/nl2.t
@@ -0,0 +1,4 @@
+a
+hello world
+.
+0;/./
diff --git a/testsuite/p.d b/testsuite/p.d
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/p.d
diff --git a/testsuite/p.r b/testsuite/p.r
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/p.r
diff --git a/testsuite/p.t b/testsuite/p.t
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/p.t
diff --git a/testsuite/q.d b/testsuite/q.d
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/q.d
diff --git a/testsuite/q.r b/testsuite/q.r
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/q.r
diff --git a/testsuite/q.t b/testsuite/q.t
new file mode 100644
index 0000000..123a2c8
--- /dev/null
+++ b/testsuite/q.t
@@ -0,0 +1,5 @@
+w q.o
+a
+hello
+.
+q
diff --git a/testsuite/q1.err b/testsuite/q1.err
new file mode 100644
index 0000000..0a7e178
--- /dev/null
+++ b/testsuite/q1.err
@@ -0,0 +1 @@
+.q
diff --git a/testsuite/q1.pr b/testsuite/q1.pr
new file mode 100644
index 0000000..0a7e178
--- /dev/null
+++ b/testsuite/q1.pr
@@ -0,0 +1 @@
+.q
diff --git a/testsuite/r1.d b/testsuite/r1.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/r1.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/r1.err.posix b/testsuite/r1.err.posix
new file mode 100644
index 0000000..269aa7c
--- /dev/null
+++ b/testsuite/r1.err.posix
@@ -0,0 +1 @@
+1,$r r1.err
diff --git a/testsuite/r1.r b/testsuite/r1.r
new file mode 100644
index 0000000..a3ff506
--- /dev/null
+++ b/testsuite/r1.r
@@ -0,0 +1,7 @@
+line 1
+hello world
+line 2
+line 3
+line 4
+line5
+hello world
diff --git a/testsuite/r1.t b/testsuite/r1.t
new file mode 100644
index 0000000..d787a92
--- /dev/null
+++ b/testsuite/r1.t
@@ -0,0 +1,3 @@
+1;r !echo hello world
+1
+r !echo hello world
diff --git a/testsuite/r2.d b/testsuite/r2.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/r2.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/r2.err b/testsuite/r2.err
new file mode 100644
index 0000000..1c44fa3
--- /dev/null
+++ b/testsuite/r2.err
@@ -0,0 +1 @@
+r a-good-book
diff --git a/testsuite/r2.pr b/testsuite/r2.pr
new file mode 100644
index 0000000..1c44fa3
--- /dev/null
+++ b/testsuite/r2.pr
@@ -0,0 +1 @@
+r a-good-book
diff --git a/testsuite/r2.r b/testsuite/r2.r
new file mode 100644
index 0000000..ac152ba
--- /dev/null
+++ b/testsuite/r2.r
@@ -0,0 +1,10 @@
+line 1
+line 2
+line 3
+line 4
+line5
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/r2.t b/testsuite/r2.t
new file mode 100644
index 0000000..4286f42
--- /dev/null
+++ b/testsuite/r2.t
@@ -0,0 +1 @@
+r
diff --git a/testsuite/r3.d b/testsuite/r3.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/r3.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/r3.r b/testsuite/r3.r
new file mode 100644
index 0000000..d925d88
--- /dev/null
+++ b/testsuite/r3.r
@@ -0,0 +1,4 @@
+r r3.ed
+1;/H/+d
+w r3.o
+EOT
diff --git a/testsuite/r3.t b/testsuite/r3.t
new file mode 100644
index 0000000..cdc206d
--- /dev/null
+++ b/testsuite/r3.t
@@ -0,0 +1,2 @@
+r r3.ed
+1;/H/+d
diff --git a/testsuite/s1.d b/testsuite/s1.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/s1.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/s1.err b/testsuite/s1.err
new file mode 100644
index 0000000..d7ca0cf
--- /dev/null
+++ b/testsuite/s1.err
@@ -0,0 +1 @@
+s . x
diff --git a/testsuite/s1.pr b/testsuite/s1.pr
new file mode 100644
index 0000000..d7ca0cf
--- /dev/null
+++ b/testsuite/s1.pr
@@ -0,0 +1 @@
+s . x
diff --git a/testsuite/s1.r b/testsuite/s1.r
new file mode 100644
index 0000000..4eb0980
--- /dev/null
+++ b/testsuite/s1.r
@@ -0,0 +1,5 @@
+liene 1
+(liene) (2)
+(liene) (3)
+liene (4)
+(()liene5)
diff --git a/testsuite/s1.t b/testsuite/s1.t
new file mode 100644
index 0000000..cca3dcc
--- /dev/null
+++ b/testsuite/s1.t
@@ -0,0 +1,6 @@
+s/\([^ ][^ ]*\)/(\1)/g
+2s
+/3/s
+/\(4\)/sr
+/\(.\)/srg
+,s/i/&e/
diff --git a/testsuite/s10.err b/testsuite/s10.err
new file mode 100644
index 0000000..0d8d83d
--- /dev/null
+++ b/testsuite/s10.err
@@ -0,0 +1,4 @@
+a
+hello
+.
+s/[h[.]/x/
diff --git a/testsuite/s10.pr b/testsuite/s10.pr
new file mode 100644
index 0000000..1304de1
--- /dev/null
+++ b/testsuite/s10.pr
@@ -0,0 +1,5 @@
+a
+hello
+.
+s/[h[.]/x/
+hello
diff --git a/testsuite/s2.d b/testsuite/s2.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/s2.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/s2.err b/testsuite/s2.err
new file mode 100644
index 0000000..b5c851d
--- /dev/null
+++ b/testsuite/s2.err
@@ -0,0 +1,4 @@
+a
+a
+.
+s/x*/a/g
diff --git a/testsuite/s2.pr b/testsuite/s2.pr
new file mode 100644
index 0000000..949ac99
--- /dev/null
+++ b/testsuite/s2.pr
@@ -0,0 +1,5 @@
+a
+a
+.
+s/x*/a/g
+a
diff --git a/testsuite/s2.r b/testsuite/s2.r
new file mode 100644
index 0000000..ca305c8
--- /dev/null
+++ b/testsuite/s2.r
@@ -0,0 +1,5 @@
+li(n)e 1
+i(n)e 200
+li(n)e 3
+li(n)e 4
+li(n)e500
diff --git a/testsuite/s2.t b/testsuite/s2.t
new file mode 100644
index 0000000..f365849
--- /dev/null
+++ b/testsuite/s2.t
@@ -0,0 +1,4 @@
+,s/./(&)/3
+s/$/00
+2s//%/g
+s/^l
diff --git a/testsuite/s3.d b/testsuite/s3.d
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testsuite/s3.d
diff --git a/testsuite/s3.err b/testsuite/s3.err
new file mode 100644
index 0000000..d68c7d0
--- /dev/null
+++ b/testsuite/s3.err
@@ -0,0 +1 @@
+s/[xyx/a/
diff --git a/testsuite/s3.pr b/testsuite/s3.pr
new file mode 100644
index 0000000..d68c7d0
--- /dev/null
+++ b/testsuite/s3.pr
@@ -0,0 +1 @@
+s/[xyx/a/
diff --git a/testsuite/s3.r b/testsuite/s3.r
new file mode 100644
index 0000000..d6cada2
--- /dev/null
+++ b/testsuite/s3.r
@@ -0,0 +1 @@
+hello world
diff --git a/testsuite/s3.t b/testsuite/s3.t
new file mode 100644
index 0000000..fbf8803
--- /dev/null
+++ b/testsuite/s3.t
@@ -0,0 +1,6 @@
+a
+hello/[]world
+.
+s/[/]/ /
+s/[[:digit:][]/ /
+s/[]]/ /
diff --git a/testsuite/s4.err b/testsuite/s4.err
new file mode 100644
index 0000000..35b609f
--- /dev/null
+++ b/testsuite/s4.err
@@ -0,0 +1 @@
+s/\a\b\c/xyz/
diff --git a/testsuite/s4.pr b/testsuite/s4.pr
new file mode 100644
index 0000000..35b609f
--- /dev/null
+++ b/testsuite/s4.pr
@@ -0,0 +1 @@
+s/\a\b\c/xyz/
diff --git a/testsuite/s5.err b/testsuite/s5.err
new file mode 100644
index 0000000..89104c5
--- /dev/null
+++ b/testsuite/s5.err
@@ -0,0 +1 @@
+s//xyz/
diff --git a/testsuite/s5.pr b/testsuite/s5.pr
new file mode 100644
index 0000000..89104c5
--- /dev/null
+++ b/testsuite/s5.pr
@@ -0,0 +1 @@
+s//xyz/
diff --git a/testsuite/s6.err b/testsuite/s6.err
new file mode 100644
index 0000000..b478595
--- /dev/null
+++ b/testsuite/s6.err
@@ -0,0 +1 @@
+s
diff --git a/testsuite/s6.pr b/testsuite/s6.pr
new file mode 100644
index 0000000..b478595
--- /dev/null
+++ b/testsuite/s6.pr
@@ -0,0 +1 @@
+s
diff --git a/testsuite/s7.err b/testsuite/s7.err
new file mode 100644
index 0000000..30ba4fd
--- /dev/null
+++ b/testsuite/s7.err
@@ -0,0 +1,5 @@
+a
+hello world
+.
+/./
+sr
diff --git a/testsuite/s7.pr b/testsuite/s7.pr
new file mode 100644
index 0000000..47a94c3
--- /dev/null
+++ b/testsuite/s7.pr
@@ -0,0 +1,6 @@
+a
+hello world
+.
+/./
+sr
+hello world
diff --git a/testsuite/s8.err b/testsuite/s8.err
new file mode 100644
index 0000000..5665767
--- /dev/null
+++ b/testsuite/s8.err
@@ -0,0 +1,4 @@
+a
+hello
+.
+s/[h[=]/x/
diff --git a/testsuite/s8.pr b/testsuite/s8.pr
new file mode 100644
index 0000000..ec6a965
--- /dev/null
+++ b/testsuite/s8.pr
@@ -0,0 +1,5 @@
+a
+hello
+.
+s/[h[=]/x/
+hello
diff --git a/testsuite/s9.err b/testsuite/s9.err
new file mode 100644
index 0000000..1ff16dd
--- /dev/null
+++ b/testsuite/s9.err
@@ -0,0 +1,4 @@
+a
+hello
+.
+s/[h[:]/x/
diff --git a/testsuite/s9.pr b/testsuite/s9.pr
new file mode 100644
index 0000000..f22b3b3
--- /dev/null
+++ b/testsuite/s9.pr
@@ -0,0 +1,5 @@
+a
+hello
+.
+s/[h[:]/x/
+hello
diff --git a/testsuite/t.d b/testsuite/t.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/t.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/t.r b/testsuite/t.r
new file mode 100644
index 0000000..2b28547
--- /dev/null
+++ b/testsuite/t.r
@@ -0,0 +1,16 @@
+line 1
+line 1
+line 1
+line 2
+line 2
+line 3
+line 4
+line5
+line 1
+line 1
+line 1
+line 2
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/t1.d b/testsuite/t1.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/t1.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/t1.err b/testsuite/t1.err
new file mode 100644
index 0000000..c49c556
--- /dev/null
+++ b/testsuite/t1.err
@@ -0,0 +1 @@
+tt
diff --git a/testsuite/t1.pr b/testsuite/t1.pr
new file mode 100644
index 0000000..c49c556
--- /dev/null
+++ b/testsuite/t1.pr
@@ -0,0 +1 @@
+tt
diff --git a/testsuite/t1.r b/testsuite/t1.r
new file mode 100644
index 0000000..2b28547
--- /dev/null
+++ b/testsuite/t1.r
@@ -0,0 +1,16 @@
+line 1
+line 1
+line 1
+line 2
+line 2
+line 3
+line 4
+line5
+line 1
+line 1
+line 1
+line 2
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/t1.t b/testsuite/t1.t
new file mode 100644
index 0000000..6b66163
--- /dev/null
+++ b/testsuite/t1.t
@@ -0,0 +1,3 @@
+1t0
+2,3t2
+,t$
diff --git a/testsuite/t2.d b/testsuite/t2.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/t2.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/t2.err b/testsuite/t2.err
new file mode 100644
index 0000000..c202051
--- /dev/null
+++ b/testsuite/t2.err
@@ -0,0 +1 @@
+t0;-1
diff --git a/testsuite/t2.pr b/testsuite/t2.pr
new file mode 100644
index 0000000..c202051
--- /dev/null
+++ b/testsuite/t2.pr
@@ -0,0 +1 @@
+t0;-1
diff --git a/testsuite/t2.r b/testsuite/t2.r
new file mode 100644
index 0000000..0c75ff5
--- /dev/null
+++ b/testsuite/t2.r
@@ -0,0 +1,6 @@
+line 1
+line5
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/t2.t b/testsuite/t2.t
new file mode 100644
index 0000000..5175abd
--- /dev/null
+++ b/testsuite/t2.t
@@ -0,0 +1 @@
+t0;/./
diff --git a/testsuite/u.d b/testsuite/u.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/u.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/u.err b/testsuite/u.err
new file mode 100644
index 0000000..caa1ba1
--- /dev/null
+++ b/testsuite/u.err
@@ -0,0 +1 @@
+.u
diff --git a/testsuite/u.pr b/testsuite/u.pr
new file mode 100644
index 0000000..caa1ba1
--- /dev/null
+++ b/testsuite/u.pr
@@ -0,0 +1 @@
+.u
diff --git a/testsuite/u.r b/testsuite/u.r
new file mode 100644
index 0000000..ad558d8
--- /dev/null
+++ b/testsuite/u.r
@@ -0,0 +1,9 @@
+line 1
+hello
+hello world!!
+line 2
+line 3
+line 4
+line5
+hello
+hello world!!
diff --git a/testsuite/u.t b/testsuite/u.t
new file mode 100644
index 0000000..1b9eb15
--- /dev/null
+++ b/testsuite/u.t
@@ -0,0 +1,31 @@
+1;r ascii.o
+u
+a
+hello
+world
+.
+g/./s//x/\
+a\
+hello\
+world
+u
+u
+u
+a
+hello world!
+.
+u
+1,$d
+u
+2,3d
+u
+c
+hello world!!
+.
+u
+u
+-1;.,+1j
+u
+u
+u
+.,+1t$
diff --git a/testsuite/v.d b/testsuite/v.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/v.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/v.r b/testsuite/v.r
new file mode 100644
index 0000000..714db63
--- /dev/null
+++ b/testsuite/v.r
@@ -0,0 +1,11 @@
+line5
+order
+hello world
+line 1
+order
+line 2
+order
+line 3
+order
+line 4
+order
diff --git a/testsuite/v.t b/testsuite/v.t
new file mode 100644
index 0000000..608a77f
--- /dev/null
+++ b/testsuite/v.t
@@ -0,0 +1,6 @@
+v/[ ]/m0
+v/[ ]/s/$/\
+hello world
+v/hello /s/lo/p!/\
+a\
+order
diff --git a/testsuite/w.d b/testsuite/w.d
new file mode 100644
index 0000000..92f337e
--- /dev/null
+++ b/testsuite/w.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/w.r b/testsuite/w.r
new file mode 100644
index 0000000..ac152ba
--- /dev/null
+++ b/testsuite/w.r
@@ -0,0 +1,10 @@
+line 1
+line 2
+line 3
+line 4
+line5
+line 1
+line 2
+line 3
+line 4
+line5
diff --git a/testsuite/w.t b/testsuite/w.t
new file mode 100644
index 0000000..c2e18bd
--- /dev/null
+++ b/testsuite/w.t
@@ -0,0 +1,2 @@
+w !cat >\!.z
+r \!.z
diff --git a/testsuite/w1.err b/testsuite/w1.err
new file mode 100644
index 0000000..e2c8a60
--- /dev/null
+++ b/testsuite/w1.err
@@ -0,0 +1 @@
+w /to/some/far-away/place
diff --git a/testsuite/w1.pr b/testsuite/w1.pr
new file mode 100644
index 0000000..e2c8a60
--- /dev/null
+++ b/testsuite/w1.pr
@@ -0,0 +1 @@
+w /to/some/far-away/place
diff --git a/testsuite/w2.err b/testsuite/w2.err
new file mode 100644
index 0000000..9daf89c
--- /dev/null
+++ b/testsuite/w2.err
@@ -0,0 +1 @@
+ww.o
diff --git a/testsuite/w2.pr b/testsuite/w2.pr
new file mode 100644
index 0000000..9daf89c
--- /dev/null
+++ b/testsuite/w2.pr
@@ -0,0 +1 @@
+ww.o
diff --git a/testsuite/w3.err b/testsuite/w3.err
new file mode 100644
index 0000000..39bbf4c
--- /dev/null
+++ b/testsuite/w3.err
@@ -0,0 +1 @@
+wqp w.o
diff --git a/testsuite/w3.pr b/testsuite/w3.pr
new file mode 100644
index 0000000..39bbf4c
--- /dev/null
+++ b/testsuite/w3.pr
@@ -0,0 +1 @@
+wqp w.o
diff --git a/testsuite/x.d b/testsuite/x.d
new file mode 100644
index 0000000..94c99a3
--- /dev/null
+++ b/testsuite/x.d
@@ -0,0 +1,5 @@
+line 1
+line 2
+line 3
+line 4
+line 5
diff --git a/testsuite/x.err b/testsuite/x.err
new file mode 100644
index 0000000..898398e
--- /dev/null
+++ b/testsuite/x.err
@@ -0,0 +1,10 @@
+2,3y
+$x
+0x
+,y
+$x
+2
+y
+x
+E addr1.ro
+x
diff --git a/testsuite/x.pr b/testsuite/x.pr
new file mode 100644
index 0000000..29d6383
--- /dev/null
+++ b/testsuite/x.pr
@@ -0,0 +1 @@
+100
diff --git a/testsuite/x.r b/testsuite/x.r
new file mode 100644
index 0000000..7b8b7c0
--- /dev/null
+++ b/testsuite/x.r
@@ -0,0 +1,19 @@
+line 2
+line 3
+line 3
+line 1
+line 2
+line 3
+line 4
+line 5
+line 2
+line 3
+line 2
+line 3
+line 1
+line 2
+line 3
+line 4
+line 5
+line 2
+line 3
diff --git a/testsuite/x.t b/testsuite/x.t
new file mode 100644
index 0000000..0e868b8
--- /dev/null
+++ b/testsuite/x.t
@@ -0,0 +1,8 @@
+2,3y
+$x
+0x
+,y
+$x
+2
+y
+x
diff --git a/testsuite/z.err b/testsuite/z.err
new file mode 100644
index 0000000..6a51a2d
--- /dev/null
+++ b/testsuite/z.err
@@ -0,0 +1,2 @@
+z
+z
diff --git a/testsuite/z.pr b/testsuite/z.pr
new file mode 100644
index 0000000..6a51a2d
--- /dev/null
+++ b/testsuite/z.pr
@@ -0,0 +1,2 @@
+z
+z