From 8dd77545b5ec2f45ce46b98dd7d94a3c4a13e290 Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 14 Feb 2026 02:39:49 +0100 Subject: Factor common test patterns into reusable utilities Refactor duplicated test setup/teardown code into shared fixtures: - test_math_helpers.h: Float comparison (test_near, test_near_vec3) - AudioTestFixture: RAII wrapper for AudioEngine lifecycle - EffectTestFixture: Combined WebGPU + AudioEngine + MainSequence Migrated 9 test files (3 math, 6 audio) to use fixtures. Net reduction: 54 LOC (178 insertions, 232 deletions). All 34 tests passing. Co-Authored-By: Claude Sonnet 4.5 --- src/tests/common/effect_test_fixture.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/tests/common/effect_test_fixture.h (limited to 'src/tests/common/effect_test_fixture.h') diff --git a/src/tests/common/effect_test_fixture.h b/src/tests/common/effect_test_fixture.h new file mode 100644 index 0000000..399b5ed --- /dev/null +++ b/src/tests/common/effect_test_fixture.h @@ -0,0 +1,28 @@ +// effect_test_fixture.h - Combined WebGPU + AudioEngine + MainSequence fixture +// Simplifies GPU effect test setup + +#pragma once +#include "webgpu_test_fixture.h" +#include "audio_test_fixture.h" +#include "gpu/sequence.h" + +// Combined WebGPU + AudioEngine + MainSequence fixture +class EffectTestFixture { +public: + EffectTestFixture(); + ~EffectTestFixture(); + + // Returns false if GPU unavailable (test should skip) + bool init(); + + // Accessors + GpuContext ctx() const { return m_gpu.ctx(); } + MainSequence& sequence() { return m_sequence; } + AudioEngine& audio() { return m_audio.engine(); } + +private: + WebGPUTestFixture m_gpu; + AudioTestFixture m_audio; + MainSequence m_sequence; + bool m_initialized = false; +}; -- cgit v1.2.3