55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <memory/reference.hpp>
 | |
| #include <ranges>
 | |
| #include <renderer/frontend/context/device.hpp>
 | |
| #include <renderer/frontend/context/surface.hpp>
 | |
| #include <renderer/test/utils.hpp>
 | |
| #include <surface/components.hpp>
 | |
| #include <surface/system.hpp>
 | |
| #include <test/test.hpp>
 | |
| 
 | |
| Suite raii = "device_raii"_suite = [] {
 | |
| 	Case { "happy path won't throw" } = [] {
 | |
| 		auto fixture = Fixture_SurfaceGpu {};
 | |
| 		std::ignore = lt::renderer::IDevice::create(
 | |
| 		    constants::api,
 | |
| 		    fixture.gpu(),
 | |
| 		    fixture.surface()
 | |
| 		);
 | |
| 	};
 | |
| 
 | |
| 	Case { "unhappy path throws" } = [] {
 | |
| 		auto fixture = Fixture_SurfaceGpu {};
 | |
| 
 | |
| 		expect_throw([&] {
 | |
| 			ignore = lt::renderer::IDevice::create(constants::api, nullptr, fixture.surface());
 | |
| 		});
 | |
| 
 | |
| 		expect_throw([&] {
 | |
| 			ignore = lt::renderer::IDevice::create(constants::api, fixture.gpu(), nullptr);
 | |
| 		});
 | |
| 
 | |
| 		expect_throw([&] {
 | |
| 			ignore = lt::renderer::IDevice::create(
 | |
| 			    lt::renderer::Api::none,
 | |
| 			    fixture.gpu(),
 | |
| 			    fixture.surface()
 | |
| 			);
 | |
| 		});
 | |
| 
 | |
| 		expect_throw([&] {
 | |
| 			ignore = lt::renderer::IDevice::create(
 | |
| 			    lt::renderer::Api::direct_x,
 | |
| 			    fixture.gpu(),
 | |
| 			    fixture.surface()
 | |
| 			);
 | |
| 		});
 | |
| 
 | |
| 		expect_throw([&] {
 | |
| 			ignore = lt::renderer::IDevice::create(
 | |
| 			    lt::renderer::Api::metal,
 | |
| 			    fixture.gpu(),
 | |
| 			    fixture.surface()
 | |
| 			);
 | |
| 		});
 | |
| 	};
 | |
| };
 |