diff --git a/engine/animation_test.odin b/engine/animation_test.odin index 5905890..40df1bc 100644 --- a/engine/animation_test.odin +++ b/engine/animation_test.odin @@ -74,13 +74,13 @@ character_clip_found_and_missing :: proc(t: ^testing.T) { defer destroy_test_character(&data) clip, ok := character_clip(&data, "idle") - testing.expect(t, ok) + testing.expect(t, ok, "character_clip should find idle") testing.expect_value(t, len(clip.frames), 3) - testing.expect(t, clip.loop) + testing.expect(t, clip.loop, "idle clip should loop") testing.expect_value(t, clip.fps, f32(10)) _, ok = character_clip(&data, "missing") - testing.expect(t, !ok) + testing.expect(t, !ok, "character_clip should miss unknown name") data.def.clips["empty"] = Clip_Def { loop = true, @@ -88,7 +88,7 @@ character_clip_found_and_missing :: proc(t: ^testing.T) { frames = nil, } _, ok = character_clip(&data, "empty") - testing.expect(t, !ok) + testing.expect(t, !ok, "character_clip should reject empty frames") } @(test) @@ -161,7 +161,7 @@ update_sprite_advances_multiple_frames :: proc(t: ^testing.T) { s := spawn_sprite(&data, {}, "idle", 0) update_sprite(&s, 0.25) testing.expect_value(t, s.frame, 2) - testing.expect(t, s.time > 0.049 && s.time < 0.051) + testing.expect(t, s.time > 0.049 && s.time < 0.051, "leftover time after multi-frame advance should be ~0.05") } @(test) diff --git a/engine/character_data_test.odin b/engine/character_data_test.odin index f682cd8..2661258 100644 --- a/engine/character_data_test.odin +++ b/engine/character_data_test.odin @@ -11,7 +11,7 @@ parse_char_def_happy_path :: proc(t: ^testing.T) { def, ok := parse_char_def(src) defer destroy_char_def(&def) - testing.expect(t, ok) + testing.expect(t, ok, "parse_char_def should succeed on valid JSON") testing.expect_value(t, def.id, "toad") testing.expect_value(t, def.atlas, "toad.atlas.png") testing.expect_value(t, def.version, 1) @@ -20,8 +20,8 @@ parse_char_def_happy_path :: proc(t: ^testing.T) { testing.expect_value(t, def.pivot[1], f32(1.0)) idle, found := def.clips["idle"] - testing.expect(t, found) - testing.expect(t, idle.loop) + testing.expect(t, found, "expected idle clip in parsed def") + testing.expect(t, idle.loop, "idle clip should loop") testing.expect_value(t, idle.fps, f32(8.0)) testing.expect_value(t, len(idle.frames), 1) testing.expect_value(t, idle.frames[0].rect, [4]int{1, 2, 3, 4}) @@ -30,7 +30,7 @@ parse_char_def_happy_path :: proc(t: ^testing.T) { @(test) parse_char_def_bad_json :: proc(t: ^testing.T) { _, ok := parse_char_def(transmute([]u8)string("{ not json")) - testing.expect(t, !ok) + testing.expect(t, !ok, "parse_char_def should fail on invalid JSON") } @(test) @@ -51,17 +51,17 @@ character_frame_rect_hit_and_miss :: proc(t: ^testing.T) { } rect, ok := character_frame_rect(&data, "idle", 1) - testing.expect(t, ok) + testing.expect(t, ok, "character_frame_rect should find idle frame 1") testing.expect_value(t, rect, [4]int{50, 60, 70, 80}) _, ok = character_frame_rect(&data, "missing", 0) - testing.expect(t, !ok) + testing.expect(t, !ok, "character_frame_rect should miss unknown clip") _, ok = character_frame_rect(&data, "idle", -1) - testing.expect(t, !ok) + testing.expect(t, !ok, "character_frame_rect should reject negative index") _, ok = character_frame_rect(&data, "idle", 2) - testing.expect(t, !ok) + testing.expect(t, !ok, "character_frame_rect should reject out-of-range index") } @(test) @@ -85,7 +85,7 @@ character_frame_returns_full_def :: proc(t: ^testing.T) { } frame, ok := character_frame(&data, "idle", 0) - testing.expect(t, ok) + testing.expect(t, ok, "character_frame should find idle frame 0") testing.expect_value(t, frame.rect, [4]int{10, 20, 30, 40}) testing.expect_value(t, frame.source_size, [2]int{100, 200}) testing.expect_value(t, frame.trim_offset, [2]int{5, 7}) @@ -94,7 +94,7 @@ character_frame_returns_full_def :: proc(t: ^testing.T) { @(test) character_frame_nil_and_bad_index :: proc(t: ^testing.T) { _, ok := character_frame(nil, "idle", 0) - testing.expect(t, !ok) + testing.expect(t, !ok, "character_frame should fail on nil data") data: Character_Data data.def.clips = make(map[string]Clip_Def) @@ -106,11 +106,11 @@ character_frame_nil_and_bad_index :: proc(t: ^testing.T) { data.def.clips["idle"] = Clip_Def{frames = frames} _, ok = character_frame(&data, "idle", -1) - testing.expect(t, !ok) + testing.expect(t, !ok, "character_frame should reject negative index") _, ok = character_frame(&data, "idle", 1) - testing.expect(t, !ok) + testing.expect(t, !ok, "character_frame should reject out-of-range index") _, ok = character_frame(&data, "missing", 0) - testing.expect(t, !ok) + testing.expect(t, !ok, "character_frame should miss unknown clip") } destroy_char_def :: proc(def: ^Char_Def) { diff --git a/engine/shader_backend_test.odin b/engine/shader_backend_test.odin index 69cb1fe..68ea4cf 100644 --- a/engine/shader_backend_test.odin +++ b/engine/shader_backend_test.odin @@ -21,7 +21,7 @@ shader_filenames_per_backend :: proc(t: ^testing.T) { @(test) choose_shader_runtime_prefers_msl :: proc(t: ^testing.T) { rt, ok := choose_shader_runtime_from_formats({.MSL, .SPIRV, .DXIL}) - testing.expect(t, ok) + testing.expect(t, ok, "should pick a runtime when MSL is available") testing.expect_value(t, rt.backend, Shader_Backend.Metal_MSL) testing.expect_value(t, rt.shader_dir, "shaders/metal") testing.expect_value(t, rt.format, sdl.GPUShaderFormat{.MSL}) @@ -30,7 +30,7 @@ choose_shader_runtime_prefers_msl :: proc(t: ^testing.T) { @(test) choose_shader_runtime_spirv_only :: proc(t: ^testing.T) { rt, ok := choose_shader_runtime_from_formats({.SPIRV}) - testing.expect(t, ok) + testing.expect(t, ok, "should pick SPIR-V when it is the only format") testing.expect_value(t, rt.backend, Shader_Backend.Vulkan_SPIRV) testing.expect_value(t, rt.shader_dir, "shaders/vulkan") testing.expect_value(t, rt.format, sdl.GPUShaderFormat{.SPIRV}) @@ -39,5 +39,5 @@ choose_shader_runtime_spirv_only :: proc(t: ^testing.T) { @(test) choose_shader_runtime_empty_fails :: proc(t: ^testing.T) { _, ok := choose_shader_runtime_from_formats({}) - testing.expect(t, !ok) + testing.expect(t, !ok, "empty format set should fail") } diff --git a/engine/sprite_test.odin b/engine/sprite_test.odin index ef697e7..fd00795 100644 --- a/engine/sprite_test.odin +++ b/engine/sprite_test.odin @@ -41,7 +41,7 @@ frame_uvs_unflipped :: proc(t: ^testing.T) { testing.expect_value(t, v0, f32(0.1)) testing.expect_value(t, u1, f32(0.4)) testing.expect_value(t, v1, f32(0.3)) - testing.expect(t, u0 < u1) + testing.expect(t, u0 < u1, "unflipped UVs should have u0 < u1") } @(test)