diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c4f8212..ed9d6f5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,15 +1,22 @@ -function(regression_test name) - add_executable(${name} ${name}.asm test_renderer.c) - add_test(${name} ${name}) +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}/${name}_expected.raw) - set (rawoutput ${CMAKE_CURRENT_BINARY_DIR}/${name}_expected.raw) + set (rawinput ${CMAKE_CURRENT_SOURCE_DIR}/${testname}_expected.raw) + set (rawoutput ${CMAKE_CURRENT_BINARY_DIR}/${testname}_expected.raw) - add_custom_target(${name}_rawcopy + add_custom_target(${testname}_rawcopy COMMAND ${CMAKE_COMMAND} -E copy_if_different ${rawinput} ${rawoutput} ) - add_dependencies(${name} ${name}_rawcopy) + add_dependencies(${testname} ${testname}_rawcopy) endfunction(regression_test) regression_test(test_envelope) @@ -32,6 +39,9 @@ regression_test(test_vco_noise) regression_test(test_vco_pulse) regression_test(test_vco_gate) regression_test(test_vco_stereo) +regression_test(test_envelope_16bit test_envelope) + +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) diff --git a/tests/test_envelope.asm b/tests/test_envelope.asm index 9f6d794..6fac247 100644 --- a/tests/test_envelope.asm +++ b/tests/test_envelope.asm @@ -642,9 +642,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_envelope', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_envelope_16bit_expected.raw b/tests/test_envelope_16bit_expected.raw new file mode 100644 index 0000000..67a0237 Binary files /dev/null and b/tests/test_envelope_16bit_expected.raw differ diff --git a/tests/test_fop_add.asm b/tests/test_fop_add.asm index 73e5778..d7d2e7f 100644 --- a/tests/test_fop_add.asm +++ b/tests/test_fop_add.asm @@ -644,9 +644,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_add', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_addp.asm b/tests/test_fop_addp.asm index dbe50ca..694efd7 100644 --- a/tests/test_fop_addp.asm +++ b/tests/test_fop_addp.asm @@ -650,9 +650,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_addp', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_addp2.asm b/tests/test_fop_addp2.asm index 0cb40fd..e631646 100644 --- a/tests/test_fop_addp2.asm +++ b/tests/test_fop_addp2.asm @@ -648,9 +648,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_addp2', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_loadnote.asm b/tests/test_fop_loadnote.asm index 88c2a42..aeeba16 100644 --- a/tests/test_fop_loadnote.asm +++ b/tests/test_fop_loadnote.asm @@ -642,9 +642,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_loadnote', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_mul.asm b/tests/test_fop_mul.asm index c417621..63c2404 100644 --- a/tests/test_fop_mul.asm +++ b/tests/test_fop_mul.asm @@ -644,9 +644,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_mul', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_mulp.asm b/tests/test_fop_mulp.asm index abc2430..137370b 100644 --- a/tests/test_fop_mulp.asm +++ b/tests/test_fop_mulp.asm @@ -650,9 +650,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_mulp', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_mulp2.asm b/tests/test_fop_mulp2.asm index 61976d8..9ab33b0 100644 --- a/tests/test_fop_mulp2.asm +++ b/tests/test_fop_mulp2.asm @@ -648,9 +648,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_mulp2', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_pop.asm b/tests/test_fop_pop.asm index 43121bf..4c77fc1 100644 --- a/tests/test_fop_pop.asm +++ b/tests/test_fop_pop.asm @@ -646,9 +646,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_pop', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_push.asm b/tests/test_fop_push.asm index 72f952b..2b6525d 100644 --- a/tests/test_fop_push.asm +++ b/tests/test_fop_push.asm @@ -646,9 +646,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_push', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_fop_xch.asm b/tests/test_fop_xch.asm index 2ad9ee6..64e2988 100644 --- a/tests/test_fop_xch.asm +++ b/tests/test_fop_xch.asm @@ -644,9 +644,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_fop_xch', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_load.asm b/tests/test_load.asm index d0d488f..a9977e3 100644 --- a/tests/test_load.asm +++ b/tests/test_load.asm @@ -642,9 +642,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_load', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_multiple_instruments.asm b/tests/test_multiple_instruments.asm index 33e7019..0a2a65b 100644 --- a/tests/test_multiple_instruments.asm +++ b/tests/test_multiple_instruments.asm @@ -654,9 +654,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_multiple_instruments', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_panning.asm b/tests/test_panning.asm index dcadc51..22cd547 100644 --- a/tests/test_panning.asm +++ b/tests/test_panning.asm @@ -642,9 +642,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_panning', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_renderer.c b/tests/test_renderer.c index 97a78c6..6c05c7d 100644 --- a/tests/test_renderer.c +++ b/tests/test_renderer.c @@ -3,17 +3,24 @@ extern void __stdcall _4klang_render(); extern int test_max_samples; -extern char test_name[]; int main(int argc, char* argv[]) { FILE* f; - float* buf; char filename[256]; int n; - float v; int retval; - + char test_name[] = TEST_NAME; +#ifndef GO4K_USE_16BIT_OUTPUT + float* buf; + float v; buf = (float*)malloc(test_max_samples * 2 * sizeof(float)); +#else + short* buf; + short v; + buf = (short*)malloc(test_max_samples * 2 * sizeof(short)); +#endif + + if (buf == NULL) { printf("Could not allocate buffer\n"); diff --git a/tests/test_vco_gate.asm b/tests/test_vco_gate.asm index 349b78d..7276c78 100644 --- a/tests/test_vco_gate.asm +++ b/tests/test_vco_gate.asm @@ -648,9 +648,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_vco_gate', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_vco_noise.asm b/tests/test_vco_noise.asm index 42964a0..fa08183 100644 --- a/tests/test_vco_noise.asm +++ b/tests/test_vco_noise.asm @@ -648,9 +648,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_vco_noise', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_vco_pulse.asm b/tests/test_vco_pulse.asm index 2c6a228..6e70f9e 100644 --- a/tests/test_vco_pulse.asm +++ b/tests/test_vco_pulse.asm @@ -648,9 +648,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_vco_pulse', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_vco_sine.asm b/tests/test_vco_sine.asm index 0c7b504..2fa2bd3 100644 --- a/tests/test_vco_sine.asm +++ b/tests/test_vco_sine.asm @@ -648,9 +648,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_vco_sine', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_vco_stereo.asm b/tests/test_vco_stereo.asm index d62250e..2b942c7 100644 --- a/tests/test_vco_stereo.asm +++ b/tests/test_vco_stereo.asm @@ -646,9 +646,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_vco_stereo', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES diff --git a/tests/test_vco_trisaw.asm b/tests/test_vco_trisaw.asm index c922a0b..9838a44 100644 --- a/tests/test_vco_trisaw.asm +++ b/tests/test_vco_trisaw.asm @@ -648,9 +648,6 @@ _go4k_delay_times section .data -global _test_name -_test_name db 'test_vco_trisaw', 0 ; null terminated string - global _test_max_samples _test_max_samples dd MAX_SAMPLES