/* * Test that our strncasecmp() and strcasecmp() * give results matching the system versions. * * Dan Cross */ #include #include #include #include #include "myunit.h" int myu_ntests = 0; /* Be explicit about initialization. */ int myu_nfailed = 0; #define strncasecmp mystrncasecmp #define strcasecmp mystrcasecmp extern int mystrncasecmp(const char *, const char *, size_t); extern int mystrcasecmp(const char *, const char *); #include "strncasecmp.c" #undef strncasecmp #undef strcasecmp int test_strncasecmp(const char *a, const char *b, size_t l) { int m, s; s = strncasecmp(a, b, l); m = mystrncasecmp(a, b, l); myuassert((s == 0 && m == 0) || (s < 0 && m < 0) || (s > 0 && m > 0), "differ: a = \"%s\", b = \"%s\", l = %d, s = %d, m = %d.\n", a, b, l, s, m); return(0); } int test_strcasecmp(const char *a, const char *b) { int m, s; s = strcasecmp(a, b); m = mystrcasecmp(a, b); myuassert((s == 0 && m == 0) || (s < 0 && m < 0) || (s > 0 && m > 0), "differ: a = \"%s\", b = \"%s\", s = %d, m = %d.\n", a, b, s, m); return(0); } #define test1(a, b, l) myuruntest(test_strncasecmp, a, b, l) #define test2(a, b) myuruntest(test_strcasecmp, a, b) int main(int argc, char *argv[]) { myuinit(); test1("this is a test", "THIS IS A TEST", strlen("this is a test")); test1("this is a test", "THIS IS A TEST", 64); test1("this is a test", "this is a test", 64); test1("this is a test", "THIS IS A TEST", 4); test1("this is a test", "THIS----A TEST", 3); test1("this is a test", "THIS----A TEST", 4); test1("this is a test", "THIS----A TEST", 5); test1("this is a test", "THIS----A TEST", 6); test1("", "", 0); test1("a", "", 1); test1("", "a", 1); test2("this is a test", "THIS IS A TEST"); test2("this is a test", "this is a test"); test2("this is a test", "THIS----A TEST"); test2("this is a test", "THIS is still A TEST"); test2("this is a test", "THIS IS A TEST THAT IS LONG"); test2("this is a test", "ThIs"); test2("", ""); test2("a", ""); test2("", "a"); myureport("strcasecmp"); return(EXIT_SUCCESS); }