summaryrefslogtreecommitdiffstats
path: root/btparser/tests/strbuf.at
diff options
context:
space:
mode:
Diffstat (limited to 'btparser/tests/strbuf.at')
-rw-r--r--btparser/tests/strbuf.at73
1 files changed, 73 insertions, 0 deletions
diff --git a/btparser/tests/strbuf.at b/btparser/tests/strbuf.at
new file mode 100644
index 00000000..18535c15
--- /dev/null
+++ b/btparser/tests/strbuf.at
@@ -0,0 +1,73 @@
+# Checking the btparser. -*- Autotest -*-
+
+AT_BANNER([strbuf])
+
+## ---------------------- ##
+## btp_strbuf_append_char ##
+## ---------------------- ##
+
+AT_TESTFUN([btp_strbuf_append_char],
+[[
+#include <lib/strbuf.h>
+#include <assert.h>
+int main(void)
+{
+ int i;
+ struct btp_strbuf *strbuf = btp_strbuf_new();
+ for (i = 0; i < 100; ++i)
+ {
+ assert(strbuf->len == i);
+ assert(strbuf->alloc > strbuf->len);
+ assert(strbuf->buf[i] == '\0');
+ btp_strbuf_append_char(strbuf, 'a');
+ assert(strbuf->buf[i] == 'a');
+ assert(strbuf->buf[i+1] == '\0');
+ assert(strbuf->len == i + 1);
+ assert(strbuf->alloc > strbuf->len);
+ }
+ btp_strbuf_free(strbuf);
+ return 0;
+}
+]])
+
+## --------------------- ##
+## btp_strbuf_append_str ##
+## --------------------- ##
+
+AT_TESTFUN([btp_strbuf_append_str],
+[[
+#include <lib/strbuf.h>
+#include <assert.h>
+
+/* Test appending strings of certain length. 'len' must be < 50. */
+void test(int len)
+{
+ int i;
+ char str[50];
+ for (i = 0; i < len; ++i)
+ str[i] = 'a';
+ str[i] = '\0';
+
+ struct btp_strbuf *strbuf = btp_strbuf_new();
+ for (i = 0; i < 100; ++i)
+ {
+ assert(strbuf->len == i*len);
+ assert(strbuf->alloc > strbuf->len);
+ assert(strbuf->buf[i*len] == '\0');
+ btp_strbuf_append_str(strbuf, str);
+ assert(strbuf->buf[i*len] == str[0]);
+ assert(strbuf->buf[i*len+len] == '\0');
+ assert(strbuf->len == i*len + len);
+ assert(strbuf->alloc > strbuf->len);
+ }
+ btp_strbuf_free(strbuf);
+}
+
+int main(void)
+{
+ int i;
+ for (i = 0; i < 50; ++i)
+ test(i);
+ return 0;
+}
+]])