Archived
1
0
Fork 0
This repository has been archived on 2026-05-10. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
archived/test/t_strbuf.c
2010-10-19 13:34:06 +02:00

144 lines
2.3 KiB
C

#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include "../src/strbuf.h"
typedef unsigned int uint;
void print_strbuf(strbuf_t *s) {
assert(s->len == strlen(s->buf));
printf("block: %u, len: %u |%s|\n", (uint)s->alloc_size, (uint)s->len, s->buf);
}
void test_release_empty() {
strbuf_t b = STRBUF_INIT;
char *ptr = strbuf_release(&b);
assert(*ptr == '\0');
free(ptr);
}
void test_squeeze() {
strbuf_t b = STRBUF_INIT;
strbuf_squeeze(&b, 'X');
strbuf_append_str(&b, "aaabXXXcdefXXXXghijklXXmmmnopXXXXXqrXstuXXvwxyXXzXX");
strbuf_squeeze(&b, 'X');
print_strbuf(&b);
strbuf_free(&b);
strbuf_append_str(&b, "XXXX");
strbuf_squeeze(&b, 'X');
print_strbuf(&b);
strbuf_free(&b);
strbuf_append_str(&b, "A");
strbuf_squeeze(&b, 'X');
print_strbuf(&b);
strbuf_free(&b);
}
void test_chop() {
strbuf_t b = STRBUF_INIT;
strbuf_rchop(&b, 'X');
print_strbuf(&b);
strbuf_append_str(&b, "X");
strbuf_rchop(&b, 'X');
print_strbuf(&b);
strbuf_append_str(&b, "123456789X123456789");
strbuf_rchop(&b, 'X');
print_strbuf(&b);
strbuf_rchop(&b, 'X');
print_strbuf(&b);
strbuf_free(&b);
}
void test_term() {
strbuf_t b = STRBUF_INIT;
strbuf_t c = STRBUF_INIT;
strbuf_append_str(&b, "test");
strbuf_append_str(&c, "test.");
strbuf_term(&b, '.');
strbuf_term(&c, '.');
assert(strcmp(b.buf, c.buf) == 0);
strbuf_free(&b);
strbuf_free(&c);
}
void test() {
strbuf_t b = STRBUF_INIT;
print_strbuf(&b);
strbuf_append(&b, " ", 4);
strbuf_append(&b, "abcdef", 6);
print_strbuf(&b);
strbuf_append(&b, "012345678901234567890123456789", 30);
strbuf_append_ch(&b, 'a');
strbuf_append_str(&b, " ");
print_strbuf(&b);
strbuf_rtrim(&b);
print_strbuf(&b);
strbuf_ltrim(&b);
print_strbuf(&b);
strbuf_trim(&b);
print_strbuf(&b);
strbuf_rev(&b);
print_strbuf(&b);
strbuf_reduce(&b, 6);
print_strbuf(&b);
/* testing release */
char *str = strbuf_release(&b);
printf("released |%s|\n", str);
free(str);
}
int main() {
test();
test_release_empty();
test_squeeze();
test_term();
test_chop();
return 0;
}