414 lines
8.4 KiB
C
414 lines
8.4 KiB
C
#include <api.h>
|
|
#include <stdlib.h>
|
|
|
|
void Add_zero(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
ecs_add(world, e, 0);
|
|
}
|
|
|
|
void Add_component(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_add(world, e, Position);
|
|
test_assert(ecs_has(world, e, Position));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_component_again(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_add(world, e, Position);
|
|
test_assert(ecs_has(world, e, Position));
|
|
|
|
ecs_add(world, e, Position);
|
|
test_assert(ecs_has(world, e, Position));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_2_components(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
ECS_COMPONENT(world, Velocity);
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_add(world, e, Position);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(!ecs_has(world, e, Velocity));
|
|
|
|
ecs_add(world, e, Velocity);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_2_components_again(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
ECS_COMPONENT(world, Velocity);
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_add(world, e, Position);
|
|
ecs_add(world, e, Velocity);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
|
|
ecs_add(world, e, Position);
|
|
ecs_add(world, e, Velocity);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_2_components_overlap(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
ECS_COMPONENT(world, Velocity);
|
|
ECS_COMPONENT(world, Mass);
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_add(world, e, Position);
|
|
ecs_add(world, e, Velocity);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
test_assert(!ecs_has(world, e, Mass));
|
|
|
|
ecs_add(world, e, Velocity);
|
|
ecs_add(world, e, Mass);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
test_assert(ecs_has(world, e, Mass));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_component_to_nonempty(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
ECS_COMPONENT(world, Velocity);
|
|
|
|
ecs_entity_t e = ecs_new(world, Position);
|
|
test_assert(e != 0);
|
|
test_assert(ecs_has(world, e, Position));
|
|
|
|
ecs_add(world, e, Velocity);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_component_to_nonempty_again(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
|
|
ecs_entity_t e = ecs_new(world, Position);
|
|
test_assert(e != 0);
|
|
test_assert(ecs_has(world, e, Position));
|
|
|
|
ecs_add(world, e, Position);
|
|
test_assert(ecs_has(world, e, Position));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_component_to_nonempty_overlap(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
ECS_COMPONENT(world, Velocity);
|
|
|
|
ECS_ENTITY(world, e, Position, Velocity);
|
|
test_assert(e != 0);
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
|
|
ecs_add(world, e, Position);
|
|
|
|
test_assert(ecs_has(world, e, Position));
|
|
test_assert(ecs_has(world, e, Velocity));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_tag(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_ENTITY(world, Tag, 0);
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_add_id(world, e, Tag);
|
|
test_assert(ecs_has_id(world, e, Tag));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_add_entity(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_entity_t f = ecs_new(world, 0);
|
|
test_assert(f != 0);
|
|
|
|
ecs_add_id(world, e, f);
|
|
test_assert(ecs_has_id(world, e, f));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_remove_entity(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
ecs_entity_t f = ecs_new(world, 0);
|
|
test_assert(f != 0);
|
|
|
|
ecs_add_id(world, e, f);
|
|
test_assert(ecs_has_id(world, e, f));
|
|
|
|
ecs_remove_id(world, e, f);
|
|
test_assert(!ecs_has_id(world, e, f));
|
|
|
|
ecs_fini(world);
|
|
}
|
|
|
|
void Add_add_0_entity(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ecs_entity_t e = ecs_new(world, 0);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, 0);
|
|
}
|
|
|
|
void Add_remove_0_entity(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_COMPONENT(world, Position);
|
|
|
|
ecs_entity_t e = ecs_new(world, Position);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_remove_id(world, e, 0);
|
|
}
|
|
|
|
void Add_invalid_add_wildcard(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, EcsWildcard);
|
|
}
|
|
|
|
void Add_invalid_add_pair_w_wildcard(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(EcsWildcard, EcsWildcard));
|
|
}
|
|
|
|
void Add_invalid_add_pair_w_wildcard_rel(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(EcsWildcard, Tag));
|
|
}
|
|
|
|
void Add_invalid_add_pair_w_wildcard_obj(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(Tag, EcsWildcard));
|
|
}
|
|
|
|
void Add_invalid_add_any(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, EcsAny);
|
|
}
|
|
|
|
void Add_invalid_add_pair_w_any(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(EcsAny, EcsAny));
|
|
}
|
|
|
|
void Add_invalid_add_pair_w_any_rel(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(EcsAny, Tag));
|
|
}
|
|
|
|
void Add_invalid_add_pair_w_any_obj(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(Tag, EcsAny));
|
|
}
|
|
|
|
void Add_invalid_pair_w_0(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(0, 0));
|
|
}
|
|
|
|
void Add_invalid_pair_w_0_rel(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(0, Tag));
|
|
}
|
|
|
|
void Add_invalid_pair_w_0_obj(void) {
|
|
install_test_abort();
|
|
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
ECS_TAG(world, Tag);
|
|
|
|
ecs_entity_t e = ecs_new_id(world);
|
|
test_assert(e != 0);
|
|
|
|
test_expect_abort();
|
|
|
|
ecs_add_id(world, e, ecs_pair(Tag, 0));
|
|
}
|
|
|
|
void Add_add_random_id(void) {
|
|
ecs_world_t *world = ecs_mini();
|
|
|
|
for (int i = 0; i < 10; i ++) {
|
|
ecs_entity_t id = rand() % (100 * 1000) + 1000;
|
|
ecs_ensure(world, id);
|
|
test_assert(ecs_is_alive(world, id));
|
|
ecs_entity_t e = ecs_new_w_id(world, id);
|
|
test_assert(ecs_has_id(world, e, id));
|
|
}
|
|
|
|
ecs_fini(world);
|
|
}
|