From 44eb7c3c5fb2414b331c48e2c28ca934c4734577 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 19:30:33 +0000 Subject: [PATCH] Add unit tests for Framebuffer::setPixel Added tests/test_framebuffer.cpp to cover the setPixel method, checking: - Basic setting of pixels - Saturation/clamping logic - Fractional handling Registered test_framebuffer with CTest. --- CMakeLists.txt | 5 +++++ tests/test_framebuffer.cpp | 46 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 tests/test_framebuffer.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c6d40ce..b9c9939 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,11 @@ if(BUILD_TESTS) target_link_libraries(test_vec3 PRIVATE soft_render) add_test(NAME test_vec3 COMMAND test_vec3) + + add_executable(test_framebuffer tests/test_framebuffer.cpp) + target_link_libraries(test_framebuffer PRIVATE soft_render) + add_test(NAME test_framebuffer COMMAND test_framebuffer) + add_executable(tests tests/test_math.cpp) target_link_libraries(tests PRIVATE soft_render) add_test(NAME test_math COMMAND tests) diff --git a/tests/test_framebuffer.cpp b/tests/test_framebuffer.cpp new file mode 100644 index 0000000..3ca7324 --- /dev/null +++ b/tests/test_framebuffer.cpp @@ -0,0 +1,46 @@ +#include +#include +#include "soft_render/core/framebuffer.hpp" +#include "soft_render/math/vec3.hpp" + +using namespace sr::core; +using namespace sr::math; + +void test_framebuffer_setPixel() { + std::cout << "Running test_framebuffer_setPixel..." << std::endl; + + Framebuffer fb(10, 10); + + // Test 1: Basic setting + fb.setPixel(5, 5, Color(1.0f, 0.5f, 0.0f)); + const Pixel* pixels = fb.pixels(); + Pixel p = pixels[5 * 10 + 5]; + assert(p.r == 255); + assert(p.g == 127); + assert(p.b == 0); + assert(p.a == 255); + + // Test 2: Saturation logic (clamping <0 to 0 and >1 to 1) + fb.setPixel(0, 0, Color(-1.0f, 2.0f, 0.5f)); + Pixel p2 = pixels[0]; + assert(p2.r == 0); + assert(p2.g == 255); + assert(p2.b == 127); + assert(p2.a == 255); + + // Test 3: Fractional handling + fb.setPixel(9, 9, Color(0.25f, 0.75f, 1.0f)); + Pixel p3 = pixels[9 * 10 + 9]; + assert(p3.r == 63); + assert(p3.g == 191); + assert(p3.b == 255); + assert(p3.a == 255); + + std::cout << "test_framebuffer_setPixel passed!" << std::endl; +} + +int main() { + test_framebuffer_setPixel(); + std::cout << "All tests passed!" << std::endl; + return 0; +}