From f0201554538ed3081d78dfd9fd9a7e951eb785f2 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Wed, 25 Sep 2024 11:42:51 -0700 Subject: [PATCH] Add integration tests Signed-off-by: Alek Ratzloff --- .gitignore | 1 + runtests.sh | 28 ++++++++++++ tests/int.npp | 101 +++++++++++++++++++++++++++++++++++++++++++ tests/int.npp.expect | 75 ++++++++++++++++++++++++++++++++ tests/str.npp | 40 +++++++++++++++++ tests/str.npp.expect | 26 +++++++++++ 6 files changed, 271 insertions(+) create mode 100755 runtests.sh create mode 100644 tests/int.npp create mode 100644 tests/int.npp.expect create mode 100644 tests/str.npp create mode 100644 tests/str.npp.expect diff --git a/.gitignore b/.gitignore index ea8c4bf..e03a67d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ +tests/*.got /target diff --git a/runtests.sh b/runtests.sh new file mode 100755 index 0000000..aab19df --- /dev/null +++ b/runtests.sh @@ -0,0 +1,28 @@ +#!/bin/bash +function die() { + local msg + msg="$1" + echo "$msg - exiting" + exit 1 +} + +here="$(realpath "$(dirname "$0")")" +tests="$here/tests" +flags="--quiet --release" + +echo "building" +cargo build $flags || die "build failed" + +echo "testing" +find "$tests" -type f -name '*.npp' | while read f; do + result="$(cargo run $flags -- "$f")" + + echo "$result" > "$f.got" + + if [[ "$result" != "$(cat "$f.expect")" ]]; then + echo "$f did not match expected output" + diff "$f.got" "$f.expect" + fi +done + +echo "done" diff --git a/tests/int.npp b/tests/int.npp new file mode 100644 index 0000000..42609fc --- /dev/null +++ b/tests/int.npp @@ -0,0 +1,101 @@ +# Int type operator and function tests + +# assign +a = 10 +b = 20 + +println(a) +println(b) + +# __add__ +println("__add__") +println(1 + 1) +println(1 + 2 + 3) +println(1938 + 481) +println(a + b) +println(b + a) + +# __sub__ +println("__sub__") +println(1 - 2) +println(2 - 1) +println(0 - 10) +println(185 - 86171) +println(a - b) +println(b - a) + +# __mul__ +println("__mul__") +println(1 * 1) +println(1 * -1) +println(-1 * 1) +println(0 * -1) +println(-1 * 0) +println(2 * 32768) +println(2 * 2 * 2 * 2) +println(999 * 999) +println(a * b) +println(a * a * b * b) + +# __div__ +println("__div__") +println(1 / 1) +println(1 / 2) +println(2 / 1) +println(363 / 3) +println(3 / 363) +println(a / b) +println(b / a) + +# __gt__ +println("__gt__") +println(1 > 2) +println(2 > 1) +println(5831 > -391) +println(-34888 > 1000) +println(1 > 1) +println(2 > 2) + +# __ge__ +println("__ge__") +println(1 >= 2) +println(2 >= 1) +println(81001 >= 81001) +println(-81001 >= 1000) +println(1 >= 1) +println(2 >= 2) + +# __lt__ +println("__lt__") +println(1 < 2) +println(2 < 1) +println(81001 < 81001) +println(-81001 < 1000) +println(1 < 1) +println(2 < 2) + +# __le__ +println("__le__") +println(1 <= 2) +println(2 <= 1) +println(81001 <= 81001) +println(-81001 <= 1000) +println(1 <= 1) +println(2 <= 2) + +# __pos__ +println("__pos__") +println(+1) +println(+(-1)) +println(+(10 - 20)) +println(+(20 - 10)) + +# __neg__ +println("__neg__") +println(-1) +println(--1) +println(---1) +println(----1) +println(10 - -20) +println(-10 - 20) +println(-10 - -20) diff --git a/tests/int.npp.expect b/tests/int.npp.expect new file mode 100644 index 0000000..2c37397 --- /dev/null +++ b/tests/int.npp.expect @@ -0,0 +1,75 @@ +10 +20 +__add__ +2 +6 +2419 +30 +30 +__sub__ +-1 +1 +-10 +-85986 +-10 +10 +__mul__ +1 +-1 +-1 +0 +0 +65536 +16 +998001 +200 +40000 +__div__ +1 +0 +2 +121 +0 +0 +2 +__gt__ +false +true +true +false +false +false +__ge__ +false +true +true +false +true +true +__lt__ +true +false +false +true +false +false +__le__ +true +false +true +true +true +true +__pos__ +1 +1 +10 +10 +__neg__ +-1 +1 +-1 +1 +30 +-30 +10 diff --git a/tests/str.npp b/tests/str.npp new file mode 100644 index 0000000..b189c85 --- /dev/null +++ b/tests/str.npp @@ -0,0 +1,40 @@ +# Str type operator and function tests + +a = "asdf" +b = 'This is a longer sentence' +c = 'the quick brown fox jumped over the lazy dog\'s escaped characters' + +# to_str +println("to_str") +println(a) +println(a.to_str()) +println(b) +println(b.to_str()) +println(c) +println(c.to_str()) + +# to_repr +println("to_repr") +println("to_repr".to_repr()) +println(a.to_repr()) +println(b.to_repr()) +println(c.to_repr()) +println('I would\ninclude a\nmultiline string if\nit wasn\'t such a\npain to\ntest in the\n.expect file'.to_repr()) + +# len +println("len") +println(a.len()) +println(b.len()) +println(c.len()) + +# __add__ +println("__add__") +println(a + a) +println(a + a + a) +println(a + b) +println(b + a) +# __mul__ +println("__mul__") +println(a * 4) +println(b * 5) +println((a * 6).to_repr()) diff --git a/tests/str.npp.expect b/tests/str.npp.expect new file mode 100644 index 0000000..ef1453b --- /dev/null +++ b/tests/str.npp.expect @@ -0,0 +1,26 @@ +to_str +asdf +asdf +This is a longer sentence +This is a longer sentence +the quick brown fox jumped over the lazy dog's escaped characters +the quick brown fox jumped over the lazy dog's escaped characters +to_repr +'to_repr' +'asdf' +'This is a longer sentence' +'the quick brown fox jumped over the lazy dog\'s escaped characters' +'I would\ninclude a\nmultiline string if\nit wasn\'t such a\npain to\ntest in the\n.expect file' +len +4 +25 +65 +__add__ +asdfasdf +asdfasdfasdf +asdfThis is a longer sentence +This is a longer sentenceasdf +__mul__ +asdfasdfasdfasdf +This is a longer sentenceThis is a longer sentenceThis is a longer sentenceThis is a longer sentenceThis is a longer sentence +'asdfasdfasdfasdfasdfasdf'