Line data Source code
1 : /* Test of case-insensitive string comparison function.
2 : Copyright (C) 2007-2020 Free Software Foundation, Inc.
3 :
4 : This program is free software: you can redistribute it and/or modify
5 : it under the terms of the GNU General Public License as published by
6 : the Free Software Foundation; either version 3 of the License, or
7 : (at your option) any later version.
8 :
9 : This program is distributed in the hope that it will be useful,
10 : but WITHOUT ANY WARRANTY; without even the implied warranty of
11 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 : GNU General Public License for more details.
13 :
14 : You should have received a copy of the GNU General Public License
15 : along with this program. If not, see <https://www.gnu.org/licenses/>. */
16 :
17 : /* Written by Bruno Haible <bruno@clisp.org>, 2007. */
18 :
19 : #include <config.h>
20 :
21 : #include "c-strcase.h"
22 : #include "c-ctype.h"
23 :
24 : #include <locale.h>
25 : #include <string.h>
26 :
27 : #include "macros.h"
28 :
29 : int
30 1 : main (int argc, char *argv[])
31 : {
32 1 : if (argc > 1)
33 : {
34 : /* configure should already have checked that the locale is supported. */
35 0 : if (setlocale (LC_ALL, "") == NULL)
36 0 : return 1;
37 : }
38 :
39 1 : ASSERT (c_strcasecmp ("paragraph", "Paragraph") == 0);
40 :
41 1 : ASSERT (c_strcasecmp ("paragrapH", "parAgRaph") == 0);
42 :
43 1 : ASSERT (c_strcasecmp ("paragraph", "paraLyzed") < 0);
44 1 : ASSERT (c_strcasecmp ("paraLyzed", "paragraph") > 0);
45 :
46 1 : ASSERT (c_strcasecmp ("para", "paragraph") < 0);
47 1 : ASSERT (c_strcasecmp ("paragraph", "para") > 0);
48 :
49 : /* The following tests shows how c_strcasecmp() is different from
50 : strcasecmp(). */
51 :
52 1 : ASSERT (c_strcasecmp ("\311mile", "\351mile") < 0);
53 1 : ASSERT (c_strcasecmp ("\351mile", "\311mile") > 0);
54 :
55 : /* The following tests shows how c_strcasecmp() is different from
56 : mbscasecmp(). */
57 :
58 1 : ASSERT (c_strcasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R") > 0); /* özgür */
59 1 : ASSERT (c_strcasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r") < 0); /* özgür */
60 :
61 : #if C_CTYPE_ASCII
62 : /* This test shows how strings of different size cannot compare equal. */
63 1 : ASSERT (c_strcasecmp ("turkish", "TURK\304\260SH") < 0);
64 1 : ASSERT (c_strcasecmp ("TURK\304\260SH", "turkish") > 0);
65 : #endif
66 :
67 1 : return 0;
68 : }
|