Files
ecs/ecs_test.odin
2025-11-21 03:41:29 +01:00

82 lines
2.1 KiB
Odin

package ecs
import "core:container/queue"
import "core:testing"
@(test) create_world_test :: proc(t: ^testing.T) {
A :: struct { v: [3]u32 }
B :: struct { v: [3]u32 }
C :: struct { v: [3]u32 }
w, ok := create_world(
name = "World",
max_entities = 16,
components_to_register = { A, B, C, }
)
assert(ok)
defer destroy_world(w)
}
@(test) check_entity_id_queue_test :: proc(t: ^testing.T) {
A :: struct { v: [3]u32 }
B :: struct { v: [3]u32 }
C :: struct { v: [3]u32 }
MAX_ENTITIES :: 16
w, ok := create_world(
name = "World",
max_entities = MAX_ENTITIES,
components_to_register = { A, B, C, }
)
assert(ok)
defer destroy_world(w)
assert(queue.len(w.entity_id_queue) == MAX_ENTITIES)
}
@(test) create_entities_test :: proc(t: ^testing.T) {
A :: struct { v: [3]u32 }
B :: struct { v: [3]u32 }
C :: struct { v: [3]u32 }
w, ok := create_world(
name = "World",
max_entities = 1,
components_to_register = { A, B, C, }
)
assert(ok)
defer destroy_world(w)
// This entity should be OK.
e1, created_1 := create_entity(w)
assert(created_1)
assert(e1 != Invalid_Entity)
// This entity should NOT be OK (because 'max_entities' is 1).
e2, created_2 := create_entity(w)
assert(!created_2)
assert(e2 == Invalid_Entity)
}
@(test) add_component_test :: proc(t: ^testing.T) {
A :: struct { v: [3]u32 }
B :: struct { v: [3]u32 }
C :: struct { v: [3]u32 }
w, ok := create_world(
name = "World",
max_entities = 1,
components_to_register = { A, B, C, }
)
assert(ok)
defer destroy_world(w)
e, created := create_entity(w)
assert(created)
assert(e != Invalid_Entity)
added_component, component_added := add_component(e, w, A { v = { 1, 2, 3 } })
assert(component_added)
assert(added_component != nil)
assert(added_component.v == { 1, 2, 3})
}