diff options
author | Mattias Andrée <maandree@kth.se> | 2018-11-23 20:38:54 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2018-11-23 20:38:54 +0100 |
commit | b5ca6729c7b52e8cade6d3808ad8280845ac32ea (patch) | |
tree | 0ddac006e8a6bad962c7c981449ba43fb4bc195f /strrnchr_inv.c | |
parent | Add a bunch of function and macros (diff) | |
download | libsimple-b5ca6729c7b52e8cade6d3808ad8280845ac32ea.tar.gz libsimple-b5ca6729c7b52e8cade6d3808ad8280845ac32ea.tar.bz2 libsimple-b5ca6729c7b52e8cade6d3808ad8280845ac32ea.tar.xz |
Some fixes and tests
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'strrnchr_inv.c')
-rw-r--r-- | strrnchr_inv.c | 55 |
1 files changed, 50 insertions, 5 deletions
diff --git a/strrnchr_inv.c b/strrnchr_inv.c index 8ab9965..80be865 100644 --- a/strrnchr_inv.c +++ b/strrnchr_inv.c @@ -4,16 +4,13 @@ char * -libsimple_strrnchr_inv(const char *s_, int c_, size_t n) /* TODO test, man */ +libsimple_strrnchr_inv(const char *s_, int c_, size_t n) /* TODO man */ { char *s = *(char **)(void *)&s_, c = (char)c_; char *end = &s[n], *r = NULL; - for (; s != end; s++) { + for (; *s && s != end; s++) if (*s != c) r = s; - if (!*s) - break; - } return r; } @@ -24,6 +21,54 @@ libsimple_strrnchr_inv(const char *s_, int c_, size_t n) /* TODO test, man */ int main(void) { + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'b', SIZE_MAX), "abb")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'B', SIZE_MAX), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'b', SIZE_MAX), "B")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'B', SIZE_MAX), "ABB")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'a', SIZE_MAX), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", '\0', SIZE_MAX), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("--------", '-', SIZE_MAX), NULL)); + + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'b', 9), "abb")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'B', 9), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'b', 9), "B")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'B', 9), "ABB")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'a', 9), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", '\0', 9), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("--------", '-', 9), NULL)); + + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'b', 8), "abb")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'B', 8), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'b', 8), "B")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'B', 8), "ABB")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'a', 8), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", '\0', 8), "b")); + assert(!strcmpnul(libsimple_strrnchr_inv("--------", '-', 8), NULL)); + + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'b', 7), "abb")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'B', 7), "bb")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'b', 7), "BB")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'B', 7), "ABB")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'a', 7), "bb")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", '\0', 7), "bb")); + assert(!strcmpnul(libsimple_strrnchr_inv("--------", '-', 7), NULL)); + + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'b', 4), "abbaabb")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'B', 4), "baabb")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'b', 4), "BAABB")); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'B', 4), "ABBAABB")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'a', 4), "baabb")); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", '\0', 4), "baabb")); + assert(!strcmpnul(libsimple_strrnchr_inv("--------", '-', 4), NULL)); + + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'b', 0), NULL)); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'B', 0), NULL)); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'b', 0), NULL)); + assert(!strcmpnul(libsimple_strrnchr_inv("AABBAABB", 'B', 0), NULL)); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", 'a', 0), NULL)); + assert(!strcmpnul(libsimple_strrnchr_inv("aabbaabb", '\0', 0), NULL)); + assert(!strcmpnul(libsimple_strrnchr_inv("--------", '-', 0), NULL)); + return 0; } |