/opensource.apple.com/source/ICU/ICU-400.40/icuSources/test/intltest/strtest.cpp

# · C++ · 217 lines · 200 code · 8 blank · 9 comment · 7 complexity · 1540a2872eb1c27ea6ecf37148f47f77 MD5 · raw file

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <head>
  5. <title>strtest.cpp</title>
  6. <style type="text/css">
  7. .enscript-comment { font-style: italic; color: rgb(178,34,34); }
  8. .enscript-function-name { font-weight: bold; color: rgb(0,0,255); }
  9. .enscript-variable-name { font-weight: bold; color: rgb(184,134,11); }
  10. .enscript-keyword { font-weight: bold; color: rgb(160,32,240); }
  11. .enscript-reference { font-weight: bold; color: rgb(95,158,160); }
  12. .enscript-string { font-weight: bold; color: rgb(188,143,143); }
  13. .enscript-builtin { font-weight: bold; color: rgb(218,112,214); }
  14. .enscript-type { font-weight: bold; color: rgb(34,139,34); }
  15. .enscript-highlight { text-decoration: underline; color: 0; }
  16. </style>
  17. </head>
  18. <body id="top">
  19. <h1 style="margin:8px;" id="f1">strtest.cpp&nbsp;&nbsp;&nbsp;<span style="font-weight: normal; font-size: 0.5em;">[<a href="?txt">plain text</a>]</span></h1>
  20. <hr/>
  21. <div></div>
  22. <pre>
  23. <span class="enscript-comment">/********************************************************************
  24. * COPYRIGHT:
  25. * Copyright (c) 1997-2005, International Business Machines Corporation and
  26. * others. All Rights Reserved.
  27. ********************************************************************/</span>
  28. <span class="enscript-comment">/* file name: strtest.cpp
  29. * encoding: US-ASCII
  30. * tab size: 8 (not used)
  31. * indentation:4
  32. *
  33. * created on: 1999nov22
  34. * created by: Markus W. Scherer
  35. */</span>
  36. #<span class="enscript-reference">include</span> <span class="enscript-string">&quot;unicode/utypes.h&quot;</span>
  37. #<span class="enscript-reference">include</span> <span class="enscript-string">&quot;unicode/putil.h&quot;</span>
  38. #<span class="enscript-reference">include</span> <span class="enscript-string">&quot;intltest.h&quot;</span>
  39. #<span class="enscript-reference">include</span> <span class="enscript-string">&quot;strtest.h&quot;</span>
  40. #<span class="enscript-reference">include</span> <span class="enscript-string">&quot;unicode/ustring.h&quot;</span>
  41. #<span class="enscript-reference">if</span> <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">U_WINDOWS</span>) &amp;&amp; <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">_MSC_VER</span>)
  42. #<span class="enscript-reference">include</span> <span class="enscript-string">&lt;vector&gt;</span>
  43. using namespace std;
  44. #<span class="enscript-reference">endif</span>
  45. <span class="enscript-function-name">StringTest::~StringTest</span>() {}
  46. <span class="enscript-type">void</span> <span class="enscript-function-name">StringTest::TestEndian</span>(<span class="enscript-type">void</span>) {
  47. <span class="enscript-type">union</span> {
  48. uint8_t byte;
  49. uint16_t word;
  50. } u;
  51. u.word=0x0100;
  52. <span class="enscript-keyword">if</span>(U_IS_BIG_ENDIAN!=u.byte) {
  53. errln(<span class="enscript-string">&quot;TestEndian: U_IS_BIG_ENDIAN needs to be fixed in platform.h&quot;</span>);
  54. }
  55. }
  56. <span class="enscript-type">void</span> <span class="enscript-function-name">StringTest::TestSizeofTypes</span>(<span class="enscript-type">void</span>) {
  57. <span class="enscript-keyword">if</span>(U_SIZEOF_WCHAR_T!=<span class="enscript-keyword">sizeof</span>(wchar_t)) {
  58. errln(<span class="enscript-string">&quot;TestSizeofWCharT: U_SIZEOF_WCHAR_T!=sizeof(wchar_t) - U_SIZEOF_WCHAR_T needs to be fixed in platform.h&quot;</span>);
  59. }
  60. #<span class="enscript-reference">ifdef</span> <span class="enscript-variable-name">U_INT64_T_UNAVAILABLE</span>
  61. errln(<span class="enscript-string">&quot;int64_t and uint64_t are undefined.&quot;</span>);
  62. #<span class="enscript-reference">else</span>
  63. <span class="enscript-keyword">if</span>(8!=<span class="enscript-keyword">sizeof</span>(int64_t)) {
  64. errln(<span class="enscript-string">&quot;TestSizeofTypes: 8!=sizeof(int64_t) - int64_t needs to be fixed in platform.h&quot;</span>);
  65. }
  66. <span class="enscript-keyword">if</span>(8!=<span class="enscript-keyword">sizeof</span>(uint64_t)) {
  67. errln(<span class="enscript-string">&quot;TestSizeofTypes: 8!=sizeof(uint64_t) - uint64_t needs to be fixed in platform.h&quot;</span>);
  68. }
  69. #<span class="enscript-reference">endif</span>
  70. <span class="enscript-keyword">if</span>(8!=<span class="enscript-keyword">sizeof</span>(<span class="enscript-type">double</span>)) {
  71. errln(<span class="enscript-string">&quot;8!=sizeof(double) - putil.c code may not work&quot;</span>);
  72. }
  73. <span class="enscript-keyword">if</span>(4!=<span class="enscript-keyword">sizeof</span>(int32_t)) {
  74. errln(<span class="enscript-string">&quot;4!=sizeof(int32_t)&quot;</span>);
  75. }
  76. <span class="enscript-keyword">if</span>(4!=<span class="enscript-keyword">sizeof</span>(uint32_t)) {
  77. errln(<span class="enscript-string">&quot;4!=sizeof(uint32_t)&quot;</span>);
  78. }
  79. <span class="enscript-keyword">if</span>(2!=<span class="enscript-keyword">sizeof</span>(int16_t)) {
  80. errln(<span class="enscript-string">&quot;2!=sizeof(int16_t)&quot;</span>);
  81. }
  82. <span class="enscript-keyword">if</span>(2!=<span class="enscript-keyword">sizeof</span>(uint16_t)) {
  83. errln(<span class="enscript-string">&quot;2!=sizeof(uint16_t)&quot;</span>);
  84. }
  85. <span class="enscript-keyword">if</span>(2!=<span class="enscript-keyword">sizeof</span>(UChar)) {
  86. errln(<span class="enscript-string">&quot;2!=sizeof(UChar)&quot;</span>);
  87. }
  88. <span class="enscript-keyword">if</span>(1!=<span class="enscript-keyword">sizeof</span>(int8_t)) {
  89. errln(<span class="enscript-string">&quot;1!=sizeof(int8_t)&quot;</span>);
  90. }
  91. <span class="enscript-keyword">if</span>(1!=<span class="enscript-keyword">sizeof</span>(uint8_t)) {
  92. errln(<span class="enscript-string">&quot;1!=sizeof(uint8_t)&quot;</span>);
  93. }
  94. <span class="enscript-keyword">if</span>(1!=<span class="enscript-keyword">sizeof</span>(UBool)) {
  95. errln(<span class="enscript-string">&quot;1!=sizeof(UBool)&quot;</span>);
  96. }
  97. }
  98. <span class="enscript-type">void</span> <span class="enscript-function-name">StringTest::TestCharsetFamily</span>(<span class="enscript-type">void</span>) {
  99. <span class="enscript-type">unsigned</span> <span class="enscript-type">char</span> c=<span class="enscript-string">'A'</span>;
  100. <span class="enscript-keyword">if</span>( U_CHARSET_FAMILY==U_ASCII_FAMILY &amp;&amp; c!=0x41 ||
  101. U_CHARSET_FAMILY==U_EBCDIC_FAMILY &amp;&amp; c!=0xc1
  102. ) {
  103. errln(<span class="enscript-string">&quot;TestCharsetFamily: U_CHARSET_FAMILY needs to be fixed in platform.h&quot;</span>);
  104. }
  105. }
  106. <span class="enscript-function-name">U_STRING_DECL</span>(ustringVar, <span class="enscript-string">&quot;aZ0 -&quot;</span>, 5);
  107. <span class="enscript-type">void</span> <span class="enscript-function-name">StringTest::runIndexedTest</span>(int32_t index, UBool exec, <span class="enscript-type">const</span> <span class="enscript-type">char</span> *&amp;name, <span class="enscript-type">char</span> * <span class="enscript-comment">/*par*/</span>) {
  108. <span class="enscript-keyword">if</span>(exec) {
  109. logln(<span class="enscript-string">&quot;TestSuite Character and String Test: &quot;</span>);
  110. }
  111. <span class="enscript-keyword">switch</span>(index) {
  112. <span class="enscript-keyword">case</span> <span class="enscript-reference">0</span>:
  113. name=<span class="enscript-string">&quot;TestEndian&quot;</span>;
  114. <span class="enscript-keyword">if</span>(exec) {
  115. TestEndian();
  116. }
  117. <span class="enscript-keyword">break</span>;
  118. <span class="enscript-keyword">case</span> <span class="enscript-reference">1</span>:
  119. name=<span class="enscript-string">&quot;TestSizeofTypes&quot;</span>;
  120. <span class="enscript-keyword">if</span>(exec) {
  121. TestSizeofTypes();
  122. }
  123. <span class="enscript-keyword">break</span>;
  124. <span class="enscript-keyword">case</span> <span class="enscript-reference">2</span>:
  125. name=<span class="enscript-string">&quot;TestCharsetFamily&quot;</span>;
  126. <span class="enscript-keyword">if</span>(exec) {
  127. TestCharsetFamily();
  128. }
  129. <span class="enscript-keyword">break</span>;
  130. <span class="enscript-keyword">case</span> <span class="enscript-reference">3</span>:
  131. name=<span class="enscript-string">&quot;Test_U_STRING&quot;</span>;
  132. <span class="enscript-keyword">if</span>(exec) {
  133. U_STRING_INIT(ustringVar, <span class="enscript-string">&quot;aZ0 -&quot;</span>, 5);
  134. <span class="enscript-keyword">if</span>( <span class="enscript-keyword">sizeof</span>(ustringVar)/<span class="enscript-keyword">sizeof</span>(*ustringVar)!=6 ||
  135. ustringVar[0]!=0x61 ||
  136. ustringVar[1]!=0x5a ||
  137. ustringVar[2]!=0x30 ||
  138. ustringVar[3]!=0x20 ||
  139. ustringVar[4]!=0x2d ||
  140. ustringVar[5]!=0
  141. ) {
  142. errln(<span class="enscript-string">&quot;Test_U_STRING: U_STRING_DECL with U_STRING_INIT does not work right! &quot;</span>
  143. <span class="enscript-string">&quot;See putil.h and utypes.h with platform.h.&quot;</span>);
  144. }
  145. }
  146. <span class="enscript-keyword">break</span>;
  147. <span class="enscript-keyword">case</span> <span class="enscript-reference">4</span>:
  148. name=<span class="enscript-string">&quot;Test_UNICODE_STRING&quot;</span>;
  149. <span class="enscript-keyword">if</span>(exec) {
  150. UnicodeString ustringVar=UNICODE_STRING(<span class="enscript-string">&quot;aZ0 -&quot;</span>, 5);
  151. <span class="enscript-keyword">if</span>( ustringVar.length()!=5 ||
  152. ustringVar[0]!=0x61 ||
  153. ustringVar[1]!=0x5a ||
  154. ustringVar[2]!=0x30 ||
  155. ustringVar[3]!=0x20 ||
  156. ustringVar[4]!=0x2d
  157. ) {
  158. errln(<span class="enscript-string">&quot;Test_UNICODE_STRING: UNICODE_STRING does not work right! &quot;</span>
  159. <span class="enscript-string">&quot;See unistr.h and utypes.h with platform.h.&quot;</span>);
  160. }
  161. }
  162. <span class="enscript-keyword">break</span>;
  163. <span class="enscript-keyword">case</span> <span class="enscript-reference">5</span>:
  164. name=<span class="enscript-string">&quot;Test_UNICODE_STRING_SIMPLE&quot;</span>;
  165. <span class="enscript-keyword">if</span>(exec) {
  166. UnicodeString ustringVar=UNICODE_STRING_SIMPLE(<span class="enscript-string">&quot;aZ0 -&quot;</span>);
  167. <span class="enscript-keyword">if</span>( ustringVar.length()!=5 ||
  168. ustringVar[0]!=0x61 ||
  169. ustringVar[1]!=0x5a ||
  170. ustringVar[2]!=0x30 ||
  171. ustringVar[3]!=0x20 ||
  172. ustringVar[4]!=0x2d
  173. ) {
  174. errln(<span class="enscript-string">&quot;Test_UNICODE_STRING_SIMPLE: UNICODE_STRING_SIMPLE does not work right! &quot;</span>
  175. <span class="enscript-string">&quot;See unistr.h and utypes.h with platform.h.&quot;</span>);
  176. }
  177. }
  178. <span class="enscript-keyword">break</span>;
  179. <span class="enscript-keyword">case</span> <span class="enscript-reference">6</span>:
  180. name=<span class="enscript-string">&quot;Test_UTF8_COUNT_TRAIL_BYTES&quot;</span>;
  181. <span class="enscript-keyword">if</span>(exec) {
  182. <span class="enscript-keyword">if</span>(UTF8_COUNT_TRAIL_BYTES(0x7F) != 0
  183. || UTF8_COUNT_TRAIL_BYTES(0xC0) != 1
  184. || UTF8_COUNT_TRAIL_BYTES(0xE0) != 2
  185. || UTF8_COUNT_TRAIL_BYTES(0xF0) != 3)
  186. {
  187. errln(<span class="enscript-string">&quot;Test_UTF8_COUNT_TRAIL_BYTES: UTF8_COUNT_TRAIL_BYTES does not work right! &quot;</span>
  188. <span class="enscript-string">&quot;See utf8.h.&quot;</span>);
  189. }
  190. }
  191. <span class="enscript-keyword">break</span>;
  192. <span class="enscript-keyword">case</span> <span class="enscript-reference">7</span>:
  193. name=<span class="enscript-string">&quot;TestSTLCompatibility&quot;</span>;
  194. <span class="enscript-keyword">if</span>(exec) {
  195. #<span class="enscript-reference">if</span> <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">U_WINDOWS</span>) &amp;&amp; <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">_MSC_VER</span>)
  196. <span class="enscript-comment">/* Just make sure that it compiles with STL's placement new usage. */</span>
  197. vector&lt;UnicodeString&gt; myvect;
  198. myvect.push_back(UnicodeString(<span class="enscript-string">&quot;blah&quot;</span>));
  199. #<span class="enscript-reference">endif</span>
  200. }
  201. <span class="enscript-keyword">break</span>;
  202. <span class="enscript-reference">default</span>:
  203. name=<span class="enscript-string">&quot;&quot;</span>;
  204. <span class="enscript-keyword">break</span>;
  205. }
  206. }
  207. </pre>
  208. <hr />
  209. </body></html>