/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
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>strtest.cpp</title>
- <style type="text/css">
- .enscript-comment { font-style: italic; color: rgb(178,34,34); }
- .enscript-function-name { font-weight: bold; color: rgb(0,0,255); }
- .enscript-variable-name { font-weight: bold; color: rgb(184,134,11); }
- .enscript-keyword { font-weight: bold; color: rgb(160,32,240); }
- .enscript-reference { font-weight: bold; color: rgb(95,158,160); }
- .enscript-string { font-weight: bold; color: rgb(188,143,143); }
- .enscript-builtin { font-weight: bold; color: rgb(218,112,214); }
- .enscript-type { font-weight: bold; color: rgb(34,139,34); }
- .enscript-highlight { text-decoration: underline; color: 0; }
- </style>
- </head>
- <body id="top">
- <h1 style="margin:8px;" id="f1">strtest.cpp <span style="font-weight: normal; font-size: 0.5em;">[<a href="?txt">plain text</a>]</span></h1>
- <hr/>
- <div></div>
- <pre>
- <span class="enscript-comment">/********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1997-2005, International Business Machines Corporation and
- * others. All Rights Reserved.
- ********************************************************************/</span>
- <span class="enscript-comment">/* file name: strtest.cpp
- * encoding: US-ASCII
- * tab size: 8 (not used)
- * indentation:4
- *
- * created on: 1999nov22
- * created by: Markus W. Scherer
- */</span>
- #<span class="enscript-reference">include</span> <span class="enscript-string">"unicode/utypes.h"</span>
- #<span class="enscript-reference">include</span> <span class="enscript-string">"unicode/putil.h"</span>
- #<span class="enscript-reference">include</span> <span class="enscript-string">"intltest.h"</span>
- #<span class="enscript-reference">include</span> <span class="enscript-string">"strtest.h"</span>
- #<span class="enscript-reference">include</span> <span class="enscript-string">"unicode/ustring.h"</span>
- #<span class="enscript-reference">if</span> <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">U_WINDOWS</span>) && <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">_MSC_VER</span>)
- #<span class="enscript-reference">include</span> <span class="enscript-string"><vector></span>
- using namespace std;
- #<span class="enscript-reference">endif</span>
- <span class="enscript-function-name">StringTest::~StringTest</span>() {}
- <span class="enscript-type">void</span> <span class="enscript-function-name">StringTest::TestEndian</span>(<span class="enscript-type">void</span>) {
- <span class="enscript-type">union</span> {
- uint8_t byte;
- uint16_t word;
- } u;
- u.word=0x0100;
- <span class="enscript-keyword">if</span>(U_IS_BIG_ENDIAN!=u.byte) {
- errln(<span class="enscript-string">"TestEndian: U_IS_BIG_ENDIAN needs to be fixed in platform.h"</span>);
- }
- }
- <span class="enscript-type">void</span> <span class="enscript-function-name">StringTest::TestSizeofTypes</span>(<span class="enscript-type">void</span>) {
- <span class="enscript-keyword">if</span>(U_SIZEOF_WCHAR_T!=<span class="enscript-keyword">sizeof</span>(wchar_t)) {
- errln(<span class="enscript-string">"TestSizeofWCharT: U_SIZEOF_WCHAR_T!=sizeof(wchar_t) - U_SIZEOF_WCHAR_T needs to be fixed in platform.h"</span>);
- }
- #<span class="enscript-reference">ifdef</span> <span class="enscript-variable-name">U_INT64_T_UNAVAILABLE</span>
- errln(<span class="enscript-string">"int64_t and uint64_t are undefined."</span>);
- #<span class="enscript-reference">else</span>
- <span class="enscript-keyword">if</span>(8!=<span class="enscript-keyword">sizeof</span>(int64_t)) {
- errln(<span class="enscript-string">"TestSizeofTypes: 8!=sizeof(int64_t) - int64_t needs to be fixed in platform.h"</span>);
- }
- <span class="enscript-keyword">if</span>(8!=<span class="enscript-keyword">sizeof</span>(uint64_t)) {
- errln(<span class="enscript-string">"TestSizeofTypes: 8!=sizeof(uint64_t) - uint64_t needs to be fixed in platform.h"</span>);
- }
- #<span class="enscript-reference">endif</span>
- <span class="enscript-keyword">if</span>(8!=<span class="enscript-keyword">sizeof</span>(<span class="enscript-type">double</span>)) {
- errln(<span class="enscript-string">"8!=sizeof(double) - putil.c code may not work"</span>);
- }
- <span class="enscript-keyword">if</span>(4!=<span class="enscript-keyword">sizeof</span>(int32_t)) {
- errln(<span class="enscript-string">"4!=sizeof(int32_t)"</span>);
- }
- <span class="enscript-keyword">if</span>(4!=<span class="enscript-keyword">sizeof</span>(uint32_t)) {
- errln(<span class="enscript-string">"4!=sizeof(uint32_t)"</span>);
- }
- <span class="enscript-keyword">if</span>(2!=<span class="enscript-keyword">sizeof</span>(int16_t)) {
- errln(<span class="enscript-string">"2!=sizeof(int16_t)"</span>);
- }
- <span class="enscript-keyword">if</span>(2!=<span class="enscript-keyword">sizeof</span>(uint16_t)) {
- errln(<span class="enscript-string">"2!=sizeof(uint16_t)"</span>);
- }
- <span class="enscript-keyword">if</span>(2!=<span class="enscript-keyword">sizeof</span>(UChar)) {
- errln(<span class="enscript-string">"2!=sizeof(UChar)"</span>);
- }
- <span class="enscript-keyword">if</span>(1!=<span class="enscript-keyword">sizeof</span>(int8_t)) {
- errln(<span class="enscript-string">"1!=sizeof(int8_t)"</span>);
- }
- <span class="enscript-keyword">if</span>(1!=<span class="enscript-keyword">sizeof</span>(uint8_t)) {
- errln(<span class="enscript-string">"1!=sizeof(uint8_t)"</span>);
- }
- <span class="enscript-keyword">if</span>(1!=<span class="enscript-keyword">sizeof</span>(UBool)) {
- errln(<span class="enscript-string">"1!=sizeof(UBool)"</span>);
- }
- }
- <span class="enscript-type">void</span> <span class="enscript-function-name">StringTest::TestCharsetFamily</span>(<span class="enscript-type">void</span>) {
- <span class="enscript-type">unsigned</span> <span class="enscript-type">char</span> c=<span class="enscript-string">'A'</span>;
- <span class="enscript-keyword">if</span>( U_CHARSET_FAMILY==U_ASCII_FAMILY && c!=0x41 ||
- U_CHARSET_FAMILY==U_EBCDIC_FAMILY && c!=0xc1
- ) {
- errln(<span class="enscript-string">"TestCharsetFamily: U_CHARSET_FAMILY needs to be fixed in platform.h"</span>);
- }
- }
- <span class="enscript-function-name">U_STRING_DECL</span>(ustringVar, <span class="enscript-string">"aZ0 -"</span>, 5);
- <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> *&name, <span class="enscript-type">char</span> * <span class="enscript-comment">/*par*/</span>) {
- <span class="enscript-keyword">if</span>(exec) {
- logln(<span class="enscript-string">"TestSuite Character and String Test: "</span>);
- }
- <span class="enscript-keyword">switch</span>(index) {
- <span class="enscript-keyword">case</span> <span class="enscript-reference">0</span>:
- name=<span class="enscript-string">"TestEndian"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- TestEndian();
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-keyword">case</span> <span class="enscript-reference">1</span>:
- name=<span class="enscript-string">"TestSizeofTypes"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- TestSizeofTypes();
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-keyword">case</span> <span class="enscript-reference">2</span>:
- name=<span class="enscript-string">"TestCharsetFamily"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- TestCharsetFamily();
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-keyword">case</span> <span class="enscript-reference">3</span>:
- name=<span class="enscript-string">"Test_U_STRING"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- U_STRING_INIT(ustringVar, <span class="enscript-string">"aZ0 -"</span>, 5);
- <span class="enscript-keyword">if</span>( <span class="enscript-keyword">sizeof</span>(ustringVar)/<span class="enscript-keyword">sizeof</span>(*ustringVar)!=6 ||
- ustringVar[0]!=0x61 ||
- ustringVar[1]!=0x5a ||
- ustringVar[2]!=0x30 ||
- ustringVar[3]!=0x20 ||
- ustringVar[4]!=0x2d ||
- ustringVar[5]!=0
- ) {
- errln(<span class="enscript-string">"Test_U_STRING: U_STRING_DECL with U_STRING_INIT does not work right! "</span>
- <span class="enscript-string">"See putil.h and utypes.h with platform.h."</span>);
- }
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-keyword">case</span> <span class="enscript-reference">4</span>:
- name=<span class="enscript-string">"Test_UNICODE_STRING"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- UnicodeString ustringVar=UNICODE_STRING(<span class="enscript-string">"aZ0 -"</span>, 5);
- <span class="enscript-keyword">if</span>( ustringVar.length()!=5 ||
- ustringVar[0]!=0x61 ||
- ustringVar[1]!=0x5a ||
- ustringVar[2]!=0x30 ||
- ustringVar[3]!=0x20 ||
- ustringVar[4]!=0x2d
- ) {
- errln(<span class="enscript-string">"Test_UNICODE_STRING: UNICODE_STRING does not work right! "</span>
- <span class="enscript-string">"See unistr.h and utypes.h with platform.h."</span>);
- }
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-keyword">case</span> <span class="enscript-reference">5</span>:
- name=<span class="enscript-string">"Test_UNICODE_STRING_SIMPLE"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- UnicodeString ustringVar=UNICODE_STRING_SIMPLE(<span class="enscript-string">"aZ0 -"</span>);
- <span class="enscript-keyword">if</span>( ustringVar.length()!=5 ||
- ustringVar[0]!=0x61 ||
- ustringVar[1]!=0x5a ||
- ustringVar[2]!=0x30 ||
- ustringVar[3]!=0x20 ||
- ustringVar[4]!=0x2d
- ) {
- errln(<span class="enscript-string">"Test_UNICODE_STRING_SIMPLE: UNICODE_STRING_SIMPLE does not work right! "</span>
- <span class="enscript-string">"See unistr.h and utypes.h with platform.h."</span>);
- }
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-keyword">case</span> <span class="enscript-reference">6</span>:
- name=<span class="enscript-string">"Test_UTF8_COUNT_TRAIL_BYTES"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- <span class="enscript-keyword">if</span>(UTF8_COUNT_TRAIL_BYTES(0x7F) != 0
- || UTF8_COUNT_TRAIL_BYTES(0xC0) != 1
- || UTF8_COUNT_TRAIL_BYTES(0xE0) != 2
- || UTF8_COUNT_TRAIL_BYTES(0xF0) != 3)
- {
- errln(<span class="enscript-string">"Test_UTF8_COUNT_TRAIL_BYTES: UTF8_COUNT_TRAIL_BYTES does not work right! "</span>
- <span class="enscript-string">"See utf8.h."</span>);
- }
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-keyword">case</span> <span class="enscript-reference">7</span>:
- name=<span class="enscript-string">"TestSTLCompatibility"</span>;
- <span class="enscript-keyword">if</span>(exec) {
- #<span class="enscript-reference">if</span> <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">U_WINDOWS</span>) && <span class="enscript-reference">defined</span>(<span class="enscript-variable-name">_MSC_VER</span>)
- <span class="enscript-comment">/* Just make sure that it compiles with STL's placement new usage. */</span>
- vector<UnicodeString> myvect;
- myvect.push_back(UnicodeString(<span class="enscript-string">"blah"</span>));
- #<span class="enscript-reference">endif</span>
- }
- <span class="enscript-keyword">break</span>;
- <span class="enscript-reference">default</span>:
- name=<span class="enscript-string">""</span>;
- <span class="enscript-keyword">break</span>;
- }
- }
- </pre>
- <hr />
- </body></html>