]> pd.if.org Git - pdclib/blob - functions/wchar/wcsncmp.c
7ca9a9823b2264df3270c098553dcbc8c6399e5d
[pdclib] / functions / wchar / wcsncmp.c
1 /* $Id$ */\r
2 \r
3 /* wcsncmp( const wchar_t *, const wchar_t *, size_t )\r
4 \r
5    This file is part of the Public Domain C Library (PDCLib).\r
6    Permission is granted to use, modify, and / or redistribute at will.\r
7 */\r
8 \r
9 #include <wchar.h>\r
10 \r
11 #ifndef REGTEST\r
12 \r
13 int wcsncmp( const wchar_t * s1, const wchar_t * s2, size_t n )\r
14 {\r
15     while ( *s1 && n && ( *s1 == *s2 ) )\r
16     {\r
17         ++s1;\r
18         ++s2;\r
19         --n;\r
20     }\r
21     if ( n == 0 )\r
22     {\r
23         return 0;\r
24     }\r
25     else\r
26     {\r
27         return ( *(wchar_t *)s1 - *(wchar_t *)s2 );\r
28     }\r
29 }\r
30 \r
31 #endif\r
32 \r
33 #ifdef TEST\r
34 #include <_PDCLIB_test.h>\r
35 \r
36 int main( void )\r
37 {\r
38     wchar_t cmpabcde[] = L"abcde\0f";\r
39     wchar_t cmpabcd_[] = L"abcde\xfc";\r
40     wchar_t empty[] = L"";\r
41     wchar_t x[] = L"x";\r
42     TESTCASE( wcsncmp( wabcde, cmpabcde, 5 ) == 0 );\r
43     TESTCASE( wcsncmp( wabcde, cmpabcde, 10 ) == 0 );\r
44     TESTCASE( wcsncmp( wabcde, wabcdx, 5 ) < 0 );\r
45     TESTCASE( wcsncmp( wabcdx, wabcde, 5 ) > 0 );\r
46     TESTCASE( wcsncmp( empty, wabcde, 5 ) < 0 );\r
47     TESTCASE( wcsncmp( wabcde, empty, 5 ) > 0 );\r
48     TESTCASE( wcsncmp( wabcde, wabcdx, 4 ) == 0 );\r
49     TESTCASE( wcsncmp( wabcde, x, 0 ) == 0 );\r
50     TESTCASE( wcsncmp( wabcde, x, 1 ) < 0 );\r
51     TESTCASE( wcsncmp( wabcde, cmpabcd_, 10 ) < 0 );\r
52     return TEST_RESULTS;\r
53 }\r
54 #endif\r