function(regression_test testname) if(${ARGC} LESS 2) set(source ${testname}) else() set(source ${ARGV1}) endif() add_executable(${testname} ${source}.asm test_renderer.c) add_test(${testname} ${testname}) target_compile_definitions(${testname} PUBLIC TEST_NAME="${testname}") set (rawinput ${CMAKE_CURRENT_SOURCE_DIR}/${testname}_expected.raw) set (rawoutput ${CMAKE_CURRENT_BINARY_DIR}/${testname}_expected.raw) add_custom_target(${testname}_rawcopy COMMAND ${CMAKE_COMMAND} -E copy_if_different ${rawinput} ${rawoutput} ) add_dependencies(${testname} ${testname}_rawcopy) endfunction(regression_test) regression_test(test_envelope) regression_test(test_load) regression_test(test_store) regression_test(test_globalstore) regression_test(test_panning) regression_test(test_multiple_instruments) regression_test(test_fop_pop) regression_test(test_fop_addp) regression_test(test_fop_mulp) regression_test(test_fop_push) regression_test(test_fop_xch) regression_test(test_fop_add) regression_test(test_fop_mul) regression_test(test_fop_addp2) regression_test(test_fop_mulp2) regression_test(test_fop_loadnote) regression_test(test_vco_sine) regression_test(test_vco_trisaw) regression_test(test_vco_noise) regression_test(test_vco_pulse) regression_test(test_vco_gate) regression_test(test_vco_stereo) regression_test(test_vco_lfo) regression_test(test_vco_tm_modulation) regression_test(test_vco_dm_modulation) regression_test(test_vco_fm_modulation) regression_test(test_vco_pm_modulation) regression_test(test_vco_cm_modulation) regression_test(test_vco_sm_modulation) regression_test(test_vco_gm_modulation) regression_test(test_envelope_16bit test_envelope) regression_test(test_envelope_modulation) target_compile_definitions(test_envelope_16bit PUBLIC GO4K_USE_16BIT_OUTPUT) set_tests_properties(test_envelope PROPERTIES FIXTURES_SETUP ENVELOPE) set_tests_properties(test_panning PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_multiple_instruments PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_vco_sine PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_vco_trisaw PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_vco_noise PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_vco_pulse PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_vco_gate PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_vco_stereo PROPERTIES FIXTURES_REQUIRED ENVELOPE) set_tests_properties(test_load PROPERTIES FIXTURES_SETUP LOAD) set_tests_properties(test_fop_pop PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_addp PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_mulp PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_push PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_xch PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_add PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_mul PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_addp2 PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_mulp2 PROPERTIES FIXTURES_REQUIRED LOAD) set_tests_properties(test_fop_pop PROPERTIES FIXTURES_SETUP FOP_POP) set_tests_properties(test_fop_push PROPERTIES FIXTURES_REQUIRED FOP_POP) set_tests_properties(test_vco_sine PROPERTIES FIXTURES_SETUP VCO_SINE) set_tests_properties(test_fop_mulp PROPERTIES FIXTURES_SETUP FOP_MULP) set_tests_properties(test_fop_push PROPERTIES FIXTURES_SETUP FOP_PUSH) set_tests_properties(test_store PROPERTIES FIXTURES_SETUP STORE) set_tests_properties(test_vco_tm_modulation PROPERTIES FIXTURES_REQUIRED "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") set_tests_properties(test_vco_dm_modulation PROPERTIES FIXTURES_REQUIRED "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") set_tests_properties(test_vco_fm_modulation PROPERTIES FIXTURES_REQUIRED "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") set_tests_properties(test_vco_pm_modulation PROPERTIES FIXTURES_REQUIRED "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") set_tests_properties(test_vco_sm_modulation PROPERTIES FIXTURES_REQUIRED "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") set_tests_properties(test_vco_gm_modulation PROPERTIES FIXTURES_REQUIRED "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE")