diff --git a/src/core/core_test_entry.c b/src/core/core_test_entry.c new file mode 100644 index 0000000..52a17a2 --- /dev/null +++ b/src/core/core_test_entry.c @@ -0,0 +1,115 @@ +#include "core/core_inc.h" +#include "core/core_inc.c" + +void test_s8(void) { + ma_arena_t *arena = ma_create(ma_default_reserve_size); + + { + ma_temp_t temp = ma_begin_temp(arena); + sb8_t *sb = &(sb8_t){arena}; + + s8_t memes = s8_lit("memes"); + sb8_printf(sb, "%S", memes); + assert(sb->first == sb->last); + assert(sb->first->len == 5); + assert(s8_equal(sb->first->string, memes)); + + sb8_printf(sb, "%S", s8_lit("things are going fine")); + s8_t string = sb8_merge(sb); + assert(s8_equal(string, s8_lit("memesthings are going fine"))); + + ma_end_temp(temp); + } + + { + s8_t str = s8_lit("thing|another|"); + sb8_t sb = s8_split(arena, str, s8_lit("|"), s8_split_none); + + assert(s8_equal(sb.first->string, s8_lit("thing"))); + assert(s8_equal(sb.first->next->string, s8_lit("another"))); + assert(sb.first->next->next == NULL); + } + + { + s8_t str = s8_lit("thing|another|"); + sb8_t sb = s8_split(arena, str, s8_lit("|"), s8_split_inclusive); + + assert(s8_equal(sb.first->string, s8_lit("thing"))); + assert(s8_equal(sb.first->next->string, s8_lit("|"))); + assert(s8_equal(sb.first->next->next->string, s8_lit("another"))); + assert(s8_equal(sb.first->next->next->next->string, s8_lit("|"))); + assert(sb.first->next->next->next->next == NULL); + } + + { + s8_t str = s8_lit("aabaaBaa"); + sb8_t sb = s8_split(arena, str, s8_lit("b"), s8_split_inclusive | s8_split_ignore_case); + + assert(s8_equal(sb.first->string, s8_lit("aa"))); + assert(s8_equal(sb.first->next->string, s8_lit("b"))); + assert(s8_equal(sb.first->next->next->string, s8_lit("aa"))); + assert(s8_equal(sb.first->next->next->next->string, s8_lit("B"))); + assert(s8_equal(sb.first->next->next->next->next->string, s8_lit("aa"))); + assert(sb.first->next->next->next->next->next == NULL); + } + + { + s8_t str = s8_lit("aabaaBaa"); + sb8_t sb = s8_split(arena, str, s8_lit("b"), s8_split_inclusive); + + assert(s8_equal(sb.first->string, s8_lit("aa"))); + assert(s8_equal(sb.first->next->string, s8_lit("b"))); + assert(s8_equal(sb.first->next->next->string, s8_lit("aaBaa"))); + } + + { + s8_t s = s8_lit("0123456789"); + assert(s8_equal(s8_slice(s, 0, 4), s8_lit("0123"))); + assert(s8_equal(s8_slice(s, -2, -1), s8_lit("89"))); + assert(s8_equal(s8_slice(s, -2, 10), s8_lit("89"))); + assert(s8_equal(s8_slice(s, 8, 10), s8_lit("89"))); + } + + { + s8_t s = s8_lit(" a \n"); + s = s8_trim(s); + assert(s8_equal(s, s8_lit("a"))); + } + + { + s8_t s = s8_lit("C:/memes/the_thing.c"); + s8_t ss = s8_get_name_no_ext(s); + assert(s8_equal(ss, s8_lit("the_thing"))); + } + + { + s8_t s = s8_printf(arena, "%d%Sv%s", 32, s8_lit("|"), ">"); + assert(s8_equal(s, s8_lit("32|v>"))); + } + + { + s8_t s0 = s8_lit("0123456789"); + s8_t s1 = s8_cut_start(&s0, 2); + assert(s8_equal(s0, s8_lit("23456789"))); + assert(s8_equal(s1, s8_lit("01"))); + } + ma_destroy(arena); +} + +#include + +int main(int argc, char **argv) { + printf("PLATFORM_WASM = %d\n", PLATFORM_WASM); + printf("PLATFORM_WINDOWS = %d\n", PLATFORM_WINDOWS); + printf("PLATFORM_LINUX = %d\n", PLATFORM_LINUX); + printf("PLATFORM_POSIX = %d\n", PLATFORM_POSIX); + printf("PLATFORM_MAC_OS = %d\n", PLATFORM_MAC_OS); + printf("PLATFORM_CLANG = %d\n", PLATFORM_CLANG); + printf("PLATFORM_GCC = %d\n", PLATFORM_GCC); + printf("PLATFORM_CL = %d\n", PLATFORM_CL); + printf("PLATFORM_TCC = %d\n", PLATFORM_TCC); + + test_s8(); + + printf("all done!\n"); +} \ No newline at end of file