Properly link flecs library
This commit is contained in:
150
engine/libs/flecs/test/addons/src/Tasks.c
Normal file
150
engine/libs/flecs/test/addons/src/Tasks.c
Normal file
@@ -0,0 +1,150 @@
|
||||
#include <addons.h>
|
||||
|
||||
void Task(ecs_iter_t *it) {
|
||||
probe_iter(it);
|
||||
}
|
||||
|
||||
void Tasks_no_components(void) {
|
||||
ecs_world_t *world = ecs_init();
|
||||
|
||||
ECS_SYSTEM(world, Task, EcsOnUpdate, 0);
|
||||
|
||||
Probe ctx = {0};
|
||||
ecs_set_ctx(world, &ctx, NULL);
|
||||
|
||||
ecs_progress(world, 1);
|
||||
|
||||
test_int(ctx.count, 0);
|
||||
test_int(ctx.invoked, 1);
|
||||
test_int(ctx.term_count, 0);
|
||||
|
||||
ecs_fini(world);
|
||||
}
|
||||
|
||||
void Tasks_one_tag(void) {
|
||||
ecs_world_t *world = ecs_init();
|
||||
|
||||
ECS_TAG(world, Foo);
|
||||
|
||||
ECS_SYSTEM(world, Task, EcsOnUpdate, Foo(Task));
|
||||
|
||||
Probe ctx = {0};
|
||||
ecs_set_ctx(world, &ctx, NULL);
|
||||
|
||||
ecs_progress(world, 1);
|
||||
|
||||
test_int(ctx.count, 0);
|
||||
test_int(ctx.invoked, 1);
|
||||
test_int(ctx.term_count, 1);
|
||||
test_int(ctx.c[0][0], Foo);
|
||||
|
||||
ecs_fini(world);
|
||||
}
|
||||
|
||||
void Tasks_from_system(void) {
|
||||
ecs_world_t *world = ecs_init();
|
||||
|
||||
ECS_COMPONENT(world, Position);
|
||||
|
||||
ECS_SYSTEM(world, Task, EcsOnUpdate, Position(Task));
|
||||
|
||||
Probe ctx = {0};
|
||||
ecs_set_ctx(world, &ctx, NULL);
|
||||
|
||||
ecs_progress(world, 1);
|
||||
|
||||
test_int(ctx.count, 0);
|
||||
test_int(ctx.invoked, 1);
|
||||
test_int(ctx.term_count, 1);
|
||||
test_int(ctx.c[0][0], ecs_id(Position));
|
||||
|
||||
ecs_fini(world);
|
||||
}
|
||||
|
||||
static int phase_counter = 0;
|
||||
|
||||
static
|
||||
void OnLoadTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 0);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
static
|
||||
void PostLoadTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 1);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
static
|
||||
void PreUpdateTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 2);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
static
|
||||
void OnUpdateTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 3);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
static
|
||||
void OnValidateTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 4);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
static
|
||||
void PostUpdateTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 5);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
static
|
||||
void PreStoreTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 6);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
static
|
||||
void OnStoreTask(ecs_iter_t *it) {
|
||||
test_assert(it->entities == NULL);
|
||||
test_int(it->count, 0);
|
||||
test_int(phase_counter, 7);
|
||||
phase_counter ++;
|
||||
}
|
||||
|
||||
void Tasks_tasks_in_phases(void) {
|
||||
ecs_world_t *world = ecs_init();
|
||||
|
||||
ECS_COMPONENT(world, Position);
|
||||
|
||||
ECS_SYSTEM(world, OnLoadTask, EcsOnLoad, Position());
|
||||
ECS_SYSTEM(world, PostLoadTask, EcsPostLoad, Position());
|
||||
ECS_SYSTEM(world, PreUpdateTask, EcsPreUpdate, Position());
|
||||
ECS_SYSTEM(world, OnUpdateTask, EcsOnUpdate, Position());
|
||||
ECS_SYSTEM(world, OnValidateTask, EcsOnValidate, Position());
|
||||
ECS_SYSTEM(world, PostUpdateTask, EcsPostUpdate, Position());
|
||||
ECS_SYSTEM(world, PreStoreTask, EcsPreStore, Position());
|
||||
ECS_SYSTEM(world, OnStoreTask, EcsOnStore, Position());
|
||||
|
||||
ecs_progress(world, 1);
|
||||
|
||||
test_int(phase_counter, 8);
|
||||
|
||||
ecs_fini(world);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user