summaryrefslogtreecommitdiff
path: root/src/tests/effect_test_helpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/effect_test_helpers.h')
-rw-r--r--src/tests/effect_test_helpers.h54
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);