9 static void show_buf(stringbuf *sb)
11 printf("[%d] = %s\n", sb_len(sb), sb_str(sb));
14 #define validate_buf(SB, EXP) validate_buf_(__FILE__, __LINE__, SB, EXP)
16 static void validate_buf_(const char *file, int line, stringbuf *sb, const char *expected)
18 const char *pt = sb_str(sb);
20 if (expected != NULL) {
21 fprintf(stderr, "%s:%d: Error: Expected NULL, got '%s'\n", file, line, pt);
25 else if (strcmp(pt, expected) != 0) {
27 fprintf(stderr, "%s:%d: Error: Expected '%s', got '%s'\n", file, line, expected, pt);
39 validate_buf(sb, NULL);
42 sb_append(sb, "hello");
43 sb_append(sb, "world");
44 validate_buf(sb, "helloworld");
47 sb_append(sb, "hello");
48 sb_append(sb, "world");
51 assert(sb_len(sb) == 13);
52 validate_buf(sb, "helloworldxxx");
55 sb_append(sb, "first");
56 sb_append(sb, "string");
57 validate_buf(sb, "firststring");
64 sb_append_len(sb, "one string here", 3);
65 sb_append_len(sb, "second string here", 6);
66 validate_buf(sb, "onesecond");
69 sb_append_len(sb, "one string here", 3);
70 sb_append_len(sb, "second string here", 6);
71 pt = sb_to_string(sb);
72 assert(strcmp(pt, "onesecond") == 0);
76 pt = sb_to_string(sb);
77 assert(strcmp(pt, "") == 0);
82 sb_append(sb, "three");
83 sb_insert(sb, 3, "two");
84 validate_buf(sb, "onetwothree");
87 sb_insert(sb, 0, "two");
88 sb_insert(sb, 0, "one");
89 sb_insert(sb, 20, "three");
90 validate_buf(sb, "onetwothree");
94 sb_append(sb, "extra");
96 sb_append(sb, "three");
98 validate_buf(sb, "onetwothree");
101 sb_append(sb, "one");
102 sb_append(sb, "two");
103 sb_append(sb, "three");
104 validate_buf(sb, "onetwothree");
105 /*sb_delete(sb, 6, -1);*/
106 /*validate_buf(sb, "onetwo");*/
109 sb_append(sb, "one");
110 sb_append(sb, "two");
111 sb_append(sb, "three");
112 sb_delete(sb, 0, -1);
113 validate_buf(sb, "");
116 sb_append(sb, "one");
117 sb_append(sb, "two");
118 sb_append(sb, "three");
119 sb_delete(sb, 50, 20);
120 validate_buf(sb, "onetwothree");
122 /* OK to sb_free() a NULL pointer */
127 sb_append(sb, "oneµtwo");
128 assert(sb_len(sb) == 8);
129 assert(sb_chars(sb) == 7);
131 assert(sb_len(sb) == 6);
132 assert(sb_chars(sb) == 6);
133 validate_buf(sb, "onetwo");