Skip to content

Commit

Permalink
Add tests for examples & invalid asm src
Browse files Browse the repository at this point in the history
  • Loading branch information
trexxet committed Jul 25, 2020
1 parent d16c8cd commit b9758f7
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 22 deletions.
18 changes: 4 additions & 14 deletions isa/isa_tests.cmake
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
# Functions to run asm & vm tests

function(add_asm_test)
cmake_parse_arguments(TEST "WILL_FAIL" "NAME;SRC;OUT" "" ${ARGN})
cmake_parse_arguments(TEST "WILL_FAIL" "NAME;FILE;OUTPUT" "" ${ARGN})
add_test(
NAME ${TEST_NAME}
COMMAND sh -c "$<TARGET_FILE:vasm-${ARCH}> -o ${TEST_OUT} ${TEST_SRC}"
COMMAND sh -c "$<TARGET_FILE:vasm-${ARCH}> -o ${TEST_OUTPUT} ${TEST_FILE}"
)
set_tests_properties(
${TEST_NAME} PROPERTIES
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
WILL_FAIL ${TEST_WILL_FAIL}
PASS_REGULAR_EXPRESSION "Assembly successful"
)
if(NOT ${TEST_WILL_FAIL})
set_tests_properties(
${TEST_NAME} PROPERTIES
PASS_REGULAR_EXPRESSION "Assembly successful"
)
endif()
endfunction()

function(add_vm_test)
Expand All @@ -28,12 +23,7 @@ function(add_vm_test)
set_tests_properties(
${TEST_NAME} PROPERTIES
WILL_FAIL ${TEST_WILL_FAIL}
PASS_REGULAR_EXPRESSION "${TEST_OUTPUT}\n.*Execution successful"
)
if(NOT ${TEST_WILL_FAIL})
set_tests_properties(
${TEST_NAME} PROPERTIES
PASS_REGULAR_EXPRESSION "${TEST_OUTPUT}\n.*Execution successful"
)
endif()
endfunction()

3 changes: 1 addition & 2 deletions isa/virtaxy/examples/cmpWithZero.vasm
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
; Print 1 if input is greater than zero,
; otherwise print 0
; Print 1 if input > 0, otherwise print 0

in rax
bg rax, 0, greaterThanZero
Expand Down
1 change: 1 addition & 0 deletions isa/virtaxy/examples/factorialRecursive.vasm
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
; Print factorial of input number
; If input < 0, print 1

main:
in rax
Expand Down
1 change: 1 addition & 0 deletions isa/virtaxy/examples/loopSum.vasm
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
; Sum N integers
; Print 0 if N <= 0

mov rax, 0
in rcx
Expand Down
5 changes: 3 additions & 2 deletions isa/virtaxy/examples/loopSumArray.vasm
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
; Store N < 10 integers in memory and sum them
; Store N <= 10 integers in memory and sum them
; If N > 10, print -1; if N <= 0, print 0

maxN equ 10
errCode equ -1

main:
in rbx
; Check if N < maxN, if not then print errCode
bl rbx, maxN, .inputLoop
ble rbx, maxN, .inputLoop
mov rax, errCode
out rax
hlt
Expand Down
4 changes: 4 additions & 0 deletions isa/virtaxy/test/invalidArgs.vasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
main:
mov 10, rax
hlt

5 changes: 5 additions & 0 deletions isa/virtaxy/test/invalidInstr.vasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
main:
mov rax, 1
weirdInstr
hlt

4 changes: 4 additions & 0 deletions isa/virtaxy/test/invalidSymbol.vasm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
main:
jmp somewhere
hlt

33 changes: 29 additions & 4 deletions isa/virtaxy/test/tests.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
set(ASM_OUTPUT ${CMAKE_BINARY_DIR}/test.vo)

