diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index 0473078..5ef45e9 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -37,18 +37,18 @@ PRIVATE add_test_module(renderer test/utils.cpp - # system.test.cpp + system.test.cpp # general backend tests through the frontend - # frontend/messenger.test.cpp - # frontend/context/surface.test.cpp - # frontend/context/device.test.cpp - # frontend/context/swapchain.test.cpp - # frontend/renderer/pass.test.cpp + frontend/messenger.test.cpp + frontend/context/surface.test.cpp + frontend/context/device.test.cpp + frontend/context/swapchain.test.cpp + frontend/renderer/pass.test.cpp frontend/renderer/renderer.test.cpp # backend specific tests -- vk - # backend/vk/context/instance.test.cpp + backend/vk/context/instance.test.cpp # backend specific tests -- dx diff --git a/modules/renderer/private/frontend/renderer/renderer.test.cpp b/modules/renderer/private/frontend/renderer/renderer.test.cpp index ce2a5ff..2d6c0b6 100644 --- a/modules/renderer/private/frontend/renderer/renderer.test.cpp +++ b/modules/renderer/private/frontend/renderer/renderer.test.cpp @@ -5,92 +5,92 @@ Suite raii = "renderer_raii"_suite = [] { Case { "happy path won't throw" } = [] { auto fixture = FixtureDeviceSwapchain {}; - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // fixture.swapchain(), - // constants::frames_in_flight - // ); + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + fixture.swapchain(), + constants::frames_in_flight + ); }; - // Case { "unhappy path throws" } = [] { - // auto fixture = FixtureDeviceSwapchain {}; - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // nullptr, - // fixture.swapchain(), - // constants::frames_in_flight - // ); - // }); - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // nullptr, - // constants::frames_in_flight - // ); - // }); - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // nullptr, - // lt::renderer::IRenderer::frames_in_flight_upper_limit + 1 - // ); - // }); - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // nullptr, - // lt::renderer::IRenderer::frames_in_flight_lower_limit - 1 - // ); - // }); - // }; + Case { "unhappy path throws" } = [] { + auto fixture = FixtureDeviceSwapchain {}; + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + nullptr, + fixture.swapchain(), + constants::frames_in_flight + ); + }); + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + nullptr, + constants::frames_in_flight + ); + }); + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + nullptr, + lt::renderer::IRenderer::frames_in_flight_upper_limit + 1 + ); + }); + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + nullptr, + lt::renderer::IRenderer::frames_in_flight_lower_limit - 1 + ); + }); + }; }; Suite draw = "renderer_draw"_suite = [] { using enum lt::renderer::IRenderer::DrawResult; - // Case { "renderer draw" } = [] { - // auto fixture = FixtureDeviceSwapchain {}; - // auto renderer = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // fixture.swapchain(), - // constants::frames_in_flight - // ); - // - // for (auto frame_idx : std::views::iota(0u, 30u)) - // { - // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - // } - // }; - // - // Case { "post swapchain replacement renderer draw" } = [] { - // auto fixture = FixtureDeviceSwapchain {}; - // auto renderer = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // fixture.swapchain(), - // constants::frames_in_flight - // ); - // - // for (auto frame_idx : std::views::iota(0u, 15u)) - // { - // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - // } - // - // fixture.recreate_swapchain(); - // renderer->replace_swapchain(fixture.swapchain()); - // for (auto frame_idx : std::views::iota(0u, 15u)) - // { - // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - // } - // }; + Case { "renderer draw" } = [] { + auto fixture = FixtureDeviceSwapchain {}; + auto renderer = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + fixture.swapchain(), + constants::frames_in_flight + ); + + for (auto frame_idx : std::views::iota(0u, 30u)) + { + expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + } + }; + + Case { "post swapchain replacement renderer draw" } = [] { + auto fixture = FixtureDeviceSwapchain {}; + auto renderer = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + fixture.swapchain(), + constants::frames_in_flight + ); + + for (auto frame_idx : std::views::iota(0u, 15u)) + { + expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + } + + fixture.recreate_swapchain(); + renderer->replace_swapchain(fixture.swapchain()); + for (auto frame_idx : std::views::iota(0u, 15u)) + { + expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + } + }; }; diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index ad0856a..508967d 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -131,21 +131,21 @@ public: { return m_device.get(); } - // - // [[nodiscard]] auto swapchain() -> lt::renderer::ISwapchain * - // { - // return m_swapchain.get(); - // } + + [[nodiscard]] auto swapchain() -> lt::renderer::ISwapchain * + { + return m_swapchain.get(); + } void recreate_swapchain() { - // m_swapchain.reset(); - // m_swapchain = lt::renderer::ISwapchain::create( - // constants::api, - // surface(), - // gpu(), - // m_device.get() - // ); + m_swapchain.reset(); + m_swapchain = lt::renderer::ISwapchain::create( + constants::api, + surface(), + gpu(), + m_device.get() + ); } @@ -201,7 +201,7 @@ private: lt::memory::Scope m_device { lt::renderer::IDevice::create(constants::api, gpu(), surface()) }; - // + lt::memory::Scope m_swapchain { lt::renderer::ISwapchain::create(constants::api, surface(), gpu(), m_device.get()) };