package render_ir_tests import ir "../../render_ir" import "core:testing" @(test) test_add_shader_source_and_file :: proc(t: ^testing.T) { frame := ir.init_frame_ir() defer ir.destroy_frame_ir(&frame) source := ir.add_shader_source(&frame, "rect.vert", .Vertex, "vertex main() {}") file := ir.add_shader_file(&frame, "rect.frag", .Fragment, "shaders/rect.frag.luma") testing.expect(t, ir.INVALID_SHADER == ir.Shader_Handle(0)) testing.expect(t, source == ir.Shader_Handle(1)) testing.expect(t, file == ir.Shader_Handle(2)) testing.expect_value(t, ir.shader_count(&frame), 2) source_desc, source_ok := ir.get_shader(&frame, source) testing.expect(t, source_ok) testing.expect(t, source_desc.stage == .Vertex) testing.expect(t, source_desc.source_kind == .Source) testing.expect(t, source_desc.language == .Luma) testing.expect_value(t, source_desc.name, "rect.vert") testing.expect_value(t, source_desc.source, "vertex main() {}") file_desc, file_ok := ir.get_shader(&frame, file) testing.expect(t, file_ok) testing.expect(t, file_desc.stage == .Fragment) testing.expect(t, file_desc.source_kind == .File) testing.expect(t, file_desc.language == .Luma) testing.expect_value(t, file_desc.name, "rect.frag") testing.expect_value(t, file_desc.path, "shaders/rect.frag.luma") } @(test) test_get_shader_rejects_invalid_handles :: proc(t: ^testing.T) { frame := ir.init_frame_ir() defer ir.destroy_frame_ir(&frame) handle := ir.add_shader_source(&frame, "compute", .Compute, "compute main() {}") _, invalid_ok := ir.get_shader(&frame, ir.INVALID_SHADER) testing.expect(t, !invalid_ok) desc, valid_ok := ir.get_shader(&frame, handle) testing.expect(t, valid_ok) testing.expect(t, desc.stage == .Compute) _, past_ok := ir.get_shader(&frame, ir.Shader_Handle(2)) testing.expect(t, !past_ok) } @(test) test_reset_and_destroy_clear_shaders :: proc(t: ^testing.T) { frame := ir.init_frame_ir() _ = ir.add_shader_source(&frame, "rect.vert", .Vertex, "vertex main() {}") ir.reset_frame_ir(&frame) testing.expect_value(t, ir.shader_count(&frame), 0) _ = ir.add_shader_file(&frame, "rect.frag", .Fragment, "shaders/rect.frag.luma") ir.destroy_frame_ir(&frame) testing.expect_value(t, ir.shader_count(&frame), 0) }