dat_wcswidth.c 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. /*
  2. * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
  3. *
  4. * FILE: dat_wcswidth.c
  5. *
  6. * WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n);
  7. */
  8. TST_WCSWIDTH tst_wcswidth_loc [] = {
  9. {
  10. { Twcswidth, TST_LOC_de },
  11. {
  12. { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0 }, /* 01 */
  13. /*expect*/ { 0,1,0 },
  14. },
  15. { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 1 }, /* 02 */
  16. /*expect*/ { 0,1,1 },
  17. },
  18. { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 2 }, /* 03 */
  19. /*expect*/ { 0,1,2 },
  20. },
  21. { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 3 }, /* 04 */
  22. /*expect*/ { 0,1,3 },
  23. },
  24. { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 4 }, /* 05 */
  25. /*expect*/ { 0,1,3 },
  26. },
  27. { /*input.*/ { { 0x0000 }, 1 }, /* 06 */
  28. /*expect*/ { 0,1,0 },
  29. },
  30. { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 07 */
  31. /*expect*/ { 0,1,-1 },
  32. },
  33. { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 1 }, /* 08 */
  34. /*expect*/ { 0,1,1 },
  35. },
  36. { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 09 */
  37. /*expect*/ { 0,1,-1 },
  38. },
  39. { /*input.*/ { { 0x00C1,0x0092,0x0000 }, 2 }, /* 10 */
  40. /*expect*/ { 0,1,-1 },
  41. },
  42. { /*input.*/ { { 0x00C1,0x0020,0x0000 }, 2 }, /* 11 */
  43. /*expect*/ { 0,1,2 },
  44. },
  45. { /*input.*/ { { 0x00C1,0x0021,0x0000 }, 2 }, /* 12 */
  46. /*expect*/ { 0,1,2 },
  47. },
  48. { /*input.*/ { { 0x00C1,0x007E,0x0000 }, 2 }, /* 13 */
  49. /*expect*/ { 0,1,2 },
  50. },
  51. { /*input.*/ { { 0x00C1,0x007F,0x0000 }, 2 }, /* 14 */
  52. /*expect*/ { 0,1,-1 },
  53. },
  54. { /*input.*/ { { 0x00C1,0x0080,0x0000 }, 2 }, /* 15 */
  55. /*expect*/ { 0,1,-1 },
  56. },
  57. { /*input.*/ { { 0x00C1,0x00A0,0x0000 }, 2 }, /* 16 */
  58. #ifdef SHOJI_IS_RIGHT
  59. /*expect*/ { 0,1,-1 },
  60. #else
  61. /*expect*/ { 0,1,2 },
  62. #endif
  63. },
  64. { /*input.*/ { { 0x00C1,0x00A1,0x0000 }, 2 }, /* 17 */
  65. /*expect*/ { 0,1,2 },
  66. },
  67. { /*input.*/ { { 0x00C1,0x00FF,0x0000 }, 2 }, /* 18 */
  68. /*expect*/ { 0,1,2 },
  69. },
  70. { /*input.*/ { { 0x00C1,0x3042,0x0000 }, 2 }, /* 19 */
  71. /*expect*/ { 0,1,-1 },
  72. },
  73. { /*input.*/ { { 0x00C1,0x3044,0x0000 }, 2 }, /* 20 */
  74. /*expect*/ { 0,1,-1 },
  75. },
  76. { .is_last = 1 }
  77. }
  78. },
  79. {
  80. { Twcswidth, TST_LOC_enUS },
  81. {
  82. { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 0 }, /* 01 */
  83. /*expect*/ { 0,1,0 },
  84. },
  85. { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 1 }, /* 02 */
  86. /*expect*/ { 0,1,1 },
  87. },
  88. { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 2 }, /* 03 */
  89. /*expect*/ { 0,1,2 },
  90. },
  91. #ifdef SHOJI_IS_RIGHT
  92. { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 3 }, /* 04 */
  93. /*expect*/ { 0,1,3 },
  94. },
  95. { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 4 }, /* 05 */
  96. /*expect*/ { 0,1,3 },
  97. },
  98. #else
  99. { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 3 }, /* 04 */
  100. /*expect*/ { 0,1,-1 },
  101. },
  102. { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 4 }, /* 05 */
  103. /*expect*/ { 0,1,3 },
  104. },
  105. #endif
  106. { /*input.*/ { { 0x0000 }, 1 }, /* 06 */
  107. /*expect*/ { 0,1,0 },
  108. },
  109. { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 07 */
  110. /*expect*/ { 0,1,-1 },
  111. },
  112. { /*input.*/ { { 0x0041,0x0001,0x0000 }, 1 }, /* 08 */
  113. /*expect*/ { 0,1,1 },
  114. },
  115. { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 09 */
  116. /*expect*/ { 0,1,-1 },
  117. },
  118. { /*input.*/ { { 0x0041,0x0092,0x0000 }, 2 }, /* 10 */
  119. /*expect*/ { 0,1,-1 },
  120. },
  121. { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 11 */
  122. /*expect*/ { 0,1,2 },
  123. },
  124. { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */
  125. /*expect*/ { 0,1,2 },
  126. },
  127. { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */
  128. /*expect*/ { 0,1,2 },
  129. },
  130. { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */
  131. /*expect*/ { 0,1,-1 },
  132. },
  133. { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */
  134. /*expect*/ { 0,1,-1 },
  135. },
  136. { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */
  137. /*expect*/ { 0,1,-1 },
  138. },
  139. #ifdef SHOJI_IS_RIGHT
  140. { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */
  141. /*expect*/ { 0,1,2 },
  142. },
  143. { /*input.*/ { { 0x0041,0x00FF,0x0000 }, 2 }, /* 18 */
  144. /*expect*/ { 0,1,2 },
  145. },
  146. #else
  147. { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 17 */
  148. /*expect*/ { 0,1,2 },
  149. },
  150. { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 18 */
  151. /*expect*/ { 0,1,2 },
  152. },
  153. #endif
  154. { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */
  155. /*expect*/ { 0,1,-1 },
  156. },
  157. { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */
  158. /*expect*/ { 0,1,-1 },
  159. },
  160. { .is_last = 1 }
  161. }
  162. },
  163. {
  164. #if 0
  165. { Twcswidth, TST_LOC_eucJP },
  166. #else
  167. { Twcswidth, TST_LOC_ja_UTF8 },
  168. #endif
  169. {
  170. { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0 }, /* 01 */
  171. /*expect*/ { 0,1,0 },
  172. },
  173. { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 1 }, /* 02 */
  174. /*expect*/ { 0,1,2 },
  175. },
  176. { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 2 }, /* 03 */
  177. /*expect*/ { 0,1,4 },
  178. },
  179. { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 3 }, /* 04 */
  180. /*expect*/ { 0,1,6 },
  181. },
  182. { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 4 }, /* 05 */
  183. /*expect*/ { 0,1,6 },
  184. },
  185. { /*input.*/ { { 0x0000 }, 1 }, /* 06 */
  186. /*expect*/ { 0,1,0 },
  187. },
  188. { /*input.*/ { { 0x008E,0x0001,0x0000 }, 2 }, /* 07 */
  189. /*expect*/ { 0,1,-1 },
  190. },
  191. { /*input.*/ { { 0x3041,0x008E,0x0000 }, 1 }, /* 08 */
  192. /*expect*/ { 0,1,2 },
  193. },
  194. { /*input.*/ { { 0x3041,0x008E,0x0000 }, 2 }, /* 09 */
  195. /*expect*/ { 0,1,-1 },
  196. },
  197. { /*input.*/ { { 0x3041,0x0001,0x0000 }, 2 }, /* 10 */
  198. /*expect*/ { 0,1,-1 },
  199. },
  200. { /*input.*/ { { 0x3041,0x3000,0x0000 }, 2 }, /* 11 */
  201. /*expect*/ { 0,1,4 },
  202. },
  203. { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */
  204. /*expect*/ { 0,1,2 },
  205. },
  206. { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */
  207. /*expect*/ { 0,1,2 },
  208. },
  209. { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */
  210. /*expect*/ { 0,1,-1 },
  211. },
  212. { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */
  213. /*expect*/ { 0,1,-1 },
  214. },
  215. #if 0
  216. { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */
  217. /*expect*/ { 0,1,-1 },
  218. },
  219. #ifdef NO_WAIVER
  220. /* <NO_WAIVER> */ /* returns 3 */
  221. { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */
  222. /*expect*/ { 0,1,-1 },
  223. },
  224. #else
  225. /* XXX U00A1 is valid -> /x8f/xa2/xc4 in JIS X 0212 */
  226. { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */
  227. /*expect*/ { 0,1,3 },
  228. },
  229. #endif
  230. #else
  231. /* XXX U00A0 i UTF8 is valid -> /xc2/xa0 */
  232. { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */
  233. /*expect*/ { 0,1,2 },
  234. },
  235. #ifdef NO_WAIVER
  236. /* <NO_WAIVER> */ /* returns 3 */
  237. { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */
  238. /*expect*/ { 0,1,-1 },
  239. },
  240. #else
  241. /* XXX U00A1 in UTF-8 is valid -> /xc2/xa1 */
  242. { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */
  243. /*expect*/ { 0,1,2 },
  244. },
  245. #endif
  246. #endif
  247. { /*input.*/ { { 0x0041,0xFF71,0x0000 }, 2 }, /* 18 */
  248. /*expect*/ { 0,1,2 },
  249. },
  250. { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */
  251. /*expect*/ { 0,1,3 },
  252. },
  253. { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */
  254. /*expect*/ { 0,1,3 },
  255. },
  256. { .is_last = 1 }
  257. }
  258. },
  259. {
  260. { Twcswidth, TST_LOC_end }
  261. }
  262. };