diff options
author | Lars Wirzenius <liw@liw.fi> | 2010-10-20 21:22:04 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2010-10-20 21:22:04 +0100 |
commit | ea0f6b8f589ea6f2bd37a7357ff6f4eaae363540 (patch) | |
tree | b0cc0fa5478695422848abcea0da62842d2d9900 | |
parent | 70840f2aa13d91de3254c9358a27df974e059831 (diff) | |
download | dynstr-ea0f6b8f589ea6f2bd37a7357ff6f4eaae363540.tar.gz |
Add more tests for dynstr_memcpy.
-rw-r--r-- | unittests.c | 60 |
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]); |