1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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)
}