56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <memory/reference.hpp>
 | 
						|
#include <memory/scope.hpp>
 | 
						|
#include <ranges>
 | 
						|
#include <renderer/interface/context.hpp>
 | 
						|
#include <renderer/vk/context/context.hpp>
 | 
						|
#include <renderer/vk/context/surface.hpp>
 | 
						|
#include <renderer/vk/debug/messenger.hpp>
 | 
						|
#include <surface/components.hpp>
 | 
						|
#include <surface/system.hpp>
 | 
						|
#include <test/test.hpp>
 | 
						|
 | 
						|
using lt::renderer::API;
 | 
						|
using lt::renderer::IContext;
 | 
						|
using ::lt::test::Case;
 | 
						|
using ::lt::test::expect_eq;
 | 
						|
using ::lt::test::expect_false;
 | 
						|
using ::lt::test::expect_not_nullptr;
 | 
						|
using ::lt::test::expect_throw;
 | 
						|
using ::lt::test::expect_true;
 | 
						|
using ::lt::test::Suite;
 | 
						|
using ::std::ignore;
 | 
						|
 | 
						|
namespace constants {
 | 
						|
 | 
						|
constexpr auto resolution = lt::math::uvec2 { 800u, 600u };
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
class Fixture
 | 
						|
{
 | 
						|
public:
 | 
						|
	Fixture()
 | 
						|
	    : m_registry(lt::memory::create_ref<lt::ecs::Registry>())
 | 
						|
	    , m_surface_system(lt::memory::create_scope<lt::surface::System>(m_registry))
 | 
						|
	    , m_surface_entity(m_registry, m_registry->create_entity())
 | 
						|
	{
 | 
						|
	}
 | 
						|
 | 
						|
	auto get_surface_entity() -> lt::ecs::Entity
 | 
						|
	{
 | 
						|
		return m_surface_entity;
 | 
						|
	}
 | 
						|
 | 
						|
private:
 | 
						|
	lt::memory::Ref<lt::ecs::Registry> m_registry;
 | 
						|
	lt::memory::Scope<lt::surface::System> m_surface_system;
 | 
						|
	lt::ecs::Entity m_surface_entity;
 | 
						|
};
 | 
						|
 | 
						|
Suite raii = "context_raii"_suite = [] {
 | 
						|
	Case { "Happy path won't throw" } = [] {
 | 
						|
		auto fixture = Fixture {};
 | 
						|
		IContext::create(API::Vulkan, fixture.get_surface_entity());
 | 
						|
	};
 | 
						|
};
 |