add all old corelib tests
This commit is contained in:
@@ -6,17 +6,31 @@ set(b_modules core object term cmd)
|
|||||||
set(b_system_name ${CMAKE_SYSTEM_NAME})
|
set(b_system_name ${CMAKE_SYSTEM_NAME})
|
||||||
string(TOLOWER ${b_system_name} b_system_name)
|
string(TOLOWER ${b_system_name} b_system_name)
|
||||||
|
|
||||||
|
message(STATUS "System name: ${b_system_name}")
|
||||||
|
|
||||||
foreach (module ${b_modules})
|
foreach (module ${b_modules})
|
||||||
add_subdirectory(${module})
|
add_subdirectory(${module})
|
||||||
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${module}-test)
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${module}-test)
|
||||||
message(STATUS "Building unit tests for module ${module}")
|
message(STATUS "Building unit tests for module ${module}")
|
||||||
|
|
||||||
add_executable(blue-${module}-test
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${module}-test/${module}-units.c)
|
||||||
${module}-test/${module}-test.c
|
add_executable(blue-${module}-units
|
||||||
misc/AllTests.c
|
${module}-test/${module}-units.c
|
||||||
misc/CuTest.c
|
misc/AllTests.c
|
||||||
misc/CuTest.h)
|
misc/CuTest.c
|
||||||
target_link_libraries(blue-${module}-test blue-${module})
|
misc/CuTest.h)
|
||||||
target_include_directories(blue-${module}-test PRIVATE misc/)
|
target_link_libraries(blue-${module}-units blue-${module})
|
||||||
|
target_include_directories(blue-${module}-units PRIVATE misc/)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
file(GLOB test_sources ${module}-test/*.c)
|
||||||
|
list(REMOVE_ITEM test_sources "${CMAKE_CURRENT_SOURCE_DIR}/${module}-test/${module}-units.c")
|
||||||
|
|
||||||
|
foreach (test_file ${test_sources})
|
||||||
|
get_filename_component(test_name ${test_file} NAME_WE)
|
||||||
|
add_executable(blue-${module}-${test_name} ${test_file})
|
||||||
|
|
||||||
|
target_link_libraries(blue-${module}-${test_name} blue-${module})
|
||||||
|
endforeach (test_file)
|
||||||
endif ()
|
endif ()
|
||||||
endforeach (module)
|
endforeach (module)
|
||||||
|
|||||||
39
core-test/randomise.c
Normal file
39
core-test/randomise.c
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
#include <blue/core/random.h>
|
||||||
|
#include <printf.h>
|
||||||
|
|
||||||
|
#define NRAND_NUMBERS 12
|
||||||
|
#define NRAND_BYTES 128
|
||||||
|
#define NRAND_DOUBLES 8
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
b_random_ctx random;
|
||||||
|
b_random_init(&random, B_RANDOM_SECURE | B_RANDOM_MT19937);
|
||||||
|
|
||||||
|
printf("generating %d random numbers:\n", NRAND_NUMBERS);
|
||||||
|
for (int i = 0; i < NRAND_NUMBERS; i++) {
|
||||||
|
unsigned long long v = b_random_next_int64(&random);
|
||||||
|
printf(" %llu\n", v);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\ngenerating %d random bytes:", NRAND_BYTES);
|
||||||
|
unsigned char bytes[16];
|
||||||
|
for (int i = 0; i < NRAND_BYTES; i++) {
|
||||||
|
if (i == 0 || (i % 16) == 0) {
|
||||||
|
printf("\n ");
|
||||||
|
b_random_next_bytes(&random, bytes, sizeof bytes);
|
||||||
|
} else if ((i % 4) == 0) {
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%02x", bytes[i % 16]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n\ngenerating %d random doubles:\n", NRAND_DOUBLES);
|
||||||
|
for (int i = 0; i < NRAND_DOUBLES; i++) {
|
||||||
|
double v = b_random_next_double(&random);
|
||||||
|
printf(" %lf\n", v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
19
object-test/arrays.c
Normal file
19
object-test/arrays.c
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#include <blue/object/array.h>
|
||||||
|
#include <blue/object/number.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
b_array *array = b_array_create();
|
||||||
|
b_array_append(array, B_RV_INT(32));
|
||||||
|
b_array_append(array, B_RV_INT(64));
|
||||||
|
b_array_append(array, B_RV_INT(128));
|
||||||
|
|
||||||
|
b_array_iterator it;
|
||||||
|
b_array_foreach(&it, array)
|
||||||
|
{
|
||||||
|
printf("object %p\n", it.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
10
object-test/numbers.c
Normal file
10
object-test/numbers.c
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#include <blue/object/number.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
b_number *number = b_number_create_float(6.8);
|
||||||
|
|
||||||
|
printf("number=%zd\n", B_NUMBER_IVAL(number));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
24
object-test/strings.c
Normal file
24
object-test/strings.c
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#include <blue/core/stringstream.h>
|
||||||
|
#include <blue/object/string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
b_string *str = b_string_create_from_cstr("Hello, world!\n");
|
||||||
|
b_string_insert_cstr(str, "WOW!", 4);
|
||||||
|
|
||||||
|
printf("%s\n", b_string_ptr(str));
|
||||||
|
|
||||||
|
b_string_release(str);
|
||||||
|
|
||||||
|
b_stringstream strv;
|
||||||
|
b_stringstream_begin_dynamic(&strv);
|
||||||
|
b_stringstream_add_many(&strv, "Hello", ", world", "!", NULL);
|
||||||
|
char *s = b_stringstream_end(&strv);
|
||||||
|
|
||||||
|
printf("%s\n", s);
|
||||||
|
free(s);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
116
object-test/trees.c
Normal file
116
object-test/trees.c
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
#include <blue/core/btree.h>
|
||||||
|
#include <blue/object/dict.h>
|
||||||
|
#include <blue/object/number.h>
|
||||||
|
#include <blue/object/tree.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define NITEMS 16
|
||||||
|
|
||||||
|
struct tree_item {
|
||||||
|
int value;
|
||||||
|
b_tree_node node;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct btree_item {
|
||||||
|
int value;
|
||||||
|
b_btree_node node;
|
||||||
|
};
|
||||||
|
|
||||||
|
B_BTREE_DEFINE_SIMPLE_GET(struct btree_item, int, node, value, get_node)
|
||||||
|
B_BTREE_DEFINE_SIMPLE_INSERT(struct btree_item, node, value, put_node)
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
b_dict_item items[]
|
||||||
|
= {B_DICT_ITEM("hello", B_RV_INT(32)),
|
||||||
|
B_DICT_ITEM("world", B_RV_INT(64)),
|
||||||
|
B_DICT_ITEM("more", B_RV_INT(128)),
|
||||||
|
B_DICT_ITEM("other", B_RV_INT(256)), B_DICT_ITEM_END};
|
||||||
|
|
||||||
|
b_dict *dict = b_dict_create_with_items(items);
|
||||||
|
|
||||||
|
b_dict_iterator it;
|
||||||
|
b_dict_foreach(&it, dict)
|
||||||
|
{
|
||||||
|
printf("item %zu: %s=%d\n", it.i, it.key,
|
||||||
|
b_number_get_int(B_NUMBER(it.value)));
|
||||||
|
}
|
||||||
|
|
||||||
|
b_tree *tree = b_tree_create();
|
||||||
|
struct tree_item items2[NITEMS];
|
||||||
|
|
||||||
|
for (int i = 0; i < NITEMS; i++) {
|
||||||
|
items2[i].value = i;
|
||||||
|
items2[i].node = B_TREE_NODE_INIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
b_tree_set_root(tree, &items2[0].node);
|
||||||
|
|
||||||
|
b_tree_node_add_child(&items2[0].node, &items2[1].node);
|
||||||
|
b_tree_node_add_child(&items2[0].node, &items2[2].node);
|
||||||
|
b_tree_node_add_child(&items2[0].node, &items2[3].node);
|
||||||
|
b_tree_node_add_child(&items2[0].node, &items2[7].node);
|
||||||
|
b_tree_node_add_child(&items2[1].node, &items2[4].node);
|
||||||
|
b_tree_node_add_child(&items2[1].node, &items2[5].node);
|
||||||
|
b_tree_node_add_child(&items2[4].node, &items2[6].node);
|
||||||
|
|
||||||
|
b_tree_iterator it2;
|
||||||
|
b_tree_foreach(&it2, tree)
|
||||||
|
{
|
||||||
|
struct tree_item *item = b_unbox(struct tree_item, it2.node, node);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < it2.depth; i++) {
|
||||||
|
fputs(" ", stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%u\n", item->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
b_btree btree = {};
|
||||||
|
struct btree_item items3[NITEMS] = {};
|
||||||
|
for (int i = 0; i < NITEMS; i++) {
|
||||||
|
items3[i].value = i;
|
||||||
|
put_node(&btree, &items3[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n\n");
|
||||||
|
|
||||||
|
b_btree_iterator it3;
|
||||||
|
b_btree_foreach (&it3, &btree) {
|
||||||
|
struct btree_item *item
|
||||||
|
= b_unbox(struct btree_item, it3.node, node);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < it3.depth; i++) {
|
||||||
|
fputs(" ", stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d\n", item->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
b_btree_iterator_begin(&btree, &it3);
|
||||||
|
while (b_btree_iterator_is_valid(&it3)) {
|
||||||
|
struct btree_item *item
|
||||||
|
= b_unbox(struct btree_item, it3.node, node);
|
||||||
|
|
||||||
|
if (item->value == 9) {
|
||||||
|
b_btree_iterator_erase(&it3);
|
||||||
|
} else {
|
||||||
|
b_btree_iterator_next(&it3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n\n");
|
||||||
|
|
||||||
|
b_btree_foreach (&it3, &btree) {
|
||||||
|
struct btree_item *item
|
||||||
|
= b_unbox(struct btree_item, it3.node, node);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < it3.depth; i++) {
|
||||||
|
fputs(" ", stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d\n", item->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
12
object-test/uuids.c
Normal file
12
object-test/uuids.c
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#include <blue/object/uuid.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
b_uuid *uuid = b_uuid_create_from_cstr(
|
||||||
|
"5b80ad1f-367f-4a1f-88f3-b3a6f8d1f63d");
|
||||||
|
char str[B_UUID_STRING_MAX];
|
||||||
|
b_uuid_to_cstr(uuid, str);
|
||||||
|
printf("%s\n", str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user