# SplitBit test manifest
# Written by Anachronaut
#
# One test per line, fields separated by '|'. Blank lines and lines starting
# with '#' are ignored.
#
#   name | source | mode | stdin | limit
#
# source is relative to Programs/. Everything assembles from there with
# Libraries/ on the include path, and the binary is written into Tests/build.
#
# Modes:
#   run       Assemble, execute, compare all output against Tests/expected/<name>.out
#   assemble  Assemble only. For library files that have no entry point to run
#   xfail     Assembly is expected to fail. Records a known breakage so that
#             fixing one is noticed, and so an accidental new one is too
#
# limit is a cycle count, for programs that never halt on their own. It is passed
# to the emulator as --cycles, which bounds the run by cycles rather than by wall
# clock time and so keeps the recorded output identical from one run to the next.
# Every program is run with --fast, since the emulated cycle rate has no bearing
# on what a program prints.

# ---- Programs that halt on their own ----
hello                | hello.asm                          | run      | -                  | -
printHello           | printHello.asm                     | run      | -                  | -
8bitFibonacci        | Fibonacci/8bitFibonacci.asm        | run      | -                  | -
16bitFibonacci       | Fibonacci/16bitFibonacci.asm       | run      | -                  | -
32bitFibonacci       | Fibonacci/32bitFibonacci.asm       | run      | -                  | -
8bitSieve            | primeSieve/8bitSieve.asm           | run      | -                  | -
16bitSegmentedSieve  | primeSieve/16bitSegmentedSieve.asm | run      | -                  | -
mathTest             | testPrograms/mathTest.asm          | run      | -                  | -
printTest            | testPrograms/printTest.asm         | run      | -                  | -
int16print           | Libraries/int16print.asm           | run      | -                  | -

# ---- The multiple Data Pointer behaviour, which nothing else exercises ----
dataPointerTest      | testPrograms/dataPointerTest.asm   | run      | -                  | -
twoPointerCopy       | testPrograms/twoPointerCopy.asm    | run      | -                  | -
pointerTableTest     | testPrograms/pointerTableTest.asm  | run      | -                  | -
staticTableTest      | testPrograms/staticTableTest.asm   | run      | -                  | -

# ---- Programs driven by console input ----
inputTest            | inputTest.asm                      | run      | inputTest.in       | -
inputTestOld         | testPrograms/inputTest.asm         | run      | inputTest.in       | -
replCalculator       | replCalculator.asm                 | run      | replCalculator.in  | -

# ---- Programs that run forever by design, bounded by a cycle count ----
# 3,000,000 cycles is about fourteen generations of the glider, which puts
# evolveBoard and its pointer juggling through its paces many times over.
16x16Life            | gameOfLife/16x16Life.asm           | run      | -                  | 3000000

# ---- Libraries: no entry point, so only check that they assemble ----
lib-int8             | Libraries/int8.asm                 | assemble | -                  | -
lib-int16            | Libraries/int16.asm                | assemble | -                  | -
lib-int32            | Libraries/int32.asm                | assemble | -                  | -
lib-math             | Libraries/math.asm                 | assemble | -                  | -

# ---- Known breakages, recorded rather than ignored ----
# print.asm branches to 'start', which only the including program defines.
lib-print            | Libraries/print.asm                | xfail    | -                  | -
# These three call print.asm routines but have no #Include line at all. They are
# only ever pulled in by printTest.asm, so they are not standalone programs.
printDecimalTest     | testPrograms/printDecimalTest.asm  | xfail    | -                  | -
printDigitTest       | testPrograms/printDigitTest.asm    | xfail    | -                  | -
printHexTest         | testPrograms/printHexTest.asm      | xfail    | -                  | -
# shiftTest calls printDecimal, which print.asm does not have. It looks like the
# routine was renamed and this caller was never updated.
shiftTest            | testPrograms/shiftTest.asm         | xfail    | -                  | -
