summaryrefslogtreecommitdiffstats
path: root/lib/dpkg/t/t-varbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dpkg/t/t-varbuf.c')
-rw-r--r--lib/dpkg/t/t-varbuf.c122
1 files changed, 96 insertions, 26 deletions
diff --git a/lib/dpkg/t/t-varbuf.c b/lib/dpkg/t/t-varbuf.c
index 08998a5..1ab1cf2 100644
--- a/lib/dpkg/t/t-varbuf.c
+++ b/lib/dpkg/t/t-varbuf.c
@@ -238,19 +238,15 @@ test_varbuf_add_str(void)
varbuf_init(&vb, 5);
varbuf_add_str(&vb, "1234567890");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "1234567890");
varbuf_add_str(&vb, "abcd");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "1234567890abcd");
varbuf_add_strn(&vb, "1234567890", 5);
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "1234567890abcd12345");
varbuf_add_strn(&vb, "abcd", 0);
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "1234567890abcd12345");
varbuf_destroy(&vb);
@@ -331,34 +327,26 @@ test_varbuf_add_dir(void)
varbuf_init(&vb, 10);
varbuf_add_dir(&vb, "");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/");
varbuf_add_dir(&vb, "");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/");
varbuf_add_dir(&vb, "aa");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/aa/");
varbuf_add_dir(&vb, "");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/aa/");
varbuf_reset(&vb);
varbuf_add_dir(&vb, "/foo/bar");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/foo/bar/");
varbuf_reset(&vb);
varbuf_add_dir(&vb, "/foo/bar/");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/foo/bar/");
varbuf_add_dir(&vb, "quux");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/foo/bar/quux/");
varbuf_add_dir(&vb, "zoo");
- varbuf_end_str(&vb);
test_str(vb.buf, ==, "/foo/bar/quux/zoo/");
varbuf_destroy(&vb);
@@ -378,7 +366,6 @@ test_varbuf_end_str(void)
varbuf_trunc(&vb, 10);
- varbuf_end_str(&vb);
test_pass(vb.used == 10);
test_pass(vb.size >= vb.used + 1);
test_pass(vb.buf[10] == '\0');
@@ -388,7 +375,7 @@ test_varbuf_end_str(void)
}
static void
-test_varbuf_get_str(void)
+test_varbuf_str(void)
{
struct varbuf vb;
const char *str;
@@ -396,7 +383,7 @@ test_varbuf_get_str(void)
varbuf_init(&vb, 10);
varbuf_add_buf(&vb, "1234567890", 10);
- str = varbuf_get_str(&vb);
+ str = varbuf_str(&vb);
test_pass(vb.buf == str);
test_pass(vb.used == 10);
test_pass(vb.buf[vb.used] == '\0');
@@ -405,7 +392,7 @@ test_varbuf_get_str(void)
test_str(str, ==, "1234567890");
varbuf_add_buf(&vb, "abcde", 5);
- str = varbuf_get_str(&vb);
+ str = varbuf_str(&vb);
test_pass(vb.buf == str);
test_pass(vb.used == 15);
test_pass(vb.buf[vb.used] == '\0');
@@ -417,6 +404,73 @@ test_varbuf_get_str(void)
}
static void
+test_varbuf_has(void)
+{
+ struct varbuf vb = VARBUF_OBJECT;
+ struct varbuf vb_prefix = VARBUF_OBJECT;
+ struct varbuf vb_suffix = VARBUF_OBJECT;
+
+ test_pass(varbuf_has_prefix(&vb, &vb_prefix));
+ test_pass(varbuf_has_suffix(&vb, &vb_suffix));
+
+ varbuf_set_str(&vb_prefix, "prefix");
+ varbuf_set_str(&vb_suffix, "suffix");
+
+ test_fail(varbuf_has_prefix(&vb, &vb_prefix));
+ test_fail(varbuf_has_suffix(&vb, &vb_suffix));
+
+ varbuf_set_str(&vb, "prefix and some text");
+ test_pass(varbuf_has_prefix(&vb, &vb_prefix));
+ test_fail(varbuf_has_prefix(&vb, &vb_suffix));
+ test_fail(varbuf_has_suffix(&vb, &vb_prefix));
+ test_fail(varbuf_has_suffix(&vb, &vb_suffix));
+
+ varbuf_set_str(&vb, "some text with suffix");
+ test_fail(varbuf_has_prefix(&vb, &vb_prefix));
+ test_fail(varbuf_has_prefix(&vb, &vb_suffix));
+ test_fail(varbuf_has_suffix(&vb, &vb_prefix));
+ test_pass(varbuf_has_suffix(&vb, &vb_suffix));
+
+ varbuf_set_str(&vb, "prefix and some text with suffix");
+ test_pass(varbuf_has_prefix(&vb, &vb_prefix));
+ test_fail(varbuf_has_prefix(&vb, &vb_suffix));
+ test_fail(varbuf_has_suffix(&vb, &vb_prefix));
+ test_pass(varbuf_has_suffix(&vb, &vb_suffix));
+
+ varbuf_destroy(&vb_prefix);
+ varbuf_destroy(&vb_suffix);
+ varbuf_destroy(&vb);
+}
+
+static void
+test_varbuf_trim(void)
+{
+ struct varbuf vb = VARBUF_OBJECT;
+ struct varbuf vb_prefix = VARBUF_OBJECT;
+ struct varbuf vb_suffix = VARBUF_OBJECT;
+
+ varbuf_set_str(&vb_prefix, "prefix");
+ varbuf_set_str(&vb_suffix, "suffix");
+
+ varbuf_set_str(&vb, "some text");
+ varbuf_trim_varbuf_prefix(&vb, &vb_prefix);
+ varbuf_trim_char_prefix(&vb, 'a');
+ test_str(vb.buf, ==, "some text");
+
+ varbuf_set_str(&vb, "prefix and some text");
+ varbuf_trim_varbuf_prefix(&vb, &vb_prefix);
+ test_str(vb.buf, ==, " and some text");
+
+ varbuf_set_str(&vb, " and some text");
+ varbuf_trim_char_prefix(&vb, ' ');
+ test_str(vb.buf, ==, "and some text");
+
+ varbuf_destroy(&vb_prefix);
+ varbuf_destroy(&vb_suffix);
+ varbuf_destroy(&vb);
+}
+
+static void
test_varbuf_printf(void)
{
struct varbuf vb;
@@ -478,18 +532,15 @@ test_varbuf_snapshot(void)
test_str(varbuf_rollback_start(&vbs), ==, "");
varbuf_add_buf(&vb, "1234567890", 10);
- varbuf_end_str(&vb);
test_pass(vb.used == 10);
test_pass(varbuf_rollback_len(&vbs) == 10);
test_str(varbuf_rollback_start(&vbs), ==, "1234567890");
varbuf_rollback(&vbs);
- varbuf_end_str(&vb);
test_pass(vb.used == 0);
test_pass(varbuf_rollback_len(&vbs) == 0);
test_str(varbuf_rollback_start(&vbs), ==, "");
varbuf_add_buf(&vb, "1234567890", 10);
- varbuf_end_str(&vb);
test_pass(vb.used == 10);
test_pass(varbuf_rollback_len(&vbs) == 10);
test_str(varbuf_rollback_start(&vbs), ==, "1234567890");
@@ -499,12 +550,10 @@ test_varbuf_snapshot(void)
test_str(varbuf_rollback_start(&vbs), ==, "");
varbuf_add_buf(&vb, "1234567890", 10);
- varbuf_end_str(&vb);
test_pass(vb.used == 20);
test_pass(varbuf_rollback_len(&vbs) == 10);
test_str(varbuf_rollback_start(&vbs), ==, "1234567890");
varbuf_rollback(&vbs);
- varbuf_end_str(&vb);
test_pass(vb.used == 10);
test_pass(varbuf_rollback_len(&vbs) == 0);
test_str(varbuf_rollback_start(&vbs), ==, "");
@@ -519,22 +568,41 @@ test_varbuf_detach(void)
char *str;
varbuf_init(&vb, 0);
+ test_pass(vb.used == 0);
+ test_pass(vb.size == 0);
+ test_pass(vb.buf == NULL);
+ str = varbuf_detach(&vb);
+ test_str(str, ==, "");
+ test_pass(vb.used == 0);
+ test_pass(vb.size == 0);
+ test_pass(vb.buf == NULL);
+ free(str);
- varbuf_add_buf(&vb, "1234567890", 10);
-
+ varbuf_init(&vb, 0);
+ varbuf_add_buf(&vb, NULL, 0);
+ test_pass(vb.used == 0);
+ test_pass(vb.size == 0);
+ test_pass(vb.buf == NULL);
str = varbuf_detach(&vb);
+ test_str(str, ==, "");
+ test_pass(vb.used == 0);
+ test_pass(vb.size == 0);
+ test_pass(vb.buf == NULL);
+ free(str);
+ varbuf_init(&vb, 0);
+ varbuf_add_buf(&vb, "1234567890", 10);
+ str = varbuf_detach(&vb);
test_mem(str, ==, "1234567890", 10);
test_pass(vb.used == 0);
test_pass(vb.size == 0);
test_pass(vb.buf == NULL);
-
free(str);
}
TEST_ENTRY(test)
{
- test_plan(172);
+ test_plan(205);
test_varbuf_init();
test_varbuf_prealloc();
@@ -550,7 +618,9 @@ TEST_ENTRY(test)
test_varbuf_map_char();
test_varbuf_add_dir();
test_varbuf_end_str();
- test_varbuf_get_str();
+ test_varbuf_str();
+ test_varbuf_has();
+ test_varbuf_trim();
test_varbuf_printf();
test_varbuf_reset();
test_varbuf_snapshot();