comic/odin/tests/hardening_phase5.odin
2026-05-21 06:10:32 +02:00

59 lines
2.1 KiB
Odin

package tests
import "core:testing"
import "../src/core"
import "../src/ui"
@test
core_dispose_state_clears_collections :: proc(t: ^testing.T) {
state := core.new_initial_state()
sheet_urls_dyn: [dynamic]string
append(&sheet_urls_dyn, "x")
chars_dyn: [dynamic]core.Character
append(&chars_dyn, core.Character{name = "A", character_sheet_urls = sheet_urls_dyn[:]})
state.characters = chars_dyn[:]
state.panel_images = make(map[string]core.Panel_Image)
state.panel_images["p1"] = core.Panel_Image{url = "u"}
layout_panels_dyn: [dynamic]core.Page_Layout_Panel
append(&layout_panels_dyn, core.Page_Layout_Panel{panel_id = "p1"})
layouts_dyn: [dynamic]core.Page_Layout
append(&layouts_dyn, core.Page_Layout{panels = layout_panels_dyn[:]})
state.page_layouts = layouts_dyn[:]
state.speech_bubbles = make(map[string][]core.Speech_Bubble)
bubbles_dyn: [dynamic]core.Speech_Bubble
append(&bubbles_dyn, core.Speech_Bubble{id = "b1"})
state.speech_bubbles["p1"] = bubbles_dyn[:]
steps_dyn: [dynamic]core.Workflow_Step
append(&steps_dyn, core.Workflow_Step.Story_Input)
state.workflow.completed_steps = steps_dyn[:]
core.dispose_state(&state)
testing.expect(t, len(state.characters) == 0, "characters should be cleared")
testing.expect(t, len(state.panel_images) == 0, "panel_images should be cleared")
testing.expect(t, len(state.page_layouts) == 0, "page_layouts should be cleared")
testing.expect(t, len(state.speech_bubbles) == 0, "speech_bubbles should be cleared")
testing.expect(t, len(state.workflow.completed_steps) == 0, "completed_steps should be cleared")
}
@test
ui_dispose_controller_clears_jobs_and_state :: proc(t: ^testing.T) {
state := core.new_initial_state()
state.panel_images = make(map[string]core.Panel_Image)
state.panel_images["p1"] = core.Panel_Image{url = "u"}
controller := ui.new_controller(state)
_ = ui.submit_job(&controller.jobs, .Generate_Script, "job")
ui.dispose_controller(&controller)
testing.expect(t, len(controller.jobs.jobs) == 0, "jobs should be cleared")
testing.expect(t, len(controller.state.panel_images) == 0, "state maps should be cleared")
}