82 lines
2.1 KiB
Odin
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})
|
|
} |