Mercurial > hg > octave-shane > gnulib-hg
annotate tests/unistr/test-u32-to-u16.c @ 16201:8250f2777afc
maint: update all copyright year number ranges
Run "make update-copyright".
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Sun, 01 Jan 2012 10:04:58 +0100 |
parents | 97fc9a21a8fb |
children | e542fd46ad6f |
rev | line source |
---|---|
12635
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1 /* Test of u32_to_u16() function. |
16201
8250f2777afc
maint: update all copyright year number ranges
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
2 Copyright (C) 2010-2012 Free Software Foundation, Inc. |
12635
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
3 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
4 This program is free software: you can redistribute it and/or modify |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
6 the Free Software Foundation; either version 3 of the License, or |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
7 (at your option) any later version. |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
8 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
12 GNU General Public License for more details. |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
13 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
16 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
17 /* Written by Bruno Haible <bruno@clisp.org>, 2010. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
18 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
19 #include <config.h> |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
20 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
21 #include "unistr.h" |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
22 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
23 #include <errno.h> |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
24 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
25 #include "macros.h" |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
26 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
27 static int |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
28 check (const uint32_t *input, size_t input_length, |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
29 const uint16_t *expected, size_t expected_length) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
30 { |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
31 size_t length; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
32 uint16_t *result; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
33 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
34 /* Test return conventions with resultbuf == NULL. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
35 result = u32_to_u16 (input, input_length, NULL, &length); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
36 if (!(result != NULL)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
37 return 1; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
38 if (!(length == expected_length)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
39 return 2; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
40 if (!(u16_cmp (result, expected, expected_length) == 0)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
41 return 3; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
42 free (result); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
43 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
44 /* Test return conventions with resultbuf too small. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
45 if (expected_length > 0) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
46 { |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
47 uint16_t *preallocated; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
48 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
49 length = expected_length - 1; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
50 preallocated = (uint16_t *) malloc (length * sizeof (uint16_t)); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
51 result = u32_to_u16 (input, input_length, preallocated, &length); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
52 if (!(result != NULL)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
53 return 4; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
54 if (!(result != preallocated)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
55 return 5; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
56 if (!(length == expected_length)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
57 return 6; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
58 if (!(u16_cmp (result, expected, expected_length) == 0)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
59 return 7; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
60 free (result); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
61 free (preallocated); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
62 } |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
63 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
64 /* Test return conventions with resultbuf large enough. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
65 { |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
66 uint16_t *preallocated; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
67 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
68 length = expected_length; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
69 preallocated = (uint16_t *) malloc (length * sizeof (uint16_t)); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
70 result = u32_to_u16 (input, input_length, preallocated, &length); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
71 if (!(result != NULL)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
72 return 8; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
73 if (!(preallocated == NULL || result == preallocated)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
74 return 9; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
75 if (!(length == expected_length)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
76 return 10; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
77 if (!(u16_cmp (result, expected, expected_length) == 0)) |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
78 return 11; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
79 free (preallocated); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
80 } |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
81 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
82 return 0; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
83 } |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
84 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
85 int |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
86 main () |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
87 { |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
88 /* Empty string. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
89 ASSERT (check (NULL, 0, NULL, 0) == 0); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
90 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
91 /* Simple string. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
92 { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
93 static const uint32_t input[] = |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
94 { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
95 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443, |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
96 0x0439, 0x0442, 0x0435, '!', ' ', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
97 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2, |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
98 '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
99 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n' |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
100 }; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
101 static const uint16_t expected[] = |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
102 { 'G', 'r', 0x00FC, 0x00DF, ' ', 'G', 'o', 't', 't', '.', ' ', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
103 0x0417, 0x0434, 0x0440, 0x0430, 0x0432, 0x0441, 0x0442, 0x0432, 0x0443, |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
104 0x0439, 0x0442, 0x0435, '!', ' ', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
105 'x', '=', '(', '-', 'b', 0x00B1, 's', 'q', 'r', 't', '(', 'b', 0x00B2, |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
106 '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', ' ', ' ', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
107 0x65E5, 0x672C, 0x8A9E, ',', 0x4E2D, 0x6587, ',', 0xD55C, 0xAE00, '\n' |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
108 }; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
109 ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
110 } |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
111 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
112 /* String with characters outside the BMP. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
113 { |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
114 static const uint32_t input[] = |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
115 { '-', '(', 0x1D51E, 0x00D7, 0x1D51F, ')', '=', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
116 0x1D51F, 0x00D7, 0x1D51E |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
117 }; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
118 static const uint16_t expected[] = |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
119 { '-', '(', 0xD835, 0xDD1E, 0x00D7, 0xD835, 0xDD1F, ')', '=', |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
120 0xD835, 0xDD1F, 0x00D7, 0xD835, 0xDD1E |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
121 }; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
122 ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
123 } |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
124 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
125 /* Invalid input. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
126 { |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
127 static const uint32_t input[] = { 'x', 0x340000, 0x50000000, 'y' }; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
128 #if 0 /* Currently invalid input is rejected, not accommodated. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
129 static const uint16_t expected[] = { 'x', 0xFFFD, 0xFFFD, 'y' }; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
130 ASSERT (check (input, SIZEOF (input), expected, SIZEOF (expected)) == 0); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
131 #else |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
132 size_t length; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
133 uint16_t *result; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
134 uint16_t preallocated[10]; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
135 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
136 /* Test return conventions with resultbuf == NULL. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
137 result = u32_to_u16 (input, SIZEOF (input), NULL, &length); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
138 ASSERT (result == NULL); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
139 ASSERT (errno == EILSEQ); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
140 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
141 /* Test return conventions with resultbuf too small. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
142 length = 1; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
143 result = u32_to_u16 (input, SIZEOF (input), preallocated, &length); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
144 ASSERT (result == NULL); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
145 ASSERT (errno == EILSEQ); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
146 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
147 /* Test return conventions with resultbuf large enough. */ |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
148 length = SIZEOF (preallocated); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
149 result = u32_to_u16 (input, SIZEOF (input), preallocated, &length); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
150 ASSERT (result == NULL); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
151 ASSERT (errno == EILSEQ); |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
152 #endif |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
153 } |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
154 |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
155 return 0; |
3e8b2b389d37
Tests for module 'unistr/u32-to-u16'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
156 } |