add a simple unit-test framework
This commit is contained in:
parent
447c212f09
commit
64a1ee9810
|
|
@ -2,3 +2,4 @@ jumpforth
|
|||
.*.swp
|
||||
.*.swo
|
||||
*~
|
||||
test/*.act
|
||||
|
|
|
|||
27
Makefile
27
Makefile
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue