add a simple unit-test framework

This commit is contained in:
Jesse D. McDonald 2020-10-22 21:03:27 -05:00
parent 447c212f09
commit 64a1ee9810
6 changed files with 95 additions and 1 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ jumpforth
.*.swp
.*.swo
*~
test/*.act

View File

@ -1,2 +1,27 @@
jumpforth: jumpforth.S startup.4th
SHELL = /bin/bash
TARGET = jumpforth
SOURCES = $(TARGET).S
all: $(TARGET)
$(TARGET): $(SOURCES) startup.4th
gcc -m32 -nostdlib -static -o $@ $<
clean: test-clean
$(RM) $(TARGET)
TEST_RESULTS := $(patsubst %.4th,%.act,$(wildcard test/*.4th))
.PHONY: test $(TEST_RESULTS)
test: $(TEST_RESULTS)
test-clean:
$(RM) $(TEST_RESULTS)
.PHONY: $(TEST_RESULTS)
$(TEST_RESULTS): %.act: %.4th $(TARGET)
@printf '%s … ' $(notdir $<) && \
{ ./$(TARGET) < $< >& $@; echo exit-code: $$? >> $@; } && \
if [[ ! -e $(@:%.act=%.exp) ]]; then echo '(new)'; cp $@ $(@:%.act=%.exp); \
elif diff -q $(@:%.act=%.exp) $@ >/dev/null; then echo '✓'; \
else echo '✗'; diff -u $(@:%.act=%.exp) $@; :; fi

21
test/compares.4th Normal file
View File

@ -0,0 +1,21 @@
: X DUP >R >NAME TUCK TYPE 6 SWAP - SPACES
-1 R@ EXECUTE NEGATE . SPACE
0 R@ EXECUTE NEGATE . SPACE
1 R> EXECUTE NEGATE . EOL ;
: Y DUP >R >NAME TUCK TYPE 6 SWAP - SPACES
-3 -2 R@ EXECUTE NEGATE . SPACE
-3 -3 R@ EXECUTE NEGATE . SPACE
-3 -4 R> EXECUTE NEGATE . EOL ;
0 ARRAY UNARY-OPS ] 0< 0<= 0= 0<> 0>= 0> [
HERE 0 UNARY-OPS - CELL / CONSTANT N-UNARY-OPS
0 ARRAY BINARY-OPS ] < <= = <> >= > [
HERE 0 BINARY-OPS - CELL / CONSTANT N-BINARY-OPS
: TEST
N-UNARY-OPS 0 DO I UNARY-OPS @ X LOOP
N-BINARY-OPS 0 DO I BINARY-OPS @ Y LOOP ;
TEST

13
test/compares.exp Normal file
View File

@ -0,0 +1,13 @@
0< 1 0 0
0<= 1 1 0
0= 0 1 0
0<> 1 0 1
0>= 0 1 1
0> 0 0 1
< 1 0 0
<= 1 1 0
= 0 1 0
<> 1 0 1
>= 0 1 1
> 0 0 1
exit-code: 0

21
test/double-compares.4th Normal file
View File

@ -0,0 +1,21 @@
: X DUP >R >NAME TUCK TYPE 6 SWAP - SPACES
-1 S>D R@ EXECUTE NEGATE . SPACE
0 S>D R@ EXECUTE NEGATE . SPACE
1 S>D R> EXECUTE NEGATE . EOL ;
: Y DUP >R >NAME TUCK TYPE 6 SWAP - SPACES
-3 S>D -2 S>D R@ EXECUTE NEGATE . SPACE
-3 S>D -3 S>D R@ EXECUTE NEGATE . SPACE
-3 S>D -4 S>D R> EXECUTE NEGATE . EOL ;
0 ARRAY UNARY-OPS ] D0< D0<= D0= D0<> D0>= D0> [
HERE 0 UNARY-OPS - CELL / CONSTANT N-UNARY-OPS
0 ARRAY BINARY-OPS ] D< D<= D= D<> D>= D> [
HERE 0 BINARY-OPS - CELL / CONSTANT N-BINARY-OPS
: TEST
N-UNARY-OPS 0 DO I UNARY-OPS @ X LOOP
N-BINARY-OPS 0 DO I BINARY-OPS @ Y LOOP ;
TEST

13
test/double-compares.exp Normal file
View File

@ -0,0 +1,13 @@
D0< 1 0 0
D0<= 1 1 0
D0= 0 1 0
D0<> 1 0 1
D0>= 0 1 1
D0> 0 0 1
D< 1 0 0
D<= 1 1 0
D= 0 1 0
D<> 1 0 1
D>= 0 1 1
D> 0 0 1
exit-code: 0