==> tests/strbuf.c <==1/* mesh-strbuf: appends, printf growth, take, and formatted strings. */
2#include "mesh/strbuf.h"
3#include "mesh/check.h"
4
5#include <stdlib.h>
6#include <string.h>
7
8int main(void) {
9 msb b = {0};
10 CHECK_S(msb_str(&b), "");
11 msb_puts(&b, "jobs");
12 msb_putc(&b, ' ');
13 msb_printf(&b, "system %u leader %s", 3u, "-");
14 CHECK_S(msb_str(&b), "jobs system 3 leader -");
15 for (int i = 0; i < 1000; i++) msb_printf(&b, "%d,", i);
16 CHECK(b.n > 3000 && b.p[b.n] == 0);
17 msb_clear(&b);
18 CHECK_S(msb_str(&b), "");
19 msb_put(&b, "a\0b", 3);
20 CHECK_U(b.n, 3);
21 char *s = msb_take(&b);
22 CHECK(memcmp(s, "a\0b", 4) == 0 && b.p == NULL && b.n == 0);
23 free(s);
24 char *f = mfmt("%s %05.1f %llx", "x", 2.25, 0xabcULL);
25 CHECK_S(f, "x 002.2 abc");
26 free(f);
27 char *d = mstrndup("hello", 3);
28 CHECK_S(d, "hel");
29 free(d);
30 msb_free(&b);
31 return mesh_check_done();
32}