testing "patch detects already applied hunk" \
'patch 2>&1; echo $?; cat input' \
"\
-Possibly reversed hunk 1 at 2
+Possibly reversed hunk 1 at 4
Hunk 1 FAILED 1/1.
abc
+def
testing "patch detects already applied hunk at the EOF" \
'patch 2>&1; echo $?; cat input' \
"\
-Possibly reversed hunk 1 at 3
+Possibly reversed hunk 1 at 4
Hunk 1 FAILED 1/1.
abc
123
123
" \
+# testing "test name" "command(s)" "expected result" "file input" "stdin"
+testing "patch at the beginning" \
+ 'patch 2>&1; cat input' \
+"\
+patching file input
+111changed
+444
+555
+666
+777
+888
+999
+" \
+"\
+111
+222
+333
+444
+555
+666
+777
+888
+999
+" \
+"\
+--- input
++++ input
+@@ -1,6 +1,4 @@
+-111
+-222
+-333
++111changed
+ 444
+ 555
+ 666
+" \
+
+# testing "test name" "command(s)" "expected result" "file input" "stdin"
+testing "patch creates new file" \
+ 'patch 2>&1; echo $?; cat testfile; rm testfile' \
+"\
+creating testfile
+0
+qwerty
+" "" "\
+--- /dev/null
++++ testfile
+@@ -0,0 +1 @@
++qwerty
+"
+
+# testing "test name" "command(s)" "expected result" "file input" "stdin"
+testing "patch understands ...dir///dir..." \
+ 'patch -p1 2>&1; echo $?' \
+"\
+patching file dir2///file
+patch: can't open 'dir2///file': No such file or directory
+1
+" "" "\
+--- bogus_dir///dir2///file
++++ bogus_dir///dir2///file
+@@ -1,2 +1,3 @@
+ qwe
++asd
+ zxc
+"
+
rm input.orig 2>/dev/null
exit $FAILCOUNT