diff options
Diffstat (limited to 'src/tests/effect_test_helpers.h')
| -rw-r--r-- | src/tests/effect_test_helpers.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/tests/effect_test_helpers.h b/src/tests/effect_test_helpers.h new file mode 100644 index 0000000..d48daa7 --- /dev/null +++ b/src/tests/effect_test_helpers.h @@ -0,0 +1,54 @@ +// This file is part of the 64k demo project. +// It provides reusable test helpers for GPU effect testing. +// Includes lifecycle helpers, pixel validation, and smoke tests. + +#pragma once + +#include <cstdint> +#include <functional> +#include <vector> + +// Forward declarations +class Effect; +class MainSequence; + +// ============================================================================ +// Pixel Validation Helpers +// ============================================================================ + +// Validate pixels using a predicate function +// Returns true if at least one pixel matches the predicate +bool validate_pixels( + const std::vector<uint8_t>& pixels, + int width, + int height, + std::function<bool(uint8_t r, uint8_t g, uint8_t b, uint8_t a)> predicate); + +// Check if any pixel is non-black (rendered something) +bool has_rendered_content(const std::vector<uint8_t>& pixels, + int width, + int height); + +// Check if all pixels match a specific color (within tolerance) +bool all_pixels_match_color(const std::vector<uint8_t>& pixels, + int width, + int height, + uint8_t r, + uint8_t g, + uint8_t b, + uint8_t tolerance = 5); + +// Compute simple hash of pixel data (for deterministic output checks) +uint64_t hash_pixels(const std::vector<uint8_t>& pixels); + +// ============================================================================ +// Effect Lifecycle Helpers +// ============================================================================ + +// Test that an effect can be constructed and initialized +// Returns true if lifecycle succeeds, false otherwise +bool test_effect_lifecycle(Effect* effect, MainSequence* main_seq); + +// Test that an effect can render without crashing (smoke test) +// Does not validate output, only checks for crashes +bool test_effect_render_smoke(Effect* effect); |
