From b5ca6729c7b52e8cade6d3808ad8280845ac32ea Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 23 Nov 2018 20:38:54 +0100 Subject: Some fixes and tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- strrnchr_inv.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 5 deletions(-) (limited to 'strrnchr_inv.c') 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; } -- cgit v1.2.3-70-g09d2