function(regression_test testname) if(${ARGC} LESS 4) set(source ${testname}) else() set(source ${ARGV3}) 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}/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_out_aux ENVELOPE) regression_test(test_load "" LOAD) regression_test(test_store "" STORE) regression_test(test_globalstore) regression_test(test_panning ENVELOPE PANNING) regression_test(test_multiple_instruments ENVELOPE) regression_test(test_fop_pop LOAD FOP_POP) regression_test(test_fop_addp LOAD) regression_test(test_fop_mulp LOAD FOP_MULP) regression_test(test_fop_push "LOAD;FOP_POP" FOP_PUSH) regression_test(test_fop_xch LOAD) regression_test(test_fop_add LOAD) regression_test(test_fop_mul LOAD) regression_test(test_fop_addp2 LOAD) regression_test(test_fop_mulp2 LOAD FOP_MULP2) regression_test(test_fop_loadnote) regression_test(test_vco_sine ENVELOPE VCO_SINE) regression_test(test_vco_trisaw ENVELOPE) regression_test(test_vco_noise ENVELOPE VCO_NOISE) regression_test(test_vco_pulse ENVELOPE VCO_PULSE) regression_test(test_vco_gate ENVELOPE) regression_test(test_vco_stereo ENVELOPE) regression_test(test_vco_lfo "ENVELOPE;VCO_SINE;VCO_PULSE;FOP_MULP2") regression_test(test_vco_tm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") regression_test(test_vco_dm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") regression_test(test_vco_fm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") regression_test(test_vco_pm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") regression_test(test_vco_cm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") regression_test(test_vco_sm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") regression_test(test_vco_gm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;STORE") regression_test(test_dst ENVELOPE) regression_test(test_dst_modulation "VCO_SINE;ENVELOPE;STORE") regression_test(test_dst_sh ENVELOPE) regression_test(test_dst_sh_modulation "VCO_SINE;ENVELOPE;STORE") regression_test(test_dst_stereo ENVELOPE) regression_test(test_vcf_band "VCO_SINE;ENVELOPE;FOP_MULP") regression_test(test_vcf_low "VCO_SINE;ENVELOPE;FOP_MULP") regression_test(test_vcf_high "VCO_SINE;ENVELOPE;FOP_MULP") regression_test(test_vcf_peak "VCO_SINE;ENVELOPE;FOP_MULP") regression_test(test_vcf_stereo "VCO_SINE;ENVELOPE;FOP_MULP") regression_test(test_vcf_fm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;STORE") regression_test(test_vcf_rm_modulation "VCO_SINE;ENVELOPE;FOP_MULP;STORE") regression_test(test_dll "ENVELOPE;FOP_MULP;PANNING;VCO_SINE") regression_test(test_dll_chorus "ENVELOPE;FOP_MULP;PANNING;VCO_SINE") regression_test(test_dll_notetracking "ENVELOPE;FOP_MULP;PANNING;VCO_NOISE") regression_test(test_dll_reverb "ENVELOPE;FOP_MULP;PANNING;VCO_SINE") regression_test(test_dll_am_modulation "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;STORE") regression_test(test_dll_fm_modulation "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;STORE") regression_test(test_dll_pm_modulation "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;STORE") regression_test(test_dll_sm_modulation "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;STORE") regression_test(test_dll_dm_modulation "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;STORE") regression_test(test_dll_im_modulation "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;STORE") regression_test(test_envelope_modulation "VCO_SINE;ENVELOPE;STORE") regression_test(test_envelope_16bit ENVELOPE "" test_envelope) target_compile_definitions(test_envelope_16bit PUBLIC GO4K_USE_16BIT_OUTPUT) regression_test(test_polyphony "ENVELOPE;VCO_SINE")