about summary refs log tree commit diff stats
path: root/test_apps
diff options
context:
space:
mode:
Diffstat (limited to 'test_apps')
-rwxr-xr-xtest_apps421
1 files changed, 0 insertions, 421 deletions
diff --git a/test_apps b/test_apps
deleted file mode 100755
index a7a70830..00000000
--- a/test_apps
+++ /dev/null
@@ -1,421 +0,0 @@
-#!/bin/sh
-# Build and test all included SubX programs on Linux:
-#   translate them into ELF binaries
-#   compare the generated binaries with what's already in git
-#   run/test the ELF binaries in emulated mode
-#   run/test the ELF binaries in native mode
-#
-# Example usage:
-#   test_apps
-#   test_apps record  # don't compare with what's in git
-
-set -e
-cd `dirname $0`
-
-./build
-
-echo "== translating using the bootstrap C++ translator"
-
-# example programs
-
-echo ex1
-./bootstrap_bin translate init.linux apps/ex1.subx  -o apps/ex1
-test "$1" = 'record'  ||  git diff --exit-code apps/ex1
-{
-  ./bootstrap_bin run apps/ex1  ||  ret=$?
-  test $ret -eq 42  # life, the universe and everything
-}
-{
-  apps/ex1  ||  ret=$?
-  test $ret -eq 42  # life, the universe and everything
-}
-
-echo ex2
-./bootstrap_bin translate init.linux apps/ex2.subx  -o apps/ex2
-test "$1" = 'record'  ||  git diff --exit-code apps/ex2
-{
-  ./bootstrap_bin run apps/ex2  ||  ret=$?
-  test $ret -eq 7  # 3 + 4
-}
-{
-  apps/ex2  ||  ret=$?
-  test $ret -eq 7  # 3 + 4
-}
-
-echo ex3
-./bootstrap_bin translate init.linux apps/ex3.subx  -o apps/ex3
-test "$1" = 'record'  ||  git diff --exit-code apps/ex3
-{
-  ./bootstrap_bin run apps/ex3  ||  ret=$?
-  test $ret -eq 55  # 1 + 2 + ... + 10
-}
-{
-  apps/ex3  ||  ret=$?
-  test $ret -eq 55  # 1 + 2 + ... + 10
-}
-
-echo ex4
-./bootstrap_bin translate init.linux apps/ex4.subx  -o apps/ex4
-test "$1" = 'record'  ||  git diff --exit-code apps/ex4
-{
-  echo a | ./bootstrap_bin run apps/ex4 >ex4.out  ||  true
-  test `cat ex4.out` = 'a'
-}
-{
-  echo a | apps/ex4 >ex4.out  ||  true
-  test `cat ex4.out` = 'a'
-}
-
-echo ex5
-./bootstrap_bin translate init.linux apps/ex5.subx  -o apps/ex5
-test "$1" = 'record'  ||  git diff --exit-code apps/ex5
-{
-  echo a | ./bootstrap_bin run apps/ex5 >ex5.out  ||  true
-  test `cat ex5.out` = 'a'
-}
-{
-  echo a | apps/ex5 >ex5.out  ||  true
-  test `cat ex5.out` = 'a'
-}
-
-echo ex6
-./bootstrap_bin translate init.linux apps/ex6.subx  -o apps/ex6
-test "$1" = 'record'  ||  git diff --exit-code apps/ex6
-{
-  ./bootstrap_bin run apps/ex6 >ex6.out  ||  true
-  test "`cat ex6.out`" = 'Hello, world!'
-}
-{
-  apps/ex6 >ex6.out  ||  true
-  test "`cat ex6.out`" = 'Hello, world!'
-}
-
-echo ex7
-./bootstrap_bin translate init.linux apps/ex7.subx  -o apps/ex7
-test "$1" = 'record'  ||  git diff --exit-code apps/ex7
-{
-  ./bootstrap_bin run apps/ex7  ||  ret=$?
-  test $ret -eq 97  # 'a'
-}
-{
-  apps/ex7  ||  ret=$?
-  test $ret -eq 97  # 'a'
-}
-
-echo ex8
-./bootstrap_bin translate init.linux apps/ex8.subx  -o apps/ex8
-test "$1" = 'record'  || git diff --exit-code apps/ex8
-{
-  ./bootstrap_bin run apps/ex8 abcd  ||  ret=$?
-  test $ret -eq 4  # length('abcd')
-}
-{
-  apps/ex8 abcd  ||  ret=$?
-  test $ret -eq 4  # length('abcd')
-}
-
-echo ex9
-./bootstrap_bin translate init.linux apps/ex9.subx  -o apps/ex9
-test "$1" = 'record'  || git diff --exit-code apps/ex9
-{
-  ./bootstrap_bin run apps/ex9 z x  ||  ret=$?
-  test $ret -eq 2  # 'z' - 'x'
-}
-{
-  apps/ex9 z x  ||  ret=$?
-  test $ret -eq 2  # 'z' - 'x'
-}
-
-echo ex10
-./bootstrap_bin translate init.linux apps/ex10.subx  -o apps/ex10
-test "$1" = 'record'  || git diff --exit-code apps/ex10
-{
-  ./bootstrap_bin run apps/ex10 abc abc  ||  ret=$?
-  test $ret -eq 1  # equal
-  ./bootstrap_bin run apps/ex10 abc abcd  # 0; not equal
-}
-{
-  apps/ex10 abc abc  ||  ret=$?
-  test $ret -eq 1  # equal
-  apps/ex10 abc abcd  # 0; not equal
-}
-
-echo ex11
-./bootstrap_bin translate init.linux apps/ex11.subx  -o apps/ex11
-test "$1" = 'record'  || git diff --exit-code apps/ex11
-{
-  ./bootstrap_bin run apps/ex11
-  echo
-}
-{
-  apps/ex11
-  echo
-}
-
-echo ex12
-./bootstrap_bin translate init.linux apps/ex12.subx  -o apps/ex12
-test "$1" = 'record'  || git diff --exit-code apps/ex12
-test $EMULATED  &&  ./bootstrap_bin run apps/ex12  # final byte of mmap'd address is well-nigh guaranteed to be 0
-test $NATIVE  &&  apps/ex12
-
-echo ex13
-./bootstrap_bin translate init.linux apps/ex13.subx  -o apps/ex13
-test "$1" = 'record'  ||  git diff --exit-code apps/ex13
-{
-  ./bootstrap_bin run apps/ex13  ||  ret=$?
-  test $ret -eq 1  # 3 == 3
-}
-{
-  apps/ex13  ||  ret=$?
-  test $ret -eq 1  # 3 == 3
-}
-
-# Larger apps that use the standard library.
-
-echo factorial
-./bootstrap_bin translate init.linux [01]*.subx apps/factorial.subx  -o apps/factorial
-test "$1" = 'record'  ||  git diff --exit-code apps/factorial
-{
-  ./bootstrap_bin run apps/factorial  ||  ret=$?
-  test $ret -eq 120  # factorial(5)
-  ./bootstrap_bin run apps/factorial test
-  echo
-}
-{
-  apps/factorial  ||  ret=$?
-  test $ret -eq 120  # factorial(5)
-  apps/factorial test
-  echo
-}
-
-echo crenshaw2-1
-./bootstrap_bin translate init.linux [01]*.subx apps/crenshaw2-1.subx  -o apps/crenshaw2-1
-test "$1" = 'record'  ||  git diff --exit-code apps/crenshaw2-1
-{
-  ./bootstrap_bin run apps/crenshaw2-1 test
-  echo
-}
-{
-  apps/crenshaw2-1 test
-  echo
-}
-
-echo crenshaw2-1b
-./bootstrap_bin translate init.linux [01]*.subx apps/crenshaw2-1b.subx  -o apps/crenshaw2-1b
-test "$1" = 'record'  ||  git diff --exit-code apps/crenshaw2-1b
-{
-  ./bootstrap_bin run apps/crenshaw2-1b test
-  echo
-}
-{
-  apps/crenshaw2-1b test
-  echo
-}
-
-echo random
-./bootstrap_bin translate init.linux [01]*.subx apps/random.subx  -o apps/random
-test "$1" = 'record'  ||  git diff --exit-code apps/random
-# don't run
-
-# Phases of the self-hosted SubX translator.
-
-for phase in hex survey_elf pack assort dquotes tests
-do
-  echo $phase
-  ./bootstrap_bin translate init.linux [01]*.subx apps/subx-params.subx apps/$phase.subx -o apps/$phase
-  test "$1" = 'record'  ||  git diff --exit-code apps/$phase
-  {
-    ./bootstrap_bin run apps/$phase test
-    echo
-  }
-  {
-    apps/$phase test
-    echo
-  }
-done
-
-# One phase variant for translating SubX to baremetal. (Other phases are reused.)
-
-for phase in survey_baremetal
-do
-  echo $phase
-  ./bootstrap_bin translate init.linux [01]*.subx apps/subx-params.subx apps/$phase.subx -o apps/$phase
-  test "$1" = 'record'  ||  git diff --exit-code apps/$phase
-  {
-    ./bootstrap_bin run apps/$phase test
-    echo
-  }
-  {
-    apps/$phase test
-    echo
-  }
-done
-
-# Higher-level syntax.
-
-# Certain phases of translation run native beyond this point. We're starting
-# to go beyond functionality of the C++ bootstrap_bin.
-
-echo sigils
-./bootstrap_bin translate init.linux [012]*.subx apps/subx-params.subx apps/sigils.subx  -o apps/sigils
-test "$1" = 'record'  ||  git diff --exit-code apps/sigils
-{
-  ./bootstrap_bin run apps/sigils test
-  echo
-}
-{
-  apps/sigils test
-  echo
-}
-
-echo calls
-cat init.linux [012]*.subx apps/subx-params.subx apps/calls.subx  |  apps/sigils  > a.sigils
-./bootstrap_bin translate a.sigils -o apps/calls
-test "$1" = 'record'  ||  git diff --exit-code apps/calls
-{
-  ./bootstrap_bin run apps/calls test
-  echo
-}
-{
-  apps/calls test
-  echo
-}
-
-echo braces
-cat init.linux [012]*.subx apps/subx-params.subx apps/braces.subx  |  apps/calls  |  apps/sigils  > a.sigils
-./bootstrap_bin translate a.sigils -o apps/braces
-test "$1" = 'record'  ||  git diff --exit-code apps/braces
-{
-  ./bootstrap_bin run apps/braces test
-  echo
-}
-{
-  apps/braces test
-  echo
-}
-
-echo mu
-cat init.linux [0-2]*.subx apps/mu.subx  |  apps/braces  |  apps/calls  |  apps/sigils  > a.sigils
-./bootstrap_bin translate a.sigils -o apps/mu
-test "$1" = 'record'  ||  git diff --exit-code apps/mu
-{
-  ./bootstrap_bin run apps/mu test
-  echo
-}
-{
-  apps/mu test
-  echo
-}
-
-echo "== translating using the self-hosted translator"
-
-# example programs
-
-for n in `seq 1 12`
-do
-  echo ex$n
-  ./translate_subx init.linux apps/ex$n.subx
-  diff apps/ex$n a.elf
-done
-
-# Larger apps that use the standard library.
-
-for app in factorial crenshaw2-1 crenshaw2-1b
-do
-  echo $app
-  ./translate_subx init.linux [01]*.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-# Phases of the self-hosted SubX translator.
-
-for app in hex survey_elf pack assort dquotes tests
-do
-  echo $app
-  ./translate_subx init.linux [01]*.subx apps/subx-params.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-# One phase variant for translating SubX to baremetal. (Other phases are reused.)
-
-for app in survey_baremetal
-do
-  echo $app
-  ./translate_subx init.linux [01]*.subx apps/subx-params.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-for app in sigils calls braces
-do
-  echo $app
-  ./translate_subx init.linux [012]*.subx apps/subx-params.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-# Mu translator
-echo mu
-./translate_subx init.linux [0-2]*.subx apps/mu.subx
-diff apps/mu a.elf
-
-# Mu programs
-
-echo ex1.mu
-./translate_mu apps/ex1.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 42  # life, the universe and everything
-}
-{
-  ./a.elf  ||  ret=$?
-  test $ret -eq 42  # life, the universe and everything
-}
-
-echo ex2.mu
-./translate_mu apps/ex2.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 7
-}
-{
-  ./a.elf  ||  ret=$?
-  test $ret -eq 7
-}
-
-echo ex3.mu
-./translate_mu apps/ex3.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 55
-}
-{
-  ./a.elf  ||  ret=$?
-  test $ret -eq 55
-}
-
-echo ex3.2.mu
-./translate_mu apps/ex3.2.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 55
-}
-{
-  ./a.elf  ||  ret=$?
-  test $ret -eq 55
-}
-
-echo factorial.mu
-./translate_mu apps/factorial.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 120
-  ./bootstrap_bin run a.elf test
-  echo
-}
-{
-  ./a.elf  ||  ret=$?
-  test $ret -eq 120
-  ./a.elf test
-  echo
-}
-
-exit 0