diff --git a/t/utils/strbuf_test.c b/t/utils/strbuf_test.c
index d455c0ec1c0666499664243240dc9430ad9ece4b..bb03296d79da887181e4ac9d992fa989320f9dc3 100644 (file)
--- a/t/utils/strbuf_test.c
+++ b/t/utils/strbuf_test.c
* tests
*/
-START_TEST(test_empty)
+START_TEST(test_null)
{
sdb_strbuf_t *b = NULL;
va_list ap;
sdb_strbuf_destroy(b);
sdb_strbuf_skip(b, 0, 0);
sdb_strbuf_skip(b, 0, 10);
+ sdb_strbuf_skip(b, 10, 10);
+ sdb_strbuf_clear(b);
/* check that methods return an error */
fail_unless(sdb_strbuf_vappend(b, "test", ap) < 0,
}
END_TEST
+START_TEST(test_empty)
+{
+ sdb_strbuf_t *b = sdb_strbuf_create(0);
+ const char *data;
+ size_t len;
+
+ /* check that methods don't crash */
+ sdb_strbuf_skip(b, 1, 1);
+ sdb_strbuf_clear(b);
+ sdb_strbuf_chomp(b);
+
+ data = sdb_strbuf_string(b);
+ fail_unless(data && (*data == '\0'),
+ "sdb_strbuf_string(<empty>) = '%s'; expected: ''", data);
+ len = sdb_strbuf_len(b);
+ fail_unless(len == 0,
+ "sdb_strbuf_len(<empty>) = %zu; expected: 0", len);
+
+ sdb_strbuf_destroy(b);
+}
+END_TEST
+
START_TEST(test_sdb_strbuf_create)
{
sdb_strbuf_t *s;
/* input is "1234567890" */
static struct {
+ size_t offset;
size_t n;
const char *expected;
size_t expected_len;
} skip_golden_data[] = {
- { 0, "1234567890", 10 },
- { 1, "234567890", 9 },
- { 2, "34567890", 8 },
- { 9, "0", 1 },
- { 10, "", 0 },
- { 11, "", 0 },
- { 100, "", 0 },
+ { 0, 0, "1234567890", 10 },
+ { 0, 1, "234567890", 9 },
+ { 0, 2, "34567890", 8 },
+ { 0, 9, "0", 1 },
+ { 0, 10, "", 0 },
+ { 0, 11, "", 0 },
+ { 0, 100, "", 0 },
+ { 1, 0, "1234567890", 10 },
+ { 1, 1, "134567890", 9 },
+ { 1, 2, "14567890", 8 },
+ { 2, 0, "1234567890", 10 },
+ { 2, 1, "124567890", 9 },
+ { 2, 2, "12567890", 8 },
+ { 2, 3, "1267890", 7 },
+ { 2, 4, "127890", 6 },
+ { 2, 5, "12890", 5 },
+ { 2, 6, "1290", 4 },
+ { 2, 7, "120", 3 },
+ { 2, 8, "12", 2 },
+ { 2, 9, "12", 2 },
+ { 2, 10, "12", 2 },
+ { 8, 1, "123456780", 9 },
+ { 8, 2, "12345678", 8 },
+ { 8, 3, "12345678", 8 },
+ { 9, 1, "123456789", 9 },
+ { 9, 2, "123456789", 9 },
+ { 10, 1, "1234567890", 10 },
+ { 10, 2, "1234567890", 10 },
};
START_TEST(test_sdb_strbuf_skip)
size_t n;
sdb_strbuf_sprintf(buf, input);
- sdb_strbuf_skip(buf, 0, skip_golden_data[i].n);
+ sdb_strbuf_skip(buf, skip_golden_data[i].offset,
+ skip_golden_data[i].n);
n = sdb_strbuf_len(buf);
fail_unless(n == skip_golden_data[i].expected_len,
}
END_TEST
+START_TEST(test_sdb_strbuf_clear)
+{
+ const char *data;
+ size_t len;
+
+ sdb_strbuf_append(buf, "abc");
+ len = sdb_strbuf_len(buf);
+ fail_unless(len != 0,
+ "sdb_strbuf_len() = %zu; expected: != 0", len);
+
+ sdb_strbuf_clear(buf);
+ len = sdb_strbuf_len(buf);
+ fail_unless(len == 0,
+ "sdb_strbuf_len() = %zu (after clear); expected: 0", len);
+
+ data = sdb_strbuf_string(buf);
+ fail_unless(*data == '\0',
+ "sdb_strbuf_string() = '%s' (after clear); expected: ''", data);
+}
+END_TEST
+
static struct {
const char *input;
const char *expected;
TCase *tc;
tc = tcase_create("empty");
+ tcase_add_test(tc, test_null);
tcase_add_test(tc, test_empty);
suite_add_tcase(s, tc);
tcase_add_test(tc, test_sdb_strbuf_memappend);
tcase_add_test(tc, test_sdb_strbuf_chomp);
tcase_add_test(tc, test_sdb_strbuf_skip);
+ tcase_add_test(tc, test_sdb_strbuf_clear);
tcase_add_test(tc, test_sdb_strbuf_string);
tcase_add_test(tc, test_sdb_strbuf_len);
suite_add_tcase(s, tc);