sointu/tests/CMakeLists.txt

100 lines
4.5 KiB
CMake

function(regression_test testname)
if(${ARGC} LESS 4)
set(source ${testname})
else()
set(source ${ARGV3})
endif()
add_executable(${testname} ${source}.asm test_renderer.c)
# the tests include the entire ASM but we still want to rebuild when they change
file(GLOB FOURKLANG ${PROJECT_SOURCE_DIR}/src/*.inc ${PROJECT_SOURCE_DIR}/src/*.asm ${PROJECT_SOURCE_DIR}/src/opcodes/*.asm ${PROJECT_SOURCE_DIR}/src/opcodes/*.inc)
set_source_files_properties(${source}.asm PROPERTIES OBJECT_DEPENDS "${FOURKLANG}")
set_source_files_properties(${FOURKLANG} PROPERTIES HEADER_FILE_ONLY TRUE)
add_test(${testname} ${testname})
target_compile_definitions(${testname} PUBLIC TEST_NAME="${testname}" SU_USE_INTROSPECTION SU_USE_PLAYER)
set (rawinput ${CMAKE_CURRENT_SOURCE_DIR}/expected_output/${testname}.raw)
set (rawoutput ${CMAKE_CURRENT_BINARY_DIR}/expected_output/${testname}.raw)
add_custom_target(${testname}_rawcopy
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${rawinput} ${rawoutput}
)
add_dependencies(${testname} ${testname}_rawcopy)
if(ARGC GREATER 1)
if (ARGV1)
message("${testname} requires ${ARGV1}")
set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED "${ARGV1}")
endif()
endif()
if(ARGC GREATER 2)
if (ARGV2)
message("${testname} setups ${ARGV2}")
set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP "${ARGV2}")
endif()
endif()
endfunction(regression_test)
regression_test(test_envelope "" ENVELOPE)
regression_test(test_loadval "" LOAD)
regression_test(test_send "" SEND)
regression_test(test_send_global)
regression_test(test_panning ENVELOPE PANNING)
regression_test(test_multiple_instruments ENVELOPE)
regression_test(test_pop LOAD FOP_POP)
regression_test(test_addp LOAD)
regression_test(test_mulp LOAD FOP_MULP)
regression_test(test_push "LOAD;FOP_POP" FOP_PUSH)
regression_test(test_xch LOAD)
regression_test(test_add LOAD)
regression_test(test_mul LOAD)
regression_test(test_addp_stereo LOAD)
regression_test(test_mulp_stereo LOAD FOP_MULP2)
regression_test(test_loadnote)
regression_test(test_noise ENVELOPE VCO_NOISE)
regression_test(test_oscillat_sine ENVELOPE VCO_SINE)
regression_test(test_oscillat_trisaw ENVELOPE)
regression_test(test_oscillat_pulse ENVELOPE VCO_PULSE)
regression_test(test_oscillat_gate ENVELOPE)
regression_test(test_oscillat_stereo ENVELOPE)
regression_test(test_oscillat_lfo "ENVELOPE;VCO_SINE;VCO_PULSE;FOP_MULP2")
regression_test(test_oscillat_transposemod "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;SEND")
regression_test(test_oscillat_detunemod "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;SEND")
regression_test(test_oscillat_phasemod "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;SEND")
regression_test(test_oscillat_colormod "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;SEND")
regression_test(test_oscillat_shapemod "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;SEND")
regression_test(test_oscillat_gainmod "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;SEND")
regression_test(test_distort ENVELOPE)
regression_test(test_distort_mod "VCO_SINE;ENVELOPE;SEND")
regression_test(test_distort_stereo ENVELOPE)
regression_test(test_hold ENVELOPE)
regression_test(test_hold_mod "VCO_SINE;ENVELOPE;SEND")
regression_test(test_filter_band "VCO_SINE;ENVELOPE;FOP_MULP")
regression_test(test_filter_low "VCO_SINE;ENVELOPE;FOP_MULP")
regression_test(test_filter_high "VCO_SINE;ENVELOPE;FOP_MULP")
regression_test(test_filter_peak "VCO_SINE;ENVELOPE;FOP_MULP")
regression_test(test_filter_stereo "VCO_SINE;ENVELOPE;FOP_MULP")
regression_test(test_filter_freqmod "VCO_SINE;ENVELOPE;FOP_MULP;SEND")
regression_test(test_filter_resmod "VCO_SINE;ENVELOPE;FOP_MULP;SEND")
regression_test(test_delay "ENVELOPE;FOP_MULP;PANNING;VCO_SINE")
regression_test(test_delay_stereo "ENVELOPE;FOP_MULP;PANNING;VCO_SINE")
regression_test(test_delay_notetracking "ENVELOPE;FOP_MULP;PANNING;VCO_NOISE")
regression_test(test_delay_reverb "ENVELOPE;FOP_MULP;PANNING;VCO_SINE")
regression_test(test_delay_feedbackmod "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;SEND")
regression_test(test_delay_pregainmod "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;SEND")
regression_test(test_delay_dampmod "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;SEND")
regression_test(test_delay_drymod "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;SEND")
regression_test(test_envelope_mod "VCO_SINE;ENVELOPE;SEND")
regression_test(test_envelope_16bit ENVELOPE "" test_envelope)
target_compile_definitions(test_envelope_16bit PUBLIC SU_USE_16BIT_OUTPUT)
regression_test(test_polyphony "ENVELOPE;VCO_SINE")