diff options
Diffstat (limited to 'src/tests/test_window.cc')
| -rw-r--r-- | src/tests/test_window.cc | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/src/tests/test_window.cc b/src/tests/test_window.cc index e23d97c..1d2d76f 100644 --- a/src/tests/test_window.cc +++ b/src/tests/test_window.cc @@ -1,36 +1,28 @@ +// This file is part of the 64k demo project. +// It validates the mathematical properties of the Hamming window. +// Ensures the window peaks at the center and has correct symmetry. + #include "audio/window.h" #include <assert.h> #include <math.h> #include <stdio.h> -// A simple floating point comparison with a tolerance -bool is_close(float a, float b, float epsilon = 1e-6f) { - return fabsf(a - b) < epsilon; -} - int main() { + printf("Running HammingWindow tests...\n"); + float window[WINDOW_SIZE]; hamming_window_512(window); - // Test 1: Window should start and end at the same small value - assert(is_close(window[0], 0.08f)); - assert(is_close(window[WINDOW_SIZE - 1], 0.08f)); - printf("Test 1 passed: Window start and end values are correct.\n"); - - // Test 2: Window should be symmetric + // Check symmetry for (int i = 0; i < WINDOW_SIZE / 2; ++i) { - assert(is_close(window[i], window[WINDOW_SIZE - 1 - i])); + assert(fabsf(window[i] - window[WINDOW_SIZE - 1 - i]) < 1e-6f); } - printf("Test 2 passed: Window is symmetric.\n"); - - // Test 3: The two middle points of the even-sized window should be equal and - // the peak. - assert(is_close(window[WINDOW_SIZE / 2 - 1], window[WINDOW_SIZE / 2])); - assert(window[WINDOW_SIZE / 2] > - window[WINDOW_SIZE / 2 - 2]); // Should be greater than neighbors - printf("Test 3 passed: Window peak is correct for even size.\n"); - printf("All tests passed for Hamming window!\n"); + // Check peak (should be at the center for even size, it's actually split + // between 255 and 256) + assert(window[255] > 0.99f); + assert(window[256] > 0.99f); + printf("HammingWindow tests PASSED\n"); return 0; -} +}
\ No newline at end of file |
