btcs

bitcoin script parser/evaluator/compiler/decompiler
git clone git://jb55.com/btcs
Log | Files | Refs | README | LICENSE

commit 48a057c333bc014a87f4c8d8271f0aebd1bc8001
parent d0ccaf2513498086f8f5b72d13de3ca89b804035
Author: Wowee0 <co81407@coxj.com>
Date:   Mon,  2 Dec 2019 17:52:16 -0600

test: add csv test runner

Closes #42

Diffstat:
MMakefile | 19++++++-------------
Atest/run | 29+++++++++++++++++++++++++++++
Atest/tests.csv | 24++++++++++++++++++++++++
3 files changed, 59 insertions(+), 13 deletions(-)

diff --git a/Makefile b/Makefile @@ -16,13 +16,9 @@ CLIDEPS=parser.tab.c \ lex.yy.c \ main.c -TESTDEPS=test.c - # DEPS=oplookup.h script.h misc.h Makefile op.h stack.h -TESTDEPS+=$(wildcard deps/*/*.c) OBJS=$(DEPS:.c=.o) CLIOBJS=$(CLIDEPS:.c=.o) -TESTOBJS=$(TESTDEPS:.c=.o) GEN=parser.tab.c \ parser.tab.h \ @@ -31,7 +27,6 @@ GEN=parser.tab.c \ oplookup.h \ $(OBJS) \ $(CLIOBJS) \ - $(TESTOBJS) \ PREFIX ?= /usr/local @@ -41,7 +36,6 @@ all: $(BIN) include $(OBJS:.o=.d) include $(CLIOBJS:.o=.d) -include $(TESTOBJS:.o=.d) op.c: oplookup.h oplookup.c @@ -67,17 +61,16 @@ install: $(BIN) $(BIN): $(OBJS) $(CLIOBJS) $(CC) $(CFLAGS) -o $@ $(OBJS) $(CLIOBJS) -run_tests: $(OBJS) $(TESTOBJS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(TESTOBJS) -check: run_tests $(BIN) - @./run_tests +check: $(BIN) fake + @sh -c "cd test && ./run" -clean: +clean: fake rm -f $(GEN) rm -f *.d -TAGS: +TAGS: fake etags -o - *.c > $@ -.PHONY: TAGS test clean + +.PHONY: fake diff --git a/test/run b/test/run @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +process () { + tail -n+2 "$1" | sed -n '/^--- failing/q;p' +} + +n=1 +c=$(($(process tests.csv | wc -l))) + +printf "1..%d\n" "$c" + +process tests.csv | \ +(fail=0 +while IFS=, read -r description args input expected +do + output=$(../btcs $args <<<"$input" 2>&1) + output2=${output//[$'\t\r\n']/ } + if [ "$output2" == "$expected" ]; then + printf "ok %d - %s\n" "$n" "$description" + else + printf "not ok %d - %s\n" "$n" "$description" + printf "#\n# got '%s', \n# expected '%s'\n#\n" "$output2" "$expected" + fail=1 + fi + n=$((n + 1)) +done + exit $fail +) + diff --git a/test/tests.csv b/test/tests.csv @@ -0,0 +1,24 @@ +description,args,input,expected output +test_simple,,OP_1 ,script 1 script_hex 51 stack 1 stack_hex 01 results success +test_nip,,OP_1 OP_2 OP_NIP ,script 1 2 OP_NIP script_hex 515277 stack 2 stack_hex 02 results success +test_2dup_not_enough_input,,OP_1 OP_2DUP ,script 1 OP_2DUP script_hex 516e stack 1 stack_hex 01 results error:2:INVALID_STACK_OPERATION:2DUP +negative_integer,,-2 ,script -2 script_hex 0182 stack 0x82 stack_hex 82 results success +add_negative_two,,-2 -2 OP_ADD ,script -2 -2 OP_ADD script_hex 0182018293 stack -4 stack_hex 84 results success +big_int_serializes_ok,,2147483647 2147483647 OP_ADD ,script 2147483647 2147483647 OP_ADD script_hex 04ffffff7f04ffffff7f93 stack @feffffff00 stack_hex feffffff00 results success +test_small_int,,127 ,script 127 script_hex 017f stack 0x7f stack_hex 7f results success +test_OP_1ADD,,16 OP_1ADD ,script 16 OP_1ADD script_hex 608b stack 17 stack_hex 11 results success +test_OP_1SUB,,16 OP_1SUB ,script 16 OP_1SUB script_hex 608c stack 15 stack_hex 0f results success +test_OP_NEGATE,,2 OP_NEGATE ,script 2 OP_NEGATE script_hex 528f stack -2 stack_hex 82 results success +test_OP_NEGATE_negative,,-2 OP_NEGATE ,script -2 OP_NEGATE script_hex 01828f stack 2 stack_hex 02 results success +test_OP_ABS,,2 OP_ABS ,script 2 OP_ABS script_hex 5290 stack 2 stack_hex 02 results success +test_OP_ABS_negative,,-2 OP_ABS ,script -2 OP_ABS script_hex 018290 stack 2 stack_hex 02 results success +sub_negative_two,,-2 -12 OP_SUB ,script -2 -12 OP_SUB script_hex 0182018c94 stack 10 stack_hex 0a results success +test_OP_DROP,,-1 OP_DROP ,script -1 OP_DROP script_hex 4f75 stack stack_hex results success +test_OP_NOT_0,,0 OP_NOT ,script 0 OP_NOT script_hex 0091 stack 1 stack_hex 01 results success +test_OP_NOT_1,,1 OP_NOT ,script 1 OP_NOT script_hex 5191 stack 0 stack_hex 00 results success +test_OP_NOT_2,,2 OP_NOT ,script 2 OP_NOT script_hex 5291 stack 0 stack_hex 00 results success +test_OP_0NOTEQUAL0,,0 OP_0NOTEQUAL ,script 0 OP_0NOTEQUAL script_hex 0092 stack 0 stack_hex 00 results success +test_OP_0NOTEQUAL2,,2 OP_0NOTEQUAL ,script 2 OP_0NOTEQUAL script_hex 5292 stack 1 stack_hex 01 results success +test_ADD_SUB,,111 1 OP_ADD 12 OP_SUB ,script 111 1 OP_ADD 12 OP_SUB script_hex 016f51935c94 stack 100 stack_hex 64 results success +test_BOOLAND,,1 1 OP_BOOLAND ,script 1 1 OP_BOOLAND script_hex 51519a stack 1 stack_hex 01 results success +test_BOOLAND,,0 0 OP_BOOLAND ,script 0 0 OP_BOOLAND script_hex 00009a stack 0 stack_hex 00 results success