add_asm_test(NAME asm::cmpWithZero SRC examples/cmpWithZero.vasm OUT ${ASM_OUTPUT})
add_vm_test(NAME vm::cmpWithZero_-1 FILE ${ASM_OUTPUT} INPUT -1 OUTPUT 0)
add_vm_test(NAME vm::cmpWithZero_0 FILE ${ASM_OUTPUT} INPUT 0 OUTPUT 0)
add_vm_test(NAME vm::cmpWithZero_1 FILE ${ASM_OUTPUT} INPUT 1 OUTPUT 1)
add_asm_test(NAME asm::asmExpressions FILE examples/asmExpressions.vasm OUTPUT ${ASM_OUTPUT})
add_vm_test(NAME vm::asmExpressions FILE ${ASM_OUTPUT} OUTPUT "1\n3\n3\n7")

add_asm_test(NAME asm::cmpWithZero FILE examples/cmpWithZero.vasm OUTPUT ${ASM_OUTPUT})
add_vm_test(NAME vm::cmpWithZero_-1 FILE ${ASM_OUTPUT} INPUT "-1" OUTPUT "0")
add_vm_test(NAME vm::cmpWithZero_0 FILE ${ASM_OUTPUT} INPUT "0" OUTPUT "0")
add_vm_test(NAME vm::cmpWithZero_1 FILE ${ASM_OUTPUT} INPUT "1" OUTPUT "1")

add_asm_test(NAME asm::factorialRecursive FILE examples/factorialRecursive.vasm OUTPUT ${ASM_OUTPUT})
add_vm_test(NAME vm::factorialRecursive_-1 FILE ${ASM_OUTPUT} INPUT "-1" OUTPUT "1")
add_vm_test(NAME vm::factorialRecursive_0 FILE ${ASM_OUTPUT} INPUT "0" OUTPUT "1")
add_vm_test(NAME vm::factorialRecursive_1 FILE ${ASM_OUTPUT} INPUT "1" OUTPUT "1")
add_vm_test(NAME vm::factorialRecursive_5 FILE ${ASM_OUTPUT} INPUT "5" OUTPUT "120")

add_asm_test(NAME asm::loopSum FILE examples/loopSum.vasm OUTPUT ${ASM_OUTPUT})
add_vm_test(NAME vm::loopSum_-1 FILE ${ASM_OUTPUT} INPUT "-1" OUTPUT "0")
add_vm_test(NAME vm::loopSum_0 FILE ${ASM_OUTPUT} INPUT "0 0" OUTPUT "0")
add_vm_test(NAME vm::loopSum_5 FILE ${ASM_OUTPUT} INPUT "5 1 2 3 -1 0" OUTPUT "5")

add_asm_test(NAME asm::loopSumArray FILE examples/loopSumArray.vasm OUTPUT ${ASM_OUTPUT})
add_vm_test(NAME vm::loopSumArray_-1 FILE ${ASM_OUTPUT} INPUT "-1" OUTPUT "0")
add_vm_test(NAME vm::loopSumArray_0 FILE ${ASM_OUTPUT} INPUT "0" OUTPUT "0")
add_vm_test(NAME vm::loopSumArray_10 FILE ${ASM_OUTPUT} INPUT "10 -1 -1 -1 -1 -1 -1 -1 -1 1 0" OUTPUT "-7")
add_vm_test(NAME vm::loopSumArray_11 FILE ${ASM_OUTPUT} INPUT "11" OUTPUT "-1")

add_asm_test(NAME asm::invalidFile FILE howtoexist OUTPUT ${ASM_OUTPUT} WILL_FAIL)
add_asm_test(NAME asm::invalidInstr FILE test/invalidInstr.vasm OUTPUT ${ASM_OUTPUT} WILL_FAIL)
add_asm_test(NAME asm::invalidArgs FILE test/invalidArgs.vasm OUTPUT ${ASM_OUTPUT} WILL_FAIL)
add_asm_test(NAME asm::invalidSymbol FILE test/invalidSymbol.vasm OUTPUT ${ASM_OUTPUT} WILL_FAIL)

0 comments on commit b9758f7

Please sign in to comment.