summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-10-20 21:22:04 +0100
committerLars Wirzenius <liw@liw.fi>2010-10-20 21:22:04 +0100
commitea0f6b8f589ea6f2bd37a7357ff6f4eaae363540 (patch)
treeb0cc0fa5478695422848abcea0da62842d2d9900
parent70840f2aa13d91de3254c9358a27df974e059831 (diff)
downloaddynstr-ea0f6b8f589ea6f2bd37a7357ff6f4eaae363540.tar.gz
Add more tests for dynstr_memcpy.
-rw-r--r--unittests.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/unittests.c b/unittests.c
index c97d2f7..8452125 100644
--- a/unittests.c
+++ b/unittests.c
@@ -135,6 +135,62 @@ static int test_creates_from_memory(void)
}
+static int test_memcpy_returns_zero_if_offset_is_too_large(void)
+{
+ Dynstr *dynstr;
+ char mem[1024];
+
+ dynstr = dynstr_new_from_cstring("hello");
+ FAIL_UNLESS_EQUAL(dynstr_memcpy(mem, dynstr, dynstr_len(dynstr), 1), 0);
+ FAIL_UNLESS_EQUAL(dynstr_memcpy(mem, dynstr, dynstr_len(dynstr) + 1, 1), 0);
+ return true;
+}
+
+
+static int test_memcpy_truncates_if_copying_too_much(void)
+{
+ Dynstr *dynstr;
+ char mem[1024];
+ size_t len;
+
+ dynstr = dynstr_new_from_cstring("hello");
+ len = dynstr_len(dynstr);
+ FAIL_UNLESS_EQUAL(dynstr_memcpy(mem, dynstr, 0, len), len);
+ FAIL_UNLESS_EQUAL(dynstr_memcpy(mem, dynstr, 0, len + 1), len);
+ return true;
+}
+
+
+static int test_memcpy_copies_whole_string_ok(void)
+{
+ Dynstr *dynstr;
+ const char data[] = "hello";
+ char mem[1024];
+ size_t len;
+
+ dynstr = dynstr_new_from_cstring(data);
+ len = dynstr_len(dynstr);
+ dynstr_memcpy(mem, dynstr, 0, len);
+ FAIL_UNLESS_EQUAL(memcmp(data, mem, len), 0);
+ return true;
+}
+
+
+static int test_memcpy_copies_substring_ok(void)
+{
+ Dynstr *dynstr;
+ const char data[] = "hello";
+ char mem[1024];
+ size_t len;
+
+ dynstr = dynstr_new_from_cstring(data);
+ len = dynstr_len(dynstr);
+ dynstr_memcpy(mem, dynstr, 1, len-2);
+ FAIL_UNLESS_EQUAL(memcmp(data + 1, mem, len-2), 0);
+ return true;
+}
+
+
struct test {
const char *name;
int (*test)(void);
@@ -151,6 +207,10 @@ static const struct test tests[] = {
TEST(test_empty_string_is_empty),
TEST(test_creates_from_cstring),
TEST(test_creates_from_memory),
+ TEST(test_memcpy_returns_zero_if_offset_is_too_large),
+ TEST(test_memcpy_truncates_if_copying_too_much),
+ TEST(test_memcpy_copies_whole_string_ok),
+ TEST(test_memcpy_copies_substring_ok),
};
static const int num_tests = sizeof(tests) / sizeof(tests[0]);