Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "sigsegv.hpp"
- #include <climits>
- #include <string.h>
- using namespace std;
- //#define TEST_ATOI
- #define BEGIN {
- #define END }
- int iTest;
- void sigsegv(int signal)
- {
- (void)signal;
- cout << FG_LYELLOW << iTest++ << ".SIGSEGV" << ENDL;
- exit(EXIT_SUCCESS);
- }
- std::ostream &
- operator<<(std::ostream & os, Color c)
- {
- return os << "\e[" << static_cast<int>(c) << "m";
- }
- std::vector<ptr> mallocList;
- bool operator==(ptr const & p1, ptr const & p2)
- {
- return (p1.p == p2.p);
- }
- void * imalloc(size_t size) throw()
- {
- //void *(*libc_malloc)(size_t) = (void *(*)(size_t))dlsym(RTLD_NEXT, "malloc");
- void * p = malloc(size);
- mallocListAdd(p, size);
- return (p);
- }
- void ifree(void * p) throw()
- {
- // void (*libc_free)(void*) = (void (*)(void *))dlsym(RTLD_NEXT, "free");
- //libc_free(p);
- free(p);
- mallocListRemove(p);
- }
- void mallocListAdd(void * p, size_t size)
- {
- mallocList.push_back(ptr(p, size));
- }
- void check(bool succes)
- {
- if (succes)
- {
- std::ostringstream ss; ss << FG_GREEN << iTest++ << ".OK ";
- write(1, ss.str().c_str(), ss.str().size());
- write(1,"\n",1);
- }
- else
- {std::ostringstream ss; ss << FG_RED << iTest++ << ".KO "; write(1, ss.str().c_str(), ss.str().size());write(1,"\n",1);}
- }
- void mcheck(void * p, size_t required_size)
- {
- void * p2 = imalloc(required_size);
- if (malloc_usable_size(p) == malloc_usable_size(p2))
- {std::ostringstream ss; ss << FG_GREEN << iTest++ << ".MOK "; write(1, ss.str().c_str(), ss.str().size());write(1,"\n",1);}
- else
- {std::ostringstream ss; ss << FG_RED << iTest++ << ".MKO "; write(1, ss.str().c_str(), ss.str().size());write(1,"\n",1);}
- ifree(p2);
- }
- void mallocListRemove(void * p)
- {
- std::vector<ptr>::iterator it = find(mallocList.begin(), mallocList.end(), ptr(p));
- if (it != mallocList.end())
- mallocList.erase(it);
- }
- void showLeaks(void)
- {
- if (mallocList.size() != 0)
- {
- std::ostringstream ss; ss << FG_RED << "LEAKS.KO ";
- write(1, ss.str().c_str(), ss.str().size());
- write(1,"\n",1);
- std::vector<ptr>::iterator it = mallocList.begin(); std::vector<ptr>::iterator ite = mallocList.end();
- for (; it != ite; ++it)
- {std::ostringstream ss; ss << "[" << it->p << " : " << it->size << "] "; write(1, ss.str().c_str(), ss.str().size());write(1,"\n",1);}
- }
- mallocList.clear();
- }
- //***********************************************************************************************************
- //***********************************************************************************************************
- char *strnstr(const char *s, const char *find, size_t slen)
- {
- char c, sc;
- size_t len;
- if ((c = *find++) != '\0') {
- len = strlen(find);
- do {
- do {
- if (slen-- < 1 || (sc = *s++) == '\0')
- return (NULL);
- } while (sc != c);
- if (len > slen)
- return (NULL);
- } while (strncmp(s, find, len) != 0);
- s--;
- }
- return ((char *)s);
- }
- //***********************************************************************************************************
- //***********************************************************************************************************
- void ft_write(char c)
- {
- write(1,&c,1);
- }
- void ft_writestr(char *str)
- {
- int i;
- i = 0;
- while(str[i] !='\0')
- {
- ft_write(str[i]);
- i++;
- }
- }
- int ft_strlen( const char *str)
- {
- int i;
- i = 0;
- while(str[i] !='\0')
- {
- i++;
- }
- return i;
- }
- int ft_strnlen( const char *str,size_t maxlen)
- {
- size_t i;
- i = 0;
- while(str[i] !='\0' && i < maxlen)
- {
- i++;
- }
- return i;
- }
- int ft_isspace(char c)
- {
- if (c == ' ' || c == '\n' || c == '\t'
- || c == '\v' || c == '\f' || c == '\r')
- return (1);
- else
- return (0);
- }
- int ft_atoi(const char* str)
- {
- long nbr;
- long sign;
- size_t i;
- nbr = 0;
- sign = 1;
- i = 0;
- while ((str[i] != '\0') && ft_isspace(str[i]) == 1)
- i++;
- if (str[i] == '-')
- sign *= -1;
- if ((str[i] == '-') || (str[i] == '+'))
- i++;
- //while ((str[i] != '\0') && ('0' <= str[i]) && (str[i] <= '9'))
- while ((str[i] != '\0') && (str[i] >='0') && (str[i] <= '9'))
- {
- nbr = (nbr * 10) + (str[i] - '0');
- if (nbr > 2147483647 && sign == 1)
- return (-1);
- if (nbr > 2147483648 && sign == -1)
- return (0);
- i++;
- }
- return (sign * nbr);
- // printf("input %s , Original : %d , resultado : %d \n",str,atoi(str),total);
- }
- int ft_isalnum(int c)
- {
- if ((c >= 'A' && c <= 'Z')
- || (c >= 'a' && c <= 'z')
- || (c >= '0' && c <= '9'))
- return (1);
- return (0);
- }
- char *ft_strdup(const char *src)
- {
- int len;
- char *dest;
- int i;
- i = 0;
- len = ft_strlen(src);
- dest = (char *) imalloc(sizeof(char) * (len + 1));
- if (!dest)
- return NULL;
- while (src[i] != '\0')
- {
- dest[i] = src[i];
- i++;
- }
- dest[i] ='\0';
- return dest;
- }
- char* ft_strrchr(const char* s, int c )
- {
- int i;
- char *tmp;
- if (!s)
- return (NULL);
- i = ft_strlen((char*)s);
- tmp = (char*)s;
- while ( i > 0)
- {
- if (tmp[i] == ( char) c)
- return (( char*) (tmp + i));
- i--;
- }
- if (tmp[i]==(char)c)
- return tmp;
- return (NULL);
- }
- char* ft_strchr( char* s, int c )
- {
- int i;
- int len;
- char *save;
- i = 0;
- len = ft_strlen(s);
- while (i < len)
- {
- if (((char *)s)[i] == (char) c)
- return (( char*) (s + i));
- ++i;
- }
- if (c != '\0')
- return (NULL);
- return ((char*)s + i);
- }
- char *ft_strnstr(const char *str, const char *to_find, size_t len)
- {
- unsigned int i;
- unsigned int j;
- if (to_find[0] == '\0')
- return ((char *)str);
- i = 0;
- while (str[i] && i < len)
- {
- j = 0;
- while ( (str[i + j] == to_find[j]) && (i + j < len))
- {
- if (to_find[j + 1]=='\0')
- return ((char *)&str[i]);
- j++;
- }
- i++;
- }
- return (0);
- }
- void ft_putnbr(int nb)
- {
- if(nb == INT_MIN)
- {
- ft_writestr("-2147486348");
- return;
- }
- if (nb < 0)
- {
- nb = -nb;
- ft_writestr("-");
- }
- if (nb >= 10)
- {
- ft_putnbr(nb / 10);
- ft_putnbr(nb % 10);
- }
- else
- ft_write(nb + '0');
- }
- void* ft_calloc ( size_t n, size_t size )
- {
- void *data;
- data =(void*) imalloc(n * size);
- return data;
- }
- void ft_bzero( void *dst, size_t n )
- {
- unsigned char* tmp;
- int i;
- i = 0;
- tmp =(unsigned char*)dst;
- while (i < n)
- {
- tmp[i] = 0;
- i++;
- }
- }
- void *ft_memchr(const void *s, int c, size_t n)
- {
- size_t i;
- i = 0;
- while (i < n)
- {
- if (((unsigned char *) s)[i] == (unsigned char) c)
- return ((void *)(s + i));
- i++;
- }
- return (0);
- }
- void* ft_memset( void* dst,int c, size_t length )
- {
- unsigned char* tmp;
- size_t i;
- i =0;
- tmp = (unsigned char*)dst;
- while(i < length)
- {
- ( (unsigned char *) tmp)[i] = (unsigned char) c;
- i++;
- }
- return dst;
- }
- int ft_memcmp( const void* s1, const void* s2, size_t length )
- {
- unsigned char *tmp1;
- unsigned char *tmp2;
- size_t i;
- tmp1 = (unsigned char*)s1;
- tmp2 = (unsigned char*)s2;
- i =0;
- while (i < length)
- {
- if (tmp1[i] != tmp2[i])
- return (tmp1[i] - tmp2[i]);
- i++;
- }
- return 0;
- }
- void* ft_memcpy( void* dst,const void* src,size_t len )
- {
- size_t i;
- i=0;
- if (src == NULL && dst == NULL)
- return (NULL);
- while (i < len)
- {
- *((char *)dst + i) = *((char *)src + i);
- i++;
- }
- return (dst);
- }
- void* ft_memmove( void* dst, const void* src, size_t len )
- {
- size_t i;
- if (!src && !dst)
- return (NULL);
- i = 0;
- if (dst < src)
- ft_memcpy(dst,src,len);
- else
- {
- i = len;
- while (i-- > 0)
- *(char *)(dst + i) = *(char *)(src + i);
- }
- return (dst);
- }
- int ft_strncmp( const char* s1,const char* s2,size_t n )
- {
- size_t i;
- i = 0;
- if (n == 0)
- return 0;
- while ( (s1[i] && s2[i]) && i < (n-1) )
- {
- if (s1[i] != s2[i])
- break;
- i++;
- }
- return (s1[i] - s2[i]);
- }
- size_t ft_strlcat( char* dst, const char* src,size_t size)
- {
- size_t srclen = ft_strlen(src);
- size_t dstlen = ft_strnlen(dst, size);
- if (dstlen == size) return size+srclen;
- if (srclen < size-dstlen)
- {
- ft_memcpy(dst+dstlen, src, srclen+1);
- } else
- {
- ft_memcpy(dst+dstlen, src, size-dstlen-1);
- dst[size-1] = '\0';
- }
- return dstlen + srclen;
- }
- size_t ft_strlcpy( char* dst,const char* src, size_t size )
- {
- size_t srclen = ft_strlen(src);
- if (srclen < size)
- {
- ft_memcpy(dst, src, srclen+1);
- } else
- if (size != 0)
- {
- ft_memcpy(dst, src, size-1);
- dst[size-1] = '\0';
- }
- return srclen;
- }
- char * ft_strncpy(char * dst, const char * src, size_t maxlen)
- {
- size_t srclen = ft_strnlen(src, maxlen);
- if (srclen < maxlen)
- {
- ft_memcpy(dst, src, srclen);
- ft_memset(dst+srclen, 0, maxlen-srclen);
- } else
- {
- ft_memcpy(dst, src, maxlen);
- }
- return dst;
- }
- char *ft_substr(char const *s, unsigned int start, size_t len)
- {
- }
- char **ft_split(char const *s, char c)
- {
- }
- char *ft_strjoin(char *s1, char *s2)
- {
- }
- char *ft_strtrim(char const *s1, char const *set)
- {
- }
- //#define TEST_CALLOC
- #define TEST_STRDUP
- //#define TEST_ATOI
- #define TEST_BZERO
- int main()
- {
- signal(SIGSEGV, sigsegv);
- #ifdef TEST_ATOI
- BEGIN
- title("ft_atoi\t\t: ");
- char escape[] = {9, 10, 11, 12, 13, 0};
- string e(escape);
- /* 1 */ check(ft_atoi((e + "1").c_str()) == 1); showLeaks();
- /* 2 */ check(ft_atoi((e + "a1").c_str()) == 0); showLeaks();
- /* 3 */ check(ft_atoi((e + "--1").c_str()) == 0); showLeaks();
- /* 4 */ check(ft_atoi((e + "++1").c_str()) == 0); showLeaks();
- /* 5 */ check(ft_atoi((e + "+1").c_str()) == 1); showLeaks();
- /* 6 */ check(ft_atoi((e + "-1").c_str()) == -1); showLeaks();
- /* 7 */ check(ft_atoi((e + "0").c_str()) == 0); showLeaks();
- /* 8 */ check(ft_atoi((e + "+42lyon").c_str()) == 42); showLeaks();
- /* 9 */ check(ft_atoi((e + "+101").c_str()) == 101); showLeaks();
- /* 10 */ check(ft_atoi((e + to_string(INT_MAX)).c_str()) == INT_MAX); showLeaks();
- /* 11 */ check(ft_atoi((e + to_string(INT_MIN)).c_str()) == INT_MIN); showLeaks();
- /* 12 */ check(ft_atoi("-+42") == 0); showLeaks();
- /* 13 */ check(ft_atoi("+-42") == 0); showLeaks();
- /* 14 */ check(ft_atoi((string("+") + e + "42").c_str()) == 0); showLeaks();
- /* 15 */ check(ft_atoi((string("-") + e + "42").c_str()) == 0); showLeaks();
- /* 16 */ check(ft_atoi((string("1") + e + "42").c_str()) == 1); showLeaks();
- /* 17 */ check(ft_atoi((string("-1") + e + "42").c_str()) == -1); showLeaks();
- write(1, "\n", 1);
- END
- #endif // TEST_ATOI
- #ifdef TEST_STRDUP
- BEGIN
- title("ft_strdup\t: ")
- char * s = ft_strdup((char*)"coucou");
- /* 1 */ check(!strcmp(s, "coucou"));
- /* 2 */ mcheck(s, strlen("coucou") + 1); ifree(s); showLeaks();
- s = ft_strdup((char*)"");
- /* 3 */ check(!strcmp(s, ""));
- /* 4 */ mcheck(s, 1); ifree(s); showLeaks();
- write(1, "\n", 1);
- END
- #endif
- #ifdef TEST_CALLOC
- title("ft_calloc\t: ")
- void * p = ft_calloc(2, 2);
- char e[] = {0, 0, 0, 0};
- /* 1 */ check(!memcmp(p, e, 4));
- /* 2 */ mcheck(p, 4); ifree(p); showLeaks();
- write(1, "\n", 1);
- #endif // define
- #ifdef TEST_BZERO
- BEGIN
- title("ft_bzero\t: ")
- char tab[100];
- ft_memset(tab, 'A', 100);
- ft_bzero(tab, 0);
- /* 1 */ check(tab[0] == 'A'); showLeaks();
- ft_bzero(tab, 42);
- int i = 0;
- for (; i < 100 && tab[i] == 0; ++i)
- ;
- /* 2 */ check(i == 42 && tab[42] == 'A'); showLeaks();
- ft_memset(tab, 'A', 100); tab[0] = 0;
- ft_bzero(tab, 42);
- i = 0;
- for (; i < 100 && tab[i] == 0; ++i)
- ;
- /* 3 */ check(i == 42); showLeaks();
- write(1, "\n", 1);
- END
- #endif
- BEGIN
- title("ft_memset\t: ")
- char tab[100];
- memset(tab, 0, 100);
- ft_memset(tab, 'A', 0);
- check(tab[0] == 0); showLeaks();
- ft_memset(tab, 'A', 42);
- int i = 0;
- for (; i < 100 && tab[i] == 'A'; ++i)
- ;
- check(i == 42 && tab[42] == 0); showLeaks();
- char buffer[10];
- ft_memset( buffer, '=', 10 );
- buffer[9] = '\0';
- puts( buffer );
- write(1, "\n", 1);
- END
- BEGIN
- signal(SIGSEGV, sigsegv);
- title("ft_strlen\t: ")
- /* 1 */ check(ft_strlen("123") == 3); showLeaks();
- /* 2 */ check(ft_strlen("") == 0); showLeaks();
- write(1, "\n", 1);
- END
- BEGIN
- title("ft_memchr\t: ")
- char s[] = {0, 1, 2 ,3 ,4 ,5};
- /* 1 */ check(ft_memchr(s, 0, 0) == NULL); showLeaks();
- /* 2 */ check(ft_memchr(s, 0, 1) == s); showLeaks();
- /* 3 */ check(ft_memchr(s, 2, 3) == s + 2); showLeaks();
- /* 4 */ check(ft_memchr(s, 6, 6) == NULL); showLeaks();
- /* 5 */ check(ft_memchr(s, 2 + 256, 3) == s + 2); showLeaks(); //Cast check
- write(1, "\n", 1);
- char buffer[80];
- char* where;
- strcpy( buffer, "video x-rays" );
- where = (char *) ft_memchr( buffer, 'x', 6 );
- if( where == NULL ) {
- printf( "'x' not found\n" );
- } else {
- printf( "%s\n", where );
- }
- where = (char *) ft_memchr( buffer, 'x', 9 );
- if( where == NULL ) {
- printf( "'r' not found\n" );
- } else {
- printf( "%s\n", where );
- }
- END
- BEGIN
- title("ft_memcmp\t: ")
- char buffer[80];
- int retval;
- strcpy( buffer, "hello" );
- retval = ft_memcmp( buffer, "hello", 5 );
- if( retval < 0 ) {
- printf( "Less than\n" );
- } else if( retval == 0 ) {
- printf( "Equal to\n");
- } else {
- printf( "Greater than\n");
- }
- char s[] = {-128, 0, 127, 0};
- char sCpy[] = {-128, 0, 127, 0};
- char s2[] = {0, 0, 127, 0};
- char s3[] = {0, 0, 42, 0};
- /* 1 */ check(!ft_memcmp(s, sCpy, 4)); showLeaks();
- /* 2 */ check(!ft_memcmp(s, s2, 0)); showLeaks();
- /* 3 */ check(ft_memcmp(s, s2, 1) > 0); showLeaks();
- /* 4 */ check(ft_memcmp(s2, s, 1) < 0); showLeaks();
- /* 5 */ check(ft_memcmp(s2, s3, 4) != 0); showLeaks();
- write(1, "\n", 1);
- END
- BEGIN
- title("ft_memcpy\t: ")
- char dest[100];
- memset(dest, 'A', 100);
- ft_memcpy(dest, "coucou", 0);
- /* 1 */ check(dest[0] == 'A'); showLeaks();
- char src[] = {0, 0};
- ft_memcpy(dest, src, 2);
- int i = 0;
- for (; i < 100 && dest[i] == 0; ++i)
- ;
- /* 2 */ check(i == 2 && dest[2] == 'A'); showLeaks();
- write(1, "\n", 1);
- END
- BEGIN
- title("ft_memmove\t: ")
- char s[] = {65, 66, 67, 68, 69, 0, 45};
- char s0[] = { 0, 0, 0, 0, 0, 0, 0};
- char sCpy[] = {65, 66, 67, 68, 69, 0, 45};
- char sResult[] = {67, 68, 67, 68, 69, 0, 45};
- char sResult2[] = {67, 67, 68, 68, 69, 0, 45};
- /* 1 */ check(ft_memmove(s0, s, 7) == s0 && !memcmp(s, s0, 7)); showLeaks(); //Post 0
- /* 2 */ check(ft_memmove(s, s + 2, 0) && !memcmp(s, sCpy, 7)); showLeaks(); //0 move
- /* 3 */ check(ft_memmove(s, s + 2, 2) == s && !memcmp(s, sResult, 7)); showLeaks(); //forward
- /* 4 */ check(ft_memmove(sResult + 1, sResult, 2) == sResult + 1 && !memcmp(sResult, sResult2, 7)); showLeaks(); //reverse
- write(1, "\n", 1);
- char buffer[80];
- strcpy( buffer, "World");
- ft_memmove( buffer+1, buffer, 79 );
- printf ("%s\n", buffer);
- END
- BEGIN
- title("ft_strchr\t: ")
- char s[] = "tripouille";
- /* 1 */ check(ft_strchr(s, 't') == s); showLeaks();
- /* 2 */ check(ft_strchr(s, 'l') == s + 7); showLeaks();
- /* 3 */ check(ft_strchr(s, 'z') == 0); showLeaks();
- /* 4 */ check(ft_strchr(s, 0) == s + strlen(s)); showLeaks();
- /* 5 */ check(ft_strchr(s, 't' + 256) == s); showLeaks();
- write(1, "\n", 1);
- char buffer[80];
- char* where;
- strcpy( buffer, "video x-rays" );
- where = ft_strchr( buffer, 'x' );
- if( where == NULL ) {
- printf( "'x' not found\n" );
- } else {
- printf( "'x' found: %s\n", where );
- }
- END
- BEGIN
- title("ft_strrchr\t: ")
- char s[] = "tripouille";
- char s2[] = "ltripouiel";
- /* 1 */ check(ft_strrchr(s, 't') == s); showLeaks();
- /* 2 */ check(ft_strrchr(s, 'l') == s + 8); showLeaks();
- /* 3 */ check(ft_strrchr(s2, 'l') == s2 + 9); showLeaks();
- /* 4 */ check(ft_strrchr(s, 'z') == NULL); showLeaks();
- /* 5 */ check(ft_strrchr(s, 0) == s + strlen(s)); showLeaks();
- /* 6 */ check(ft_strrchr(s, 't' + 256) == s); showLeaks();
- char * empty = (char*)calloc(1, 1);
- /* 7 aperez-b */ check(ft_strrchr(empty, 'V') == NULL); free(empty); showLeaks();
- write(1, "\n", 1);
- printf( "%s\n", ft_strrchr( "abcdeabcde", 'a' ) );
- if( ft_strrchr( "abcdeabcde", 'x' ) == NULL )
- printf( "NULL\n" );
- END
- BEGIN
- title("ft_strnstr\t: ")
- char haystack[30] = "aaabcabcd";
- char needle[10] = "aabc";
- char * empty = (char*)"";
- check(ft_strnstr(haystack, needle, 0) == 0); showLeaks();
- check(ft_strnstr(haystack, needle, -1) == haystack + 1); showLeaks();
- check(ft_strnstr(haystack, "a", -1) == haystack); showLeaks();
- check(ft_strnstr(haystack, "c", -1) == haystack + 4); showLeaks();
- check(ft_strnstr(empty, "", -1) == empty); showLeaks();
- check(ft_strnstr(empty, "", 0) == empty); showLeaks();
- check(ft_strnstr(empty, "coucou", -1) == 0); showLeaks();
- check(ft_strnstr(haystack, "aaabc", 5) == haystack); showLeaks();
- check(ft_strnstr(empty, "12345", 5) == 0); showLeaks();
- check(ft_strnstr(haystack, "abcd", 9) == haystack + 5); showLeaks();
- check(ft_strnstr(haystack, "cd", 8) == NULL); showLeaks();
- check(ft_strnstr(haystack, "a", 1) == haystack); showLeaks();
- check(ft_strnstr("1", "a", 1) == NULL); showLeaks();
- check(ft_strnstr("22", "b", 2) == NULL); showLeaks();
- write(1, "\n", 1);
- char *searchingFor = "comes";
- char *in = "la da\ndoo a da\nnow here comes the stack\nok there it was.\n";
- printf("found: %s\n", ft_strnstr(in, searchingFor, ft_strlen(in)) ? "yes" : "no");
- END
- BEGIN
- title("ft_strncmp\t: ")
- /* 1 */ check(ft_strncmp("t", "", 0) == 0); showLeaks();
- /* 2 */ check(ft_strncmp("1234", "1235", 3) == 0); showLeaks();
- /* 3 */ check(ft_strncmp("1234", "1235", 4) < 0); showLeaks();
- /* 4 */ check(ft_strncmp("1234", "1235", -1) < 0); showLeaks();
- /* 5 */ check(ft_strncmp("", "", 42) == 0); showLeaks();
- /* 6 */ check(ft_strncmp("Tripouille", "Tripouille", 42) == 0); showLeaks();
- /* 7 */ check(ft_strncmp("Tripouille", "tripouille", 42) < 0); showLeaks();
- /* 8 */ check(ft_strncmp("Tripouille", "TriPouille", 42) > 0); showLeaks();
- /* 9 */ check(ft_strncmp("Tripouille", "TripouillE", 42) > 0); showLeaks();
- /* 10 */ check(ft_strncmp("Tripouille", "TripouilleX", 42) < 0); showLeaks();
- /* 11 */ check(ft_strncmp("Tripouille", "Tripouill", 42) > 0); showLeaks();
- /* 12 */ check(ft_strncmp("", "1", 0) == 0); showLeaks();
- /* 13 */ check(ft_strncmp("1", "", 0) == 0); showLeaks();
- /* 14 */ check(ft_strncmp("", "1", 1) < 0); showLeaks();
- /* 15 */ check(ft_strncmp("1", "", 1) > 0); showLeaks();
- /* 16 */ check(ft_strncmp("", "", 1) == 0); showLeaks();
- write(1, "\n", 1);
- char str1[15];
- char str2[15];
- int ret;
- strcpy(str1, "ABCDEF");
- strcpy(str2, "ABCDEF");
- ret = ft_strncmp(str1, str2, 4);
- if(ret < 0)
- {
- printf("str1 is less than str2 \n");
- } else
- if(ret > 0)
- {
- printf("str2 is less than str1 \n");
- } else {
- printf("str1 is equal to str2 \n");
- }
- END
- BEGIN
- title("ft_strlcat\t: ")
- char dest[30]; memset(dest, 0, 30);
- char * src = (char *)"AAAAAAAAA";
- dest[0] = 'B';
- /* 1 */ check(ft_strlcat(dest, src, 0) == strlen(src) && !strcmp(dest, "B")); showLeaks();
- dest[0] = 'B';
- /* 2 */ check(ft_strlcat(dest, src, 1) == 10 && !strcmp(dest, "B")); showLeaks();
- memset(dest, 'B', 4);
- /* 3 */ check(ft_strlcat(dest, src, 3) == 3 + strlen(src) && !strcmp(dest, "BBBB")); showLeaks();
- /* 4 */ check(ft_strlcat(dest, src, 6) == 13 && !strcmp(dest, "BBBBA")); showLeaks();
- memset(dest, 'C', 5);
- /* 5 */ check(ft_strlcat(dest, src, -1) == 14 && !strcmp(dest, "CCCCCAAAAAAAAA")); showLeaks();
- memset(dest, 'C', 15);
- /* 6 */ check(ft_strlcat(dest, src, 17) == 24 && !strcmp(dest, "CCCCCCCCCCCCCCCA")); showLeaks();
- memset(dest, 0, 30);
- /* 7 */ check(ft_strlcat(dest, src, 1) == strlen(src) && !strcmp(dest, "")); showLeaks();
- memset(dest, 0, 30); memset(dest, '1', 10);
- /* 8 */ check(ft_strlcat(dest, src, 5) == strlen(src) + 5 && !strcmp(dest, "1111111111")); showLeaks();
- memset(dest, 0, 30); memset(dest, '1', 10);
- /* 9 */ check(ft_strlcat(dest, src, 5) == strlen(src) + 5 && !strcmp(dest, "1111111111")); showLeaks();
- memset(dest, 0, 30); memset(dest, '1', 10);
- /* 10 */ check(ft_strlcat(dest, "", 15) == 10 && !strcmp(dest, "1111111111")); showLeaks();
- memset(dest, 0, 30);
- /* 11 */ check(ft_strlcat(dest, "", 42) == 0 && !strcmp(dest, "")); showLeaks();
- memset(dest, 0, 30);
- /* 12 */ check(ft_strlcat(dest, "", 0) == 0 && !strcmp(dest, "")); showLeaks();
- memset(dest, 0, 30);
- /* 13 */ check(ft_strlcat(dest, "123", 1) == 3 && !strcmp(dest, "")); showLeaks();
- memset(dest, 0, 30);
- /* 14 */ check(ft_strlcat(dest, "123", 2) == 3 && !strcmp(dest, "1")); showLeaks();
- memset(dest, 0, 30);
- /* 15 */ check(ft_strlcat(dest, "123", 3) == 3 && !strcmp(dest, "12")); showLeaks();
- memset(dest, 0, 30);
- /* 16 */ check(ft_strlcat(dest, "123", 4) == 3 && !strcmp(dest, "123")); showLeaks();
- memset(dest, 0, 30);
- /* 17 */ check(ft_strlcat(dest, "123", 0) == 3 && !strcmp(dest, "")); showLeaks();
- write(1, "\n", 1);
- END
- BEGIN
- title("ft_strlcpy\t: ")
- char src[] = "coucou";
- char dest[10]; memset(dest, 'A', 10);
- /* 1 */ check(ft_strlcpy(dest, src, 0) == strlen(src) && dest[0] == 'A'); showLeaks();
- /* 2 */ check(ft_strlcpy(dest, src, 1) == strlen(src) && dest[0] == 0 && dest[1] == 'A'); showLeaks();
- /* 3 */ check(ft_strlcpy(dest, src, 2) == strlen(src) && dest[0] == 'c' && dest[1] == 0 && dest[2] == 'A'); showLeaks();
- /* 4 */ check(ft_strlcpy(dest, src, -1) == strlen(src) && !strcmp(src, dest) && dest[strlen(src) + 1] == 'A'); showLeaks(); memset(dest, 'A', 10);
- /* 5 */ check(ft_strlcpy(dest, src, 6) == strlen(src) && !memcmp(src, dest, 5) && dest[5] == 0); showLeaks(); memset(dest, 'A', 10);
- /* 6 */ check(ft_strlcpy(dest, src, 7) == strlen(src) && !memcmp(src, dest, 7)); showLeaks(); memset(dest, 'A', 10);
- /* 7 */ check(ft_strlcpy(dest, src, 8) == strlen(src) && !memcmp(src, dest, 7)); showLeaks(); memset(dest, 'A', 10);
- /* 8 */ check(ft_strlcpy(dest, "", 42) == 0 && !memcmp("", dest, 1)); showLeaks(); memset(dest, 0, 10);
- /* 9 */ check(ft_strlcpy(dest, "1", 0) == 1 && dest[0] == 0); showLeaks(); memset(dest, 'A', 10);
- write(1, "\n", 1);
- END
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment