diff --git a/t/utils/strbuf_test.c b/t/utils/strbuf_test.c
index 9e96b984a2a764d5d322fc60e1065e2ee9cb2b6b..d455c0ec1c0666499664243240dc9430ad9ece4b 100644 (file)
--- a/t/utils/strbuf_test.c
+++ b/t/utils/strbuf_test.c
/* check that methods don't crash */
sdb_strbuf_destroy(b);
- sdb_strbuf_skip(b, 0);
- sdb_strbuf_skip(b, 10);
+ sdb_strbuf_skip(b, 0, 0);
+ sdb_strbuf_skip(b, 0, 10);
/* check that methods return an error */
fail_unless(sdb_strbuf_vappend(b, "test", ap) < 0,
}
END_TEST
+START_TEST(test_incremental)
+{
+ ssize_t n;
+ size_t i;
+
+ sdb_strbuf_destroy(buf);
+ buf = sdb_strbuf_create(1024);
+
+ /* fill buffer one by one; leave room for nul-byte */
+ for (i = 0; i < 1023; ++i) {
+ n = sdb_strbuf_append(buf, ".");
+ fail_unless(n == 1, "sdb_strbuf_append() = %zi; expected: 1", n);
+ }
+
+ /* write another byte; this has to trigger a resize */
+ n = sdb_strbuf_append(buf, ".");
+ fail_unless(n == 1, "sdb_strbuf_append() = %zi; expected: 1", n);
+
+ /* write more bytes; this should trigger at least one more resize but
+ * that's an implementation detail */
+ for (i = 0; i < 1024; ++i) {
+ n = sdb_strbuf_append(buf, ".");
+ fail_unless(n == 1, "sdb_strbuf_append() = %zi; expected: 1", n);
+ }
+
+ n = (ssize_t)sdb_strbuf_len(buf);
+ fail_unless(n == 2048, "sdb_strbuf_len() = %zi; expectd: 2048", n);
+}
+END_TEST
+
static struct {
const char *input;
size_t size;
size_t n;
sdb_strbuf_sprintf(buf, input);
- sdb_strbuf_skip(buf, skip_golden_data[i].n);
+ sdb_strbuf_skip(buf, 0, skip_golden_data[i].n);
n = sdb_strbuf_len(buf);
fail_unless(n == skip_golden_data[i].expected_len,
tcase_add_test(tc, test_sdb_strbuf_create);
tcase_add_test(tc, test_sdb_strbuf_append);
tcase_add_test(tc, test_sdb_strbuf_sprintf);
+ tcase_add_test(tc, test_incremental);
tcase_add_test(tc, test_sdb_strbuf_memcpy);
tcase_add_test(tc, test_sdb_strbuf_memappend);
tcase_add_test(tc, test_sdb_strbuf_chomp);