diff --git a/modules/ecs/auto-test/README.md b/modules/ecs/auto-test/README.md new file mode 100644 index 0000000..fad8362 --- /dev/null +++ b/modules/ecs/auto-test/README.md @@ -0,0 +1,3 @@ +# ECS Auto-Tests + +This folder contains the fully automated tests of the Voxula ECS. \ No newline at end of file diff --git a/modules/ecs/auto-test/inc-c/voxula/tests/ecs.h b/modules/ecs/auto-test/inc-c/voxula/tests/ecs.h new file mode 100644 index 0000000..20cfe27 --- /dev/null +++ b/modules/ecs/auto-test/inc-c/voxula/tests/ecs.h @@ -0,0 +1,11 @@ + +#ifndef VOXULA_ECS_AUTOMATIC_TEST_H +#define VOXULA_ECS_AUTOMATIC_TEST_H + +#include + +int main(int argc, char **argv); + +bool test_many_entities(); + +#endif // VOXULA_ECS_AUTOMATIC_TEST_H diff --git a/modules/ecs/auto-test/src-c/cases/many-entities.c b/modules/ecs/auto-test/src-c/cases/many-entities.c new file mode 100644 index 0000000..88d309c --- /dev/null +++ b/modules/ecs/auto-test/src-c/cases/many-entities.c @@ -0,0 +1,19 @@ +#include +#include + +bool test_many_entities() +{ + vecs_s *ecs = vecs_new(NULL); + uint32_t max_entities = 1024 * 1024; + vecs_entity_s *entities = malloc(max_entities * sizeof(vecs_entity_s)); + uint32_t num_entities = 0; + while(num_entities < max_entities) + { + entities[num_entities] = vecs_summon(ecs); + ++num_entities; + } + free(entities); + vecs_free(ecs); + + return true; +} diff --git a/modules/ecs/auto-test/src-c/main.c b/modules/ecs/auto-test/src-c/main.c new file mode 100644 index 0000000..58b172d --- /dev/null +++ b/modules/ecs/auto-test/src-c/main.c @@ -0,0 +1,7 @@ +#include +#include + +int main(int argc, char **argv) +{ + test_many_entities(NULL); +} diff --git a/modules/utility/auto-test/README.md b/modules/utility/auto-test/README.md new file mode 100644 index 0000000..f5d6f97 --- /dev/null +++ b/modules/utility/auto-test/README.md @@ -0,0 +1,4 @@ +# Utility Auto-Tests + +This folder contains the fully-automatic testing suite of the Voxula +Engine's utilites. \ No newline at end of file diff --git a/modules/utility/auto-test/inc-c/voxula/tests/utility.h b/modules/utility/auto-test/inc-c/voxula/tests/utility.h new file mode 100644 index 0000000..ceed647 --- /dev/null +++ b/modules/utility/auto-test/inc-c/voxula/tests/utility.h @@ -0,0 +1,11 @@ + +#ifndef VOXULA_UTILITY_AUTOMATIC_TETS_H +#define VOXULA_UTILITY_AUTOMATIC_TETS_H + +#include + +int main(int argc, char **argv); + +bool vx_test_case_force_continuation_creation(); + +#endif // VOXULA_UTILITY_AUTOMATIC_TETS_H diff --git a/modules/utility/auto-test/src-c/interaction/pool.c b/modules/utility/auto-test/src-c/interaction/pool.c new file mode 100644 index 0000000..7995bb3 --- /dev/null +++ b/modules/utility/auto-test/src-c/interaction/pool.c @@ -0,0 +1,27 @@ +#include +#include + +bool vx_test_case_jumping_pointer_web() +{ + +} + +bool vx_test_case_force_continuation_creation() +{ + uint32_t pool_capacity = 64; + vx_pool_s *pool = vx_new_pool(8, pool_capacity); + void **items = malloc(4 * pool_capacity * sizeof(void *)); + uint32_t item_index = 0; + while(item_index < (pool_capacity * 4)) + { + items[item_index] = vx_pool(pool); + ++item_index; + } + free(items); + return true; +} + +bool test_pool_interaction() +{ + vx_new_pool(8, 64); +} diff --git a/modules/utility/auto-test/src-c/main.c b/modules/utility/auto-test/src-c/main.c new file mode 100644 index 0000000..68d7e73 --- /dev/null +++ b/modules/utility/auto-test/src-c/main.c @@ -0,0 +1,9 @@ +#include + +int main(int argc, char **argv) +{ + if(vx_test_case_force_continuation_creation()) + { + puts("OK(utility/force-continuation-creation)"); + } +} diff --git a/scripts/auto-test.bash b/scripts/auto-test.bash new file mode 100644 index 0000000..80719ec --- /dev/null +++ b/scripts/auto-test.bash @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +cd $(dirname $0) +SCRIPT_PATH=$(pwd) +cd .. +PROJECT_PATH=$(pwd) + +function list_modules() { + MODULE_FOLDER=$1 + + MODULES=$(ls $MODULE_FOLDER) + for MODULE in $MODULES + do + if [[ -d "$MODULE_FOLDER/$MODULE/auto-test" ]]; + then + echo $MODULE + fi + done +} + +function list_sources() { + SOURCE_PATH=$1 + ENTRY_PATH=$(pwd) + + cd $SOURCE_PATH + SOURCES=$(find . -type f | grep ".c$") + for SOURCE in $SOURCES + do + echo $SOURCE_PATH/$(echo $SOURCE | cut -c 3-) + done + cd $ENTRY_PATH +} + +function make_include_statements() { + MODULE_NAME=$1 + + for INCLUDE_PATH in $(cat modules/$MODULE_NAME/includes.txt) + do + MODIFIED_PATH="${INCLUDE_PATH//"{module}"/"$PROJECT_PATH/modules/$MODULE_NAME"}" + MODIFIED_PATH="${MODIFIED_PATH//"{module-folder}"/"$PROJECT_PATH/modules"}" + echo "-I ${MODIFIED_PATH//"{dependencies}"/"$PROJECT_PATH/dependencies"}" + done +} + +MODULES=$(list_modules "modules/") +for MODULE in $MODULES +do + SOURCES=$(list_sources "modules/$MODULE/auto-test/src-c") + INCLUDE_STATEMENTS=$(make_include_statements $MODULE) + gcc -o $PROJECT_PATH/.build/test-$MODULE.elf \ + $SOURCES \ + .build/archives/*.a \ + -I "modules/$MODULE/auto-test/inc-c" \ + $INCLUDE_STATEMENTS + + ./.build/test-$MODULE.elf +done