'Copyright 2020 Luke Ceddia
'SPDX-License-Identifier: Apache-2.0
'test.bas - Run test suite
Dim active_section
'0 = none, 1 = program, 2 = output
tmpdir$ = "/tmp/"
active_test
= UBound(tests
) + 1 tests
(active_test
).title
= basename$
(Command$(cmdline_index
)) + ":" + LTrim$(Mid$(lt$
, 8)) active_section = 1
active_section = 2
active_section = 0
tests
(active_test
).program
= tests
(active_test
).program
+ l$
+ Chr$(10) tests
(active_test
).expected_output
= tests
(active_test
).expected_output
+ l$
+ Chr$(10) 'Blank line or comment, do nothing
Print "Must start with $title"
starttime!
= Timer(0.001) 'print "TITLE: "; tests(active_test).title
'print "PROGRAM"
'print "-------"
'print tests(active_test).program;
'print "EXPECT: "; tests(active_test).expect
'print tests(active_test).expected_output;
filename$ = tmpdir$ + "test-" + rndhex$(4)
Print #1, tests
(active_test
).program
retcode
= Shell(testbinary$
+ " " + filename$
+ ".bas > " + filename$
+ ".output") Print tests
(active_test
).title;
": ";
successes = successes + 1
Print "Failed, expected error but ran successfully." Case "stdout", "stdout_exact" actual_output$
= remove_char$
(actual_output$
, Chr$(13)) tests
(active_test
).expected_output
= remove_char$
(tests
(active_test
).expected_output
, Chr$(13))
If tests
(active_test
).expect
<> "stdout_exact" Then actual_output$ = strip$(actual_output$)
tests(active_test).expected_output = strip$(tests(active_test).expected_output)
Print "Failed with error, output was: "; actual_output$
ElseIf actual_output$
= tests
(active_test
).expected_output
Then successes = successes + 1
Print "Expected: "; tests
(active_test
).expected_output;
Print " Actual: "; actual_output$;
Print "Unknown condition" Kill filename$
+ ".output"
ehandler:
basename$
= Mid$(path$
, slash
+ 1, dot
- slash
- 1)
rndhex$ = result$
'Courtesy Ed Davis
s2$ = ""
s2$
= s2$
+ Mid$(s$
, i
, 1) remove_char$ = s2$
start = 0
start = start + 1
finish = finish - 1
strip$
= Mid$(s$
, start
, finish
- start
+ 1)