Update Red Hat Copyright Notices
[nbdkit.git] / common / include / test-ascii-string.c
blob821ee19ba27279cea6d1dec3e3255e237493208e
1 /* nbdkit
2 * Copyright Red Hat
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * * Neither the name of Red Hat nor the names of its contributors may be
16 * used to endorse or promote products derived from this software without
17 * specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
29 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
33 #include <config.h>
35 #include <stdio.h>
36 #include <stdlib.h>
37 #undef NDEBUG /* Keep test strong even for nbdkit built without assertions */
38 #include <assert.h>
40 #include "ascii-string.h"
42 int
43 main (void)
45 assert (ascii_strcasecmp ("", "") == 0);
46 assert (ascii_strcasecmp ("a", "a") == 0);
47 assert (ascii_strcasecmp ("abc", "abc") == 0);
48 assert (ascii_strcasecmp ("a", "b") < 0);
49 assert (ascii_strcasecmp ("b", "a") > 0);
50 assert (ascii_strcasecmp ("aa", "a") > 0);
52 /* Second string contains Turkish dotless lowercase letter ı. */
53 assert (ascii_strcasecmp ("hi", "hı") != 0);
55 /* Check that we got our rounding behaviour correct. */
56 assert (ascii_strcasecmp ("\x1", "\x7f") < 0);
57 assert (ascii_strcasecmp ("\x1", "\x80") < 0);
58 assert (ascii_strcasecmp ("\x1", "\x81") < 0);
59 assert (ascii_strcasecmp ("\x1", "\xff") < 0);
61 assert (ascii_strncasecmp ("", "", 0) == 0);
62 assert (ascii_strncasecmp ("a", "a", 1) == 0);
63 assert (ascii_strncasecmp ("abc", "abc", 3) == 0);
64 assert (ascii_strncasecmp ("abc", "def", 0) == 0);
65 assert (ascii_strncasecmp ("abc", "abd", 2) == 0);
66 assert (ascii_strncasecmp ("a", "b", 1) < 0);
67 assert (ascii_strncasecmp ("b", "a", 1) > 0);
68 assert (ascii_strncasecmp ("aa", "a", 2) > 0);
69 assert (ascii_strncasecmp ("aa", "a", 100) > 0);
71 assert (ascii_strncasecmp ("hi", "hı", 1) == 0);
72 assert (ascii_strncasecmp ("hi", "hı", 2) != 0);
74 assert (ascii_strncasecmp ("\x1", "\x7f", 1) < 0);
75 assert (ascii_strncasecmp ("\x1", "\x80", 1) < 0);
76 assert (ascii_strncasecmp ("\x1", "\x81", 1) < 0);
77 assert (ascii_strncasecmp ("\x1", "\xff", 1) < 0);
79 exit (EXIT_SUCCESS);