diff options
Diffstat (limited to 'tests/strings.c')
-rw-r--r-- | tests/strings.c | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/strings.c b/tests/strings.c new file mode 100644 index 0000000..d49d525 --- /dev/null +++ b/tests/strings.c @@ -0,0 +1,103 @@ +#include <ungrateful.h> + +int main(void) { + List splits; + Allocator talloc; + String result; + + assert(un_string_get_length(UN_CSTR "Hello") == 5); + assert(un_string_get_length(UN_CSTR "") == 0); + assert(un_string_get_length(UN_CSTR "What") == 4); + + talloc = un_allocator_get_temporary(); + + result = un_string_concat(UN_STR("Hello "), UN_STR("world!"), talloc); + assert(!un_string_compare(result, UN_STR("Hello world!"))); + + assert(!un_string_compare(un_string_copy(result, talloc), result)); + + splits = un_string_split(UN_STR("Eatin burger wit no honey mustard"), UN_STR(" "), talloc); + + assert(splits.count == 6); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("Eatin||burger||wit||no||honey||mustard"), UN_STR("||"), talloc); + + assert(splits.count == 6); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("Eatin||burger||wit||no||honey||mustard||a"), UN_STR("||"), talloc); + + assert(splits.count == 7); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 6), UN_STR("a"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("a||Eatin||burger||wit||no||honey||mustard||a"), UN_STR("||"), talloc); + + assert(splits.count == 8); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("a"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 6), UN_STR("mustard"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 7), UN_STR("a"))); + + un_list_destroy(&splits); + + splits = un_string_split(UN_STR("||Eatin||burger||wit||no||honey||mustard||"), UN_STR("||"), talloc); + + assert(splits.count == 6); + + assert(!un_string_compare(*(String*)un_list_get(&splits, 0), UN_STR("Eatin"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 1), UN_STR("burger"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 2), UN_STR("wit"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 3), UN_STR("no"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 4), UN_STR("honey"))); + assert(!un_string_compare(*(String*)un_list_get(&splits, 5), UN_STR("mustard"))); + + assert(!un_string_compare(un_string_join(splits, UN_STR(" "), talloc), UN_STR("Eatin burger wit no honey mustard"))); + + un_list_destroy(&splits); + + assert(!un_string_compare(un_string_substring(UN_STR("HelloWorld!"), 5, 6), UN_STR("World!"))); + assert(!un_string_compare(un_string_substring(UN_STR("HelloWorld!"), 0, 11), UN_STR("HelloWorld!"))); + assert(!un_string_compare(un_string_substring(UN_STR("HelloWorld!"), 10, 1), UN_STR("!"))); + + assert(un_string_index_of(UN_STR("CP/M"), (u8)'/', 0) == 2); + assert(un_string_index_of_last(UN_STR("https://github.com/bonmas14"), (u8)'/') == 18); + + assert(!un_string_compare(un_string_swap(UN_STR("/path/from/unix/systems/"), (u8)'/', (u8) '\\', talloc), UN_STR("\\path\\from\\unix\\systems\\"))); + + assert(!un_string_compare( + un_string_format(talloc, UN_STR("/path/%s/unix/a %d %u %%"), UN_STR("test"), (s64)-100, (u64)404), + UN_STR("/path/test/unix/a -100 404 %") + ) + ); +} |