Harbor

branch main
showing the latest snapshot on main
shader_desc_test.odin 2.2 KB · Plain text
tests/render_ir/shader_desc_test.odin 0644 Raw
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)
}