hush: add function tests

diff --git a/shell/hush_test/hush-misc/func1.right b/shell/hush_test/hush-misc/func1.right
new file mode 100644
index 0000000..e21665a
--- /dev/null
+++ b/shell/hush_test/hush-misc/func1.right
@@ -0,0 +1,6 @@
+Hello
+Zero: 0
+One: 1 Param1: World
+Zero: 0 Param1: Restored
+Multi line function
+One: 1
diff --git a/shell/hush_test/hush-misc/func1.tests b/shell/hush_test/hush-misc/func1.tests
new file mode 100755
index 0000000..ffb269f
--- /dev/null
+++ b/shell/hush_test/hush-misc/func1.tests
@@ -0,0 +1,16 @@
+f() { echo Hello; }
+g () { echo One: $# Param1: $1; }
+h ( )
+{
+    echo -n 'Multi ' && echo -n 'line '
+    echo function
+    false
+}
+
+f
+echo Zero: $?
+set -- Restored
+{ g World; }
+echo Zero: $? Param1: $1
+( h )
+echo One: $?
diff --git a/shell/hush_test/hush-misc/func2.right b/shell/hush_test/hush-misc/func2.right
new file mode 100644
index 0000000..f2a041d
--- /dev/null
+++ b/shell/hush_test/hush-misc/func2.right
@@ -0,0 +1,5 @@
+First 0
+Second 0
+First 1
+Second 1
+Done
diff --git a/shell/hush_test/hush-misc/func2.tests b/shell/hush_test/hush-misc/func2.tests
new file mode 100755
index 0000000..763203f
--- /dev/null
+++ b/shell/hush_test/hush-misc/func2.tests
@@ -0,0 +1,9 @@
+i=0
+while test $i != 2; do
+    f() { echo First $i; }
+    f
+    f() { echo Second $i; }
+    f
+    : $((i++))
+done
+echo Done