string16 improvements

This commit is contained in:
Krzosa Karol
2025-04-04 08:25:47 +02:00
parent f6d5a1cf81
commit f3aa52ba3d
34 changed files with 637 additions and 699 deletions

View File

@@ -24,10 +24,10 @@ fn void os_test(void) {
assert(os_is_abs(exe_dir));
assert(os_is_abs(exe));
assert(os_is_abs(cwd));
assert(!os_is_abs(s8_lit("../path/")));
assert(!os_is_abs(s8("../path/")));
debugf("OS paths %S %S %S", exe_dir, exe, cwd);
s8_t file = os_read(tcx->temp, s8_lit("../.gitignore"));
s8_t file = os_read(tcx->temp, s8("../.gitignore"));
assert(file.str != 0);
assert(file.len != 0);
}
@@ -39,90 +39,90 @@ fn void test_s8(void) {
ma_temp_t temp = ma_begin_temp(arena);
sb8_t *sb = &(sb8_t){arena};
s8_t memes = s8_lit("memes");
s8_t memes = s8("memes");
sb8_printf(sb, "%S", memes);
assert(sb->first == sb->last);
assert(sb->first->len == 5);
assert(s8_are_equal(sb->first->string, memes));
sb8_printf(sb, "%S", s8_lit("things are going fine"));
sb8_printf(sb, "%S", s8("things are going fine"));
s8_t string = sb8_merge(temp.arena, sb);
assert(s8_are_equal(string, s8_lit("memesthings are going fine")));
assert(s8_are_equal(string, s8("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);
s8_t str = s8("thing|another|");
sb8_t sb = s8_split(arena, str, s8("|"), s8_split_none);
assert(s8_are_equal(sb.first->string, s8_lit("thing")));
assert(s8_are_equal(sb.first->next->string, s8_lit("another")));
assert(s8_are_equal(sb.first->string, s8("thing")));
assert(s8_are_equal(sb.first->next->string, s8("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);
s8_t str = s8("thing|another|");
sb8_t sb = s8_split(arena, str, s8("|"), s8_split_inclusive);
assert(s8_are_equal(sb.first->string, s8_lit("thing")));
assert(s8_are_equal(sb.first->next->string, s8_lit("|")));
assert(s8_are_equal(sb.first->next->next->string, s8_lit("another")));
assert(s8_are_equal(sb.first->next->next->next->string, s8_lit("|")));
assert(s8_are_equal(sb.first->string, s8("thing")));
assert(s8_are_equal(sb.first->next->string, s8("|")));
assert(s8_are_equal(sb.first->next->next->string, s8("another")));
assert(s8_are_equal(sb.first->next->next->next->string, s8("|")));
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);
s8_t str = s8("aabaaBaa");
sb8_t sb = s8_split(arena, str, s8("b"), s8_split_inclusive | s8_split_ignore_case);
assert(s8_are_equal(sb.first->string, s8_lit("aa")));
assert(s8_are_equal(sb.first->next->string, s8_lit("b")));
assert(s8_are_equal(sb.first->next->next->string, s8_lit("aa")));
assert(s8_are_equal(sb.first->next->next->next->string, s8_lit("B")));
assert(s8_are_equal(sb.first->next->next->next->next->string, s8_lit("aa")));
assert(s8_are_equal(sb.first->string, s8("aa")));
assert(s8_are_equal(sb.first->next->string, s8("b")));
assert(s8_are_equal(sb.first->next->next->string, s8("aa")));
assert(s8_are_equal(sb.first->next->next->next->string, s8("B")));
assert(s8_are_equal(sb.first->next->next->next->next->string, s8("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);
s8_t str = s8("aabaaBaa");
sb8_t sb = s8_split(arena, str, s8("b"), s8_split_inclusive);
assert(s8_are_equal(sb.first->string, s8_lit("aa")));
assert(s8_are_equal(sb.first->next->string, s8_lit("b")));
assert(s8_are_equal(sb.first->next->next->string, s8_lit("aaBaa")));
assert(s8_are_equal(sb.first->string, s8("aa")));
assert(s8_are_equal(sb.first->next->string, s8("b")));
assert(s8_are_equal(sb.first->next->next->string, s8("aaBaa")));
}
{
s8_t s = s8_lit("0123456789");
assert(s8_are_equal(s8_slice(s, 0, 4), s8_lit("0123")));
assert(s8_are_equal(s8_slice(s, -2, -1), s8_lit("89")));
assert(s8_are_equal(s8_slice(s, -2, 10), s8_lit("89")));
assert(s8_are_equal(s8_slice(s, 8, 10), s8_lit("89")));
s8_t s = s8("0123456789");
assert(s8_are_equal(s8_slice(s, 0, 4), s8("0123")));
assert(s8_are_equal(s8_slice(s, -2, -1), s8("89")));
assert(s8_are_equal(s8_slice(s, -2, 10), s8("89")));
assert(s8_are_equal(s8_slice(s, 8, 10), s8("89")));
}
{
s8_t s = s8_lit(" a \n");
s8_t s = s8(" a \n");
s = s8_trim(s);
assert(s8_are_equal(s, s8_lit("a")));
assert(s8_are_equal(s, s8("a")));
}
{
s8_t s = s8_lit("C:/memes/the_thing.c");
s8_t s = s8("C:/memes/the_thing.c");
s8_t ss = s8_get_name_no_ext(s);
assert(s8_are_equal(ss, s8_lit("the_thing")));
assert(s8_are_equal(ss, s8("the_thing")));
}
{
s8_t s = s8_printf(arena, "%d%Sv%s", 32, s8_lit("|"), ">");
assert(s8_are_equal(s, s8_lit("32|v>")));
s8_t s = s8_printf(arena, "%d%Sv%s", 32, s8("|"), ">");
assert(s8_are_equal(s, s8("32|v>")));
}
{
s8_t s0 = s8_lit("0123456789");
s8_t s0 = s8("0123456789");
s8_t s1 = s8_cut_start(&s0, 2);
assert(s8_are_equal(s0, s8_lit("23456789")));
assert(s8_are_equal(s1, s8_lit("01")));
assert(s8_are_equal(s0, s8("23456789")));
assert(s8_are_equal(s1, s8("01")));
}
ma_destroy(arena);