// 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 #include #include // 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& pixels, int width, int height, std::function predicate); // Check if any pixel is non-black (rendered something) bool has_rendered_content(const std::vector& pixels, int width, int height); // Check if all pixels match a specific color (within tolerance) bool all_pixels_match_color(const std::vector& 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& 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);