summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/test_demo_effects.cc52
-rw-r--r--src/tests/test_noise_functions.cc28
-rw-r--r--src/tests/test_post_process_helper.cc31
3 files changed, 47 insertions, 64 deletions
diff --git a/src/tests/test_demo_effects.cc b/src/tests/test_demo_effects.cc
index 25ada59..d0163c2 100644
--- a/src/tests/test_demo_effects.cc
+++ b/src/tests/test_demo_effects.cc
@@ -6,21 +6,10 @@
// MAINTENANCE REQUIREMENT: When adding a new effect to demo_effects.h:
// 1. Add it to the appropriate test list (post_process_effects or
// scene_effects)
-// 2. Update EXPECTED_POST_PROCESS_COUNT or EXPECTED_SCENE_COUNT below
-// 3. Run test to verify: ./build/test_demo_effects
-// 4. If the effect requires Renderer3D, add it to requires_3d check in
+// 2. Run test to verify: ./build/test_demo_effects
+// 3. If the effect requires Renderer3D, add it to requires_3d check in
// test_scene_effects()
-// Expected effect counts - UPDATE THESE when adding new effects!
-static constexpr int EXPECTED_POST_PROCESS_COUNT =
- 8; // FlashEffect, PassthroughEffect, GaussianBlurEffect,
- // ChromaAberrationEffect, SolarizeEffect, FadeEffect,
- // ThemeModulationEffect, VignetteEffect
-static constexpr int EXPECTED_SCENE_COUNT =
- 8; // HeptagonEffect, ParticlesEffect, ParticleSprayEffect,
- // MovingEllipseEffect, FlashCubeEffect, Hybrid3DEffect,
- // CircleMaskEffect, RotatingCubeEffect
-
#include "effect_test_helpers.h"
#include "gpu/demo_effects.h"
#include "gpu/effect.h"
@@ -115,21 +104,6 @@ static void test_post_process_effects() {
fprintf(stdout, " ✓ %d/%zu post-process effects tested\n", passed,
effects.size());
-
- // Validation: Ensure test coverage matches expected count
- const int tested_count = static_cast<int>(effects.size());
- if (tested_count != EXPECTED_POST_PROCESS_COUNT) {
- fprintf(stderr,
- " ✗ COVERAGE ERROR: Expected %d post-process effects, but only "
- "tested %d!\n",
- EXPECTED_POST_PROCESS_COUNT, tested_count);
- fprintf(stderr,
- " ✗ Did you add a new post-process effect without updating the "
- "test?\n");
- fprintf(stderr,
- " ✗ Update EXPECTED_POST_PROCESS_COUNT in test_demo_effects.cc\n");
- assert(false && "Post-process effect count mismatch - update test!");
- }
}
// Test 2: Scene effects
@@ -156,7 +130,8 @@ static void test_scene_effects() {
{"FlashCubeEffect", std::make_shared<FlashCubeEffect>(fixture.ctx())},
{"Hybrid3DEffect", std::make_shared<Hybrid3DEffect>(fixture.ctx())},
{"CircleMaskEffect", std::make_shared<CircleMaskEffect>(fixture.ctx())},
- {"RotatingCubeEffect", std::make_shared<RotatingCubeEffect>(fixture.ctx())},
+ {"RotatingCubeEffect",
+ std::make_shared<RotatingCubeEffect>(fixture.ctx())},
};
int passed = 0;
@@ -166,7 +141,8 @@ static void test_scene_effects() {
assert(!effect->is_post_process() &&
"Scene effect should return false for is_post_process()");
- // FlashCubeEffect, Hybrid3DEffect, RotatingCubeEffect, and CircleMaskEffect require full 3D pipeline (Renderer3D) or auxiliary textures
+ // FlashCubeEffect, Hybrid3DEffect, RotatingCubeEffect, and CircleMaskEffect
+ // require full 3D pipeline (Renderer3D) or auxiliary textures
const bool requires_3d = (strcmp(name, "FlashCubeEffect") == 0 ||
strcmp(name, "Hybrid3DEffect") == 0 ||
strcmp(name, "RotatingCubeEffect") == 0 ||
@@ -182,20 +158,6 @@ static void test_scene_effects() {
fprintf(stdout, " ✓ %d/%zu scene effects tested (%d skipped)\n", passed,
effects.size(), skipped);
-
- // Validation: Ensure test coverage matches expected count
- const int tested_count = static_cast<int>(effects.size());
- if (tested_count != EXPECTED_SCENE_COUNT) {
- fprintf(
- stderr,
- " ✗ COVERAGE ERROR: Expected %d scene effects, but only tested %d!\n",
- EXPECTED_SCENE_COUNT, tested_count);
- fprintf(stderr,
- " ✗ Did you add a new scene effect without updating the test?\n");
- fprintf(stderr,
- " ✗ Update EXPECTED_SCENE_COUNT in test_demo_effects.cc\n");
- assert(false && "Scene effect count mismatch - update test!");
- }
}
// Test 3: Effect type classification
@@ -241,4 +203,4 @@ int main() {
fprintf(stdout, "=== All Demo Effects Tests Passed ===\n");
return 0;
-}
+} \ No newline at end of file
diff --git a/src/tests/test_noise_functions.cc b/src/tests/test_noise_functions.cc
index bdb42c9..f8dfc93 100644
--- a/src/tests/test_noise_functions.cc
+++ b/src/tests/test_noise_functions.cc
@@ -11,7 +11,8 @@
// Test that noise shader can be loaded and composed
static bool test_noise_shader_loading() {
- const char* noise_shader = (const char*)GetAsset(AssetId::ASSET_SHADER_MATH_NOISE);
+ const char* noise_shader =
+ (const char*)GetAsset(AssetId::ASSET_SHADER_MATH_NOISE);
if (!noise_shader) {
fprintf(stderr, "FAILED: Could not load noise shader asset\n");
return false;
@@ -19,17 +20,17 @@ static bool test_noise_shader_loading() {
// Check for key function signatures
const char* expected_funcs[] = {
- "fn hash_1f(x: f32) -> f32",
- "fn hash_2f(p: vec2<f32>) -> f32",
- "fn hash_3f(p: vec3<f32>) -> f32",
- "fn hash_2f_2f(p: vec2<f32>) -> vec2<f32>",
- "fn hash_3f_3f(p: vec3<f32>) -> vec3<f32>",
- "fn hash_1u(p: u32) -> f32",
- "fn noise_2d(p: vec2<f32>) -> f32",
- "fn noise_3d(p: vec3<f32>) -> f32",
- "fn gyroid(p: vec3<f32>) -> f32",
- "fn fbm_2d(p: vec2<f32>, octaves: i32) -> f32",
- "fn fbm_3d(p: vec3<f32>, octaves: i32) -> f32",
+ "fn hash_1f(x: f32) -> f32",
+ "fn hash_2f(p: vec2<f32>) -> f32",
+ "fn hash_3f(p: vec3<f32>) -> f32",
+ "fn hash_2f_2f(p: vec2<f32>) -> vec2<f32>",
+ "fn hash_3f_3f(p: vec3<f32>) -> vec3<f32>",
+ "fn hash_1u(p: u32) -> f32",
+ "fn noise_2d(p: vec2<f32>) -> f32",
+ "fn noise_3d(p: vec3<f32>) -> f32",
+ "fn gyroid(p: vec3<f32>) -> f32",
+ "fn fbm_2d(p: vec2<f32>, octaves: i32) -> f32",
+ "fn fbm_3d(p: vec3<f32>, octaves: i32) -> f32",
};
int func_count = sizeof(expected_funcs) / sizeof(expected_funcs[0]);
@@ -50,7 +51,8 @@ static bool test_noise_composition() {
// Debug: Check if noise asset can be loaded
size_t noise_size = 0;
- const char* noise_data = (const char*)GetAsset(AssetId::ASSET_SHADER_MATH_NOISE, &noise_size);
+ const char* noise_data =
+ (const char*)GetAsset(AssetId::ASSET_SHADER_MATH_NOISE, &noise_size);
if (!noise_data) {
fprintf(stderr, "FAILED: Could not load ASSET_SHADER_MATH_NOISE\n");
return false;
diff --git a/src/tests/test_post_process_helper.cc b/src/tests/test_post_process_helper.cc
index 7078c6e..36d193e 100644
--- a/src/tests/test_post_process_helper.cc
+++ b/src/tests/test_post_process_helper.cc
@@ -61,6 +61,7 @@ fn vs_main(@builtin(vertex_index) vid: u32) -> @builtin(position) vec4<f32> {
@group(0) @binding(0) var input_sampler: sampler;
@group(0) @binding(1) var input_texture: texture_2d<f32>;
@group(0) @binding(2) var<uniform> uniforms: vec4<f32>;
+@group(0) @binding(3) var<uniform> effect_params: vec4<f32>; // Dummy for testing
@fragment
fn fs_main(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
@@ -122,10 +123,15 @@ static void test_bind_group_creation() {
GpuBuffer uniforms = {uniform_buffer, 16};
+ // Dummy effect params buffer for testing (matches vec4<f32>)
+ WGPUBuffer dummy_params_buffer_handle =
+ wgpuDeviceCreateBuffer(fixture.device(), &uniform_desc);
+ GpuBuffer dummy_effect_params_buffer = {dummy_params_buffer_handle, 16};
+
// Test bind group creation
WGPUBindGroup bind_group = nullptr;
pp_update_bind_group(fixture.device(), pipeline, &bind_group, input_view,
- uniforms);
+ uniforms, dummy_effect_params_buffer);
assert(bind_group != nullptr && "Bind group should be created successfully");
fprintf(stdout, " ✓ Bind group created successfully\n");
@@ -135,6 +141,7 @@ static void test_bind_group_creation() {
wgpuTextureViewRelease(input_view);
wgpuTextureRelease(input_texture);
wgpuBufferRelease(uniform_buffer);
+ wgpuBufferRelease(dummy_params_buffer_handle);
wgpuRenderPipelineRelease(pipeline);
fprintf(stdout, " ✓ Resources released\n");
}
@@ -168,16 +175,21 @@ static void test_bind_group_update() {
wgpuDeviceCreateBuffer(fixture.device(), &uniform_desc);
GpuBuffer uniforms = {uniform_buffer, 16};
+ // Dummy effect params buffer for testing (matches vec4<f32>)
+ WGPUBuffer dummy_params_buffer_handle =
+ wgpuDeviceCreateBuffer(fixture.device(), &uniform_desc);
+ GpuBuffer dummy_effect_params_buffer = {dummy_params_buffer_handle, 16};
+
// Create initial bind group
WGPUBindGroup bind_group = nullptr;
- pp_update_bind_group(fixture.device(), pipeline, &bind_group, view1,
- uniforms);
+ pp_update_bind_group(fixture.device(), pipeline, &bind_group, view1, uniforms,
+ dummy_effect_params_buffer);
assert(bind_group != nullptr && "Initial bind group should be created");
fprintf(stdout, " ✓ Initial bind group created\n");
// Update bind group (should release old and create new)
- pp_update_bind_group(fixture.device(), pipeline, &bind_group, view2,
- uniforms);
+ pp_update_bind_group(fixture.device(), pipeline, &bind_group, view2, uniforms,
+ dummy_effect_params_buffer);
assert(bind_group != nullptr && "Updated bind group should be created");
fprintf(stdout, " ✓ Bind group updated successfully\n");
@@ -188,6 +200,7 @@ static void test_bind_group_update() {
wgpuTextureViewRelease(view2);
wgpuTextureRelease(texture2);
wgpuBufferRelease(uniform_buffer);
+ wgpuBufferRelease(dummy_params_buffer_handle);
wgpuRenderPipelineRelease(pipeline);
fprintf(stdout, " ✓ Resources released\n");
}
@@ -225,10 +238,15 @@ static void test_full_setup() {
wgpuDeviceCreateBuffer(fixture.device(), &uniform_desc);
GpuBuffer uniforms = {uniform_buffer, 16};
+ // Dummy effect params buffer for testing (matches vec4<f32>)
+ WGPUBuffer dummy_params_buffer_handle =
+ wgpuDeviceCreateBuffer(fixture.device(), &uniform_desc);
+ GpuBuffer dummy_effect_params_buffer = {dummy_params_buffer_handle, 16};
+
// Create bind group
WGPUBindGroup bind_group = nullptr;
pp_update_bind_group(fixture.device(), pipeline, &bind_group, input_view,
- uniforms);
+ uniforms, dummy_effect_params_buffer);
assert(bind_group != nullptr && "Bind group creation failed");
fprintf(stdout, " ✓ Pipeline and bind group ready\n");
@@ -269,6 +287,7 @@ static void test_full_setup() {
wgpuTextureViewRelease(input_view);
wgpuTextureRelease(input_texture);
wgpuBufferRelease(uniform_buffer);
+ wgpuBufferRelease(dummy_params_buffer_handle);
wgpuRenderPipelineRelease(pipeline);
fprintf(stdout, " ✓ Full setup test completed\n");