From 187dcd089f8a86e8d8e769769496f791d69ec09d Mon Sep 17 00:00:00 2001 From: GrĂ©goire DuchĂȘne Date: Sun, 28 Sep 2014 21:46:13 +0200 Subject: Added the first tests --- GNUmakefile | 3 +++ run_tests.sh | 34 ++++++++++++++++++++++++++++++++++ tests/Apply.expected | 8 ++++++++ tests/Apply.ml | 8 ++++++++ tests/Assert.expected | 3 +++ tests/Assert.ml | 3 +++ tests/BoxedInt.expected | 8 ++++++++ tests/BoxedInt.ml | 7 +++++++ tests/LetIn.expected | 3 +++ tests/LetIn.ml | 4 ++++ tests/Standard.expected | 6 ++++++ tests/Standard.ml | 5 +++++ tests/TrivialMatch.expected | 3 +++ tests/TrivialMatch.ml | 4 ++++ tests/TrivialValue.expected | 4 ++++ tests/TrivialValue.ml | 2 ++ 16 files changed, 105 insertions(+) create mode 100755 run_tests.sh create mode 100644 tests/Apply.expected create mode 100644 tests/Apply.ml create mode 100644 tests/Assert.expected create mode 100644 tests/Assert.ml create mode 100644 tests/BoxedInt.expected create mode 100644 tests/BoxedInt.ml create mode 100644 tests/LetIn.expected create mode 100644 tests/LetIn.ml create mode 100644 tests/Standard.expected create mode 100644 tests/Standard.ml create mode 100644 tests/TrivialMatch.expected create mode 100644 tests/TrivialMatch.ml create mode 100644 tests/TrivialValue.expected create mode 100644 tests/TrivialValue.ml diff --git a/GNUmakefile b/GNUmakefile index 1cabcc1..0ca9786 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -5,4 +5,7 @@ PKG= bigarray compiler-libs.bytecomp compiler-libs.common PKG+= compiler-libs.toplevel PROG= tamasheq +tests: $(PROG) + ./run_tests.sh + include ostumake/gnu.ocaml.prog.mk diff --git a/run_tests.sh b/run_tests.sh new file mode 100755 index 0000000..dcfa7ef --- /dev/null +++ b/run_tests.sh @@ -0,0 +1,34 @@ +#!/bin/env bash + +tmp=$(mktemp -d "/tmp/tamasheq.XXXX") +failure_count=0 + +cd tests + +for input in *.ml; do + expected="${input/ml/expected}" + name="${input%\.ml}" + output="$tmp/${input/ml/output}" + + if ../tamasheq -denv -o "$tmp" "$input" > "$output" 2>&1; then + if cmp -s "$expected" "$output"; then + printf "%-20s\tSUCCESS\n" "$name" >&2 + rm "$tmp"/* + else + printf "%-20s\tFAILURE\n" "$name" >&2 + failure_count=$((failure_count + 1)) + fi + else + printf "%-20s\tFAILURE\n" "$name" >&2 + failure_count=$((failure_count + 1)) + fi +done + +if [ "$failure_count" -gt 0 ]; then + printf "\n$failure_count test(s) failed\nplease see $tmp for more information\n" >&2 + exit 1 +else + printf "\nall the tests were successful\n" >&2 + rm -r "$tmp" + exit 0 +fi diff --git a/tests/Apply.expected b/tests/Apply.expected new file mode 100644 index 0000000..661e043 --- /dev/null +++ b/tests/Apply.expected @@ -0,0 +1,8 @@ +Apply_0 = [6] { + (no name) = + (no name) = 2 + (no name) = 4 + (no name) = + (no name) = + (no name) = 8 +} diff --git a/tests/Apply.ml b/tests/Apply.ml new file mode 100644 index 0000000..1cbd3e6 --- /dev/null +++ b/tests/Apply.ml @@ -0,0 +1,8 @@ +let f x = x + 1 +let x = f 1 +let y = f (f (f 1)) + +let g x y z = x + y + z +let h x y = g x y 5 + +let z = h 1 2 diff --git a/tests/Assert.expected b/tests/Assert.expected new file mode 100644 index 0000000..f6fb00d --- /dev/null +++ b/tests/Assert.expected @@ -0,0 +1,3 @@ +Assert_0 = [1] { + (no name) = 0 +} diff --git a/tests/Assert.ml b/tests/Assert.ml new file mode 100644 index 0000000..5017ed6 --- /dev/null +++ b/tests/Assert.ml @@ -0,0 +1,3 @@ +let x = + assert (1 > 0); + 0 diff --git a/tests/BoxedInt.expected b/tests/BoxedInt.expected new file mode 100644 index 0000000..e129041 --- /dev/null +++ b/tests/BoxedInt.expected @@ -0,0 +1,8 @@ +BoxedInt_0 = [6] { + (no name) = + (no name) = + (no name) = + (no name) = 1 + (no name) = 1 + (no name) = 2 +} diff --git a/tests/BoxedInt.ml b/tests/BoxedInt.ml new file mode 100644 index 0000000..ad8db7c --- /dev/null +++ b/tests/BoxedInt.ml @@ -0,0 +1,7 @@ +let x = Int32.of_int 1 +let y = Int64.of_int 1 +let z = Int64.to_int32 y |> Int32.add x |> Nativeint.of_int32 + +let a = Int32.to_int x +let b = Int64.to_int y +let c = Nativeint.to_int z diff --git a/tests/LetIn.expected b/tests/LetIn.expected new file mode 100644 index 0000000..5424c00 --- /dev/null +++ b/tests/LetIn.expected @@ -0,0 +1,3 @@ +LetIn_0 = [1] { + (no name) = 2 +} diff --git a/tests/LetIn.ml b/tests/LetIn.ml new file mode 100644 index 0000000..6b5c3f2 --- /dev/null +++ b/tests/LetIn.ml @@ -0,0 +1,4 @@ +let x = + let y = 1 in + + 2 * y diff --git a/tests/Standard.expected b/tests/Standard.expected new file mode 100644 index 0000000..63c8893 --- /dev/null +++ b/tests/Standard.expected @@ -0,0 +1,6 @@ +Hello world! +3 +The length of [1; 2; 3] is 3 +Standard_0 = [1] { + (no name) = +} diff --git a/tests/Standard.ml b/tests/Standard.ml new file mode 100644 index 0000000..e13b98c --- /dev/null +++ b/tests/Standard.ml @@ -0,0 +1,5 @@ +let ( $ ) f x = f x + +let () = print_endline "Hello world!" +let () = print_int $ List.length [1; 2; 3] |> print_newline +let () = Printf.printf "The length of [1; 2; 3] is %d\n" $ List.length [1; 2; 3] diff --git a/tests/TrivialMatch.expected b/tests/TrivialMatch.expected new file mode 100644 index 0000000..19d249c --- /dev/null +++ b/tests/TrivialMatch.expected @@ -0,0 +1,3 @@ +TrivialMatch_0 = [1] { + (no name) = correct +} diff --git a/tests/TrivialMatch.ml b/tests/TrivialMatch.ml new file mode 100644 index 0000000..971eafb --- /dev/null +++ b/tests/TrivialMatch.ml @@ -0,0 +1,4 @@ +let x = + match 1 < 0 with + | true -> "something is terribly wrong here" + | false -> "correct" diff --git a/tests/TrivialValue.expected b/tests/TrivialValue.expected new file mode 100644 index 0000000..29a20b3 --- /dev/null +++ b/tests/TrivialValue.expected @@ -0,0 +1,4 @@ +TrivialValue_0 = [2] { + (no name) = 1 + (no name) = 2 +} diff --git a/tests/TrivialValue.ml b/tests/TrivialValue.ml new file mode 100644 index 0000000..6f76e0e --- /dev/null +++ b/tests/TrivialValue.ml @@ -0,0 +1,2 @@ +let x = 1 +let y = x + 1 -- cgit v1.2.3-70-g09d2