diff options
Diffstat (limited to 'tests/string.c')
| -rw-r--r-- | tests/string.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/tests/string.c b/tests/string.c index 0e78168..38109a7 100644 --- a/tests/string.c +++ b/tests/string.c @@ -24,8 +24,20 @@ Test(string, from_cstring) { cr_expect(s->alloc_size == 13); cr_expect(s->len == 13); - cr_expect(*((u8*)s+STRNG_BASE_POS) == 72); - cr_expect(*((u8*)s+STRNG_BASE_POS+s->len-1) == 46); + cr_expect(*((u8*)s+STRNG_BASE_POS) == 'H'); + cr_expect(*((u8*)s+STRNG_BASE_POS+s->len-1) == '.'); + + smrt_arena_destroy(arena); +} + +Test(string, to_cstring) { + smrt_arena_t *arena = smrt_arena_create(KiB(4), KiB(4), false); + strng_t *s = strng_from(arena, "Heavy is the head"); + + char *c = strng_str(arena, s); + + cr_expect(strlen(c) == 17); + cr_expect(strcmp(c, "Heavy is the head") == 0); smrt_arena_destroy(arena); } @@ -38,8 +50,26 @@ Test(string, set_string) { cr_expect(s->alloc_size == 13); cr_expect(s->len == 8); - cr_expect(*((u8*)s+STRNG_BASE_POS) == 76); - cr_expect(*((u8*)s+STRNG_BASE_POS+s->len-1) == 33); + cr_expect(*((u8*)s+STRNG_BASE_POS) == 'L'); + cr_expect(*((u8*)s+STRNG_BASE_POS+s->len-1) == '!'); + + smrt_arena_destroy(arena); +} + +Test(string, string_duplicate) { + smrt_arena_t *arena = smrt_arena_create(KiB(4), KiB(4), false); + + strng_t *orig = strng_new(arena, 50); + strng_set(orig, "that falls with the weight"); + + + strng_t *dup = strng_dup(arena, orig); + printf("%.*s\n", STRNG_FMT(dup)); + + cr_expect(dup->alloc_size == 26); + cr_expect(dup->len == 26); + cr_expect(*((u8*)dup+STRNG_BASE_POS) == 't'); + cr_expect(*((u8*)dup+STRNG_BASE_POS+dup->len-1) == 't'); smrt_arena_destroy(arena); } @@ -51,6 +81,7 @@ Test(string, format_and_copy_string) { char *buffer = SMRTA_ALLOC_ARRAY(arena, char, s->len+1); u64 copied = snprintf(buffer, s->len+1, "%.*s", STRNG_FMT(s)); + cr_expect(copied == 13); cr_expect(strcmp(buffer, "Hello, world.") == 0); |