summaryrefslogtreecommitdiff
path: root/src/tests/test_spectool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/test_spectool.cpp')
-rw-r--r--src/tests/test_spectool.cpp91
1 files changed, 0 insertions, 91 deletions
diff --git a/src/tests/test_spectool.cpp b/src/tests/test_spectool.cpp
deleted file mode 100644
index ae64cc3..0000000
--- a/src/tests/test_spectool.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include <stdio.h>
-#include <assert.h>
-#include <stdlib.h> // For system()
-#include <vector>
-#include <math.h>
-#include "miniaudio.h"
-#include "audio/dct.h" // For DCT_SIZE
-
-// Re-defining the header here to avoid dependency on the tool's source
-struct SpecHeader {
- char magic[4];
- int32_t version;
- int32_t dct_size;
- int32_t num_frames;
-};
-
-#define TEST_SAMPLE_RATE 32000
-#define TEST_DURATION_SECONDS 1
-#define TEST_FREQ 440.0f
-#define PI 3.14159265f
-
-int main() {
- printf("Running spectool end-to-end test...\n");
-
- const char* wav_path = "test_signal.wav";
- const char* spec_path = "test_signal.spec";
- const char* spectool_path = "./spectool"; // Assumes ctest is run from `build` dir
-
- // 1. Generate and save a WAV file
- ma_encoder_config enc_config = ma_encoder_config_init(ma_encoding_format_wav, ma_format_f32, 1, TEST_SAMPLE_RATE);
- ma_encoder encoder;
- if (ma_encoder_init_file(wav_path, &enc_config, &encoder) != MA_SUCCESS) {
- printf("TEST FAILED: Could not initialize WAV encoder.\n");
- return 1;
- }
-
- std::vector<float> pcm_data(TEST_SAMPLE_RATE * TEST_DURATION_SECONDS);
- for (size_t i = 0; i < pcm_data.size(); ++i) {
- pcm_data[i] = 0.5f * sinf(2.0f * PI * TEST_FREQ * i / TEST_SAMPLE_RATE);
- }
- ma_uint64 frames_written;
- ma_encoder_write_pcm_frames(&encoder, pcm_data.data(), pcm_data.size(), &frames_written);
- ma_encoder_uninit(&encoder);
- printf(" Generated %s\n", wav_path);
-
- // 2. Run spectool analyze
- char command[512];
- snprintf(command, sizeof(command), "%s analyze %s %s", spectool_path, wav_path, spec_path);
- printf(" Executing: %s\n", command);
- int return_code = system(command);
- assert(return_code == 0);
- printf(" spectool executed successfully.\n");
-
- // 3. Verify the output .spec file
- FILE* f_spec = fopen(spec_path, "rb");
- assert(f_spec != NULL);
-
- SpecHeader header;
- fread(&header, sizeof(SpecHeader), 1, f_spec);
- assert(strncmp(header.magic, "SPEC", 4) == 0);
- assert(header.version == 1);
- assert(header.dct_size == DCT_SIZE);
-
- int expected_frames = (TEST_SAMPLE_RATE * TEST_DURATION_SECONDS) / DCT_SIZE;
- if ((TEST_SAMPLE_RATE * TEST_DURATION_SECONDS) % DCT_SIZE != 0) {
- expected_frames++;
- }
- assert(header.num_frames == expected_frames);
-
- printf(" .spec header verified.\n");
-
- // Just check that we have some non-zero data
- std::vector<float> spec_data(header.num_frames * header.dct_size);
- fread(spec_data.data(), sizeof(float), spec_data.size(), f_spec);
- fclose(f_spec);
-
- double total_energy = 0.0;
- for(float val : spec_data) {
- total_energy += fabs(val);
- }
- assert(total_energy > 0.0);
- printf(" .spec data seems valid.\n");
-
- // 4. Cleanup
- remove(wav_path);
- remove(spec_path);
- printf(" Cleaned up temporary files.\n");
-
- printf("...spectool test PASSED!\n");
- return 0;
-}