diff options
author | antirez <antirez@gmail.com> | 2010-09-23 16:05:17 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2010-09-23 16:05:17 +0200 |
commit | 136cf53f22539b33396247d356e7e9d077068ccf (patch) | |
tree | 330e954b1efabf725a50f7487206bbc160ba799e /src/sds.c | |
parent | 56e52b69feebb11931cbe8162ce1749909b7ff30 (diff) | |
download | redis-136cf53f22539b33396247d356e7e9d077068ccf.tar.gz |
minimal C test framework + a first example sds.c tests
Diffstat (limited to 'src/sds.c')
-rw-r--r-- | src/sds.c | 30 |
1 files changed, 26 insertions, 4 deletions
@@ -223,13 +223,16 @@ sds sdsrange(sds s, int start, int end) { } newlen = (start > end) ? 0 : (end-start)+1; if (newlen != 0) { - if (start >= (signed)len) start = len-1; - if (end >= (signed)len) end = len-1; - newlen = (start > end) ? 0 : (end-start)+1; + if (start >= (signed)len) { + newlen = 0; + } else if (end >= (signed)len) { + end = len-1; + newlen = (start > end) ? 0 : (end-start)+1; + } } else { start = 0; } - if (start != 0) memmove(sh->buf, sh->buf+start, newlen); + if (start && newlen) memmove(sh->buf, sh->buf+start, newlen); sh->buf[newlen] = 0; sh->free = sh->free+(sh->len-newlen); sh->len = newlen; @@ -478,3 +481,22 @@ err: if (current) sdsfree(current); return NULL; } + +#ifdef SDS_TEST_MAIN +#include <stdio.h> +#include "testhelp.h" + +int main(void) { + { + sds x = sdsnew("foo"); + + /* SDS creation and length */ + test_cond("Can create a string and obtain the length", + sdslen(x) == 3 && memcmp(x,"foo",3) == 0) + + /* Nul term checking */ + test_cond("The string contains the nul term", x[3] == '\0') + } + test_report() +} +#endif |