mbrtoc16_test.c (290532) | mbrtoc16_test.c (291178) |
---|---|
1/*- 2 * Copyright (c) 2002 Tim J. Robbins 3 * All rights reserved. 4 * 5 * Copyright (c) 2013 Ed Schouten <ed@FreeBSD.org> 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 17 unchanged lines hidden (view full) --- 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29/* 30 * Test program for mbrtoc16() as specified by ISO/IEC 9899:2011. 31 */ 32 33#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2002 Tim J. Robbins 3 * All rights reserved. 4 * 5 * Copyright (c) 2013 Ed Schouten <ed@FreeBSD.org> 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 17 unchanged lines hidden (view full) --- 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29/* 30 * Test program for mbrtoc16() as specified by ISO/IEC 9899:2011. 31 */ 32 33#include <sys/cdefs.h> |
34__FBSDID("$FreeBSD: head/lib/libc/tests/locale/mbrtoc16_test.c 290532 2015-11-08 02:06:17Z ngie $"); | 34__FBSDID("$FreeBSD: stable/10/lib/libc/tests/locale/mbrtoc16_test.c 291178 2015-11-23 08:31:41Z ngie $"); |
35 36#include <errno.h> 37#include <limits.h> 38#include <locale.h> 39#include <stdio.h> 40#include <string.h> 41#include <uchar.h> 42 43#include <atf-c.h> 44 | 35 36#include <errno.h> 37#include <limits.h> 38#include <locale.h> 39#include <stdio.h> 40#include <string.h> 41#include <uchar.h> 42 43#include <atf-c.h> 44 |
45ATF_TC_WITHOUT_HEAD(mbrtoc16_test); 46ATF_TC_BODY(mbrtoc16_test, tc) | 45static void 46require_lc_ctype(const char *locale_name) |
47{ | 47{ |
48 mbstate_t s; 49 size_t len; 50 char16_t c16; | 48 char *lc_ctype_set; |
51 | 49 |
52 /* 53 * C/POSIX locale. 54 */ | 50 lc_ctype_set = setlocale(LC_CTYPE, locale_name); 51 if (lc_ctype_set == NULL) 52 atf_tc_fail("setlocale(LC_CTYPE, \"%s\") failed; errno=%d", 53 locale_name, errno); |
55 | 54 |
56 printf("1..1\n"); | 55 ATF_REQUIRE(strcmp(lc_ctype_set, locale_name) == 0); 56} |
57 | 57 |
58static mbstate_t s; 59static char16_t c16; 60 61ATF_TC_WITHOUT_HEAD(mbrtoc16_c_locale_test); 62ATF_TC_BODY(mbrtoc16_c_locale_test, tc) 63{ 64 65 require_lc_ctype("C"); 66 |
|
58 /* Null wide character, internal state. */ 59 ATF_REQUIRE(mbrtoc16(&c16, "", 1, NULL) == 0); 60 ATF_REQUIRE(c16 == 0); 61 62 /* Null wide character. */ 63 memset(&s, 0, sizeof(s)); 64 ATF_REQUIRE(mbrtoc16(&c16, "", 1, &s) == 0); 65 ATF_REQUIRE(c16 == 0); --- 22 unchanged lines hidden (view full) --- 88 89 /* Check that mbrtoc16() doesn't read ahead too aggressively. */ 90 memset(&s, 0, sizeof(s)); 91 ATF_REQUIRE(mbrtoc16(&c16, "AB", 2, &s) == 1); 92 ATF_REQUIRE(c16 == L'A'); 93 ATF_REQUIRE(mbrtoc16(&c16, "C", 1, &s) == 1); 94 ATF_REQUIRE(c16 == L'C'); 95 | 67 /* Null wide character, internal state. */ 68 ATF_REQUIRE(mbrtoc16(&c16, "", 1, NULL) == 0); 69 ATF_REQUIRE(c16 == 0); 70 71 /* Null wide character. */ 72 memset(&s, 0, sizeof(s)); 73 ATF_REQUIRE(mbrtoc16(&c16, "", 1, &s) == 0); 74 ATF_REQUIRE(c16 == 0); --- 22 unchanged lines hidden (view full) --- 97 98 /* Check that mbrtoc16() doesn't read ahead too aggressively. */ 99 memset(&s, 0, sizeof(s)); 100 ATF_REQUIRE(mbrtoc16(&c16, "AB", 2, &s) == 1); 101 ATF_REQUIRE(c16 == L'A'); 102 ATF_REQUIRE(mbrtoc16(&c16, "C", 1, &s) == 1); 103 ATF_REQUIRE(c16 == L'C'); 104 |
96 /* 97 * ISO-8859-1. 98 */ | 105} |
99 | 106 |
100 ATF_REQUIRE(strcmp(setlocale(LC_CTYPE, "en_US.ISO8859-1"), 101 "en_US.ISO8859-1") == 0); | 107ATF_TC_WITHOUT_HEAD(mbrtoc16_iso_8859_1_test); 108ATF_TC_BODY(mbrtoc16_iso_8859_1_test, tc) 109{ |
102 | 110 |
111 require_lc_ctype("en_US.ISO8859-1"); 112 |
|
103 /* Currency sign. */ 104 memset(&s, 0, sizeof(s)); 105 ATF_REQUIRE(mbrtoc16(&c16, "\xa4", 1, &s) == 1); 106 ATF_REQUIRE(c16 == 0xa4); | 113 /* Currency sign. */ 114 memset(&s, 0, sizeof(s)); 115 ATF_REQUIRE(mbrtoc16(&c16, "\xa4", 1, &s) == 1); 116 ATF_REQUIRE(c16 == 0xa4); |
117} |
|
107 | 118 |
108 /* 109 * ISO-8859-15. 110 */ | 119ATF_TC_WITHOUT_HEAD(mbrtoc16_iso_8859_15_test); 120ATF_TC_BODY(mbrtoc16_iso_8859_15_test, tc) 121{ |
111 | 122 |
112 ATF_REQUIRE(strcmp(setlocale(LC_CTYPE, "en_US.ISO8859-15"), 113 "en_US.ISO8859-15") == 0); | 123 require_lc_ctype("en_US.ISO8859-15"); |
114 115 /* Euro sign. */ 116 memset(&s, 0, sizeof(s)); 117 ATF_REQUIRE(mbrtoc16(&c16, "\xa4", 1, &s) == 1); 118 ATF_REQUIRE(c16 == 0x20ac); | 124 125 /* Euro sign. */ 126 memset(&s, 0, sizeof(s)); 127 ATF_REQUIRE(mbrtoc16(&c16, "\xa4", 1, &s) == 1); 128 ATF_REQUIRE(c16 == 0x20ac); |
129} |
|
119 | 130 |
120 /* 121 * UTF-8. 122 */ | 131ATF_TC_WITHOUT_HEAD(mbrtoc16_utf_8_test); 132ATF_TC_BODY(mbrtoc16_utf_8_test, tc) 133{ |
123 | 134 |
124 ATF_REQUIRE(strcmp(setlocale(LC_CTYPE, "en_US.UTF-8"), "en_US.UTF-8") == 0); | 135 require_lc_ctype("en_US.UTF-8"); |
125 126 /* Null wide character, internal state. */ 127 ATF_REQUIRE(mbrtoc16(NULL, 0, 0, NULL) == 0); 128 ATF_REQUIRE(mbrtoc16(&c16, "", 1, NULL) == 0); 129 ATF_REQUIRE(c16 == 0); 130 131 /* Null wide character. */ 132 memset(&s, 0, sizeof(s)); --- 56 unchanged lines hidden (view full) --- 189 ATF_REQUIRE(c16 == 0x65); 190 ATF_REQUIRE(mbrtoc16(&c16, "\xcc\x81", 2, &s) == 2); 191 ATF_REQUIRE(c16 == 0x301); 192} 193 194ATF_TP_ADD_TCS(tp) 195{ 196 | 136 137 /* Null wide character, internal state. */ 138 ATF_REQUIRE(mbrtoc16(NULL, 0, 0, NULL) == 0); 139 ATF_REQUIRE(mbrtoc16(&c16, "", 1, NULL) == 0); 140 ATF_REQUIRE(c16 == 0); 141 142 /* Null wide character. */ 143 memset(&s, 0, sizeof(s)); --- 56 unchanged lines hidden (view full) --- 200 ATF_REQUIRE(c16 == 0x65); 201 ATF_REQUIRE(mbrtoc16(&c16, "\xcc\x81", 2, &s) == 2); 202 ATF_REQUIRE(c16 == 0x301); 203} 204 205ATF_TP_ADD_TCS(tp) 206{ 207 |
197 ATF_TP_ADD_TC(tp, mbrtoc16_test); | 208 ATF_TP_ADD_TC(tp, mbrtoc16_c_locale_test); 209 ATF_TP_ADD_TC(tp, mbrtoc16_iso_8859_1_test); 210 ATF_TP_ADD_TC(tp, mbrtoc16_iso_8859_15_test); 211 ATF_TP_ADD_TC(tp, mbrtoc16_utf_8_test); |
198 199 return (atf_no_error()); 200} | 212 213 return (atf_no_error()); 214} |