itutil.cpp revision 27f654740f2a26ad62a5c155af9199af9e69b889
1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/******************************************************************** 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT: 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Copyright (c) 1997-2010, International Business Machines Corporation and 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * others. All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/ 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * IntlTestUtilities is the medium level test class for everything in the directory "utility". 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 13b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/errorcode.h" 1450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/localpointer.h" 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "itutil.h" 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "strtest.h" 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "loctest.h" 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "citrtest.h" 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "ustrtest.h" 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "ucdtest.h" 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "restest.h" 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "restsnew.h" 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "tsmthred.h" 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "tsputil.h" 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "uobjtest.h" 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "utxttest.h" 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "v32test.h" 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "uvectest.h" 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "aliastst.h" 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "usettest.h" 31c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehostatic IntlTest *createLocalPointerTest(); 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define CASE(id, test) case id: \ 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru name = #test; \ 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (exec) { \ 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(#test "---"); logln(); \ 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru test t; \ 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru callTest(t, par); \ 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } \ 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid IntlTestUtilities::runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (exec) logln("TestSuite Utilities: "); 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (index) { 4727f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(0, MultithreadTest); 4827f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(1, StringTest); 4927f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(2, UnicodeStringTest); 5027f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(3, LocaleTest); 5127f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(4, CharIterTest); 5227f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(5, UObjectTest); 5327f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(6, UnicodeTest); 5427f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(7, ResourceBundleTest); 5527f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(8, NewResourceBundleTest); 5627f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(9, PUtilTest); 5727f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(10, UVector32Test); 5827f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(11, UVectorTest); 5927f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(12, UTextTest); 6027f654740f2a26ad62a5c155af9199af9e69b889claireho CASE(13, LocaleAliasTest); 61b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru CASE(14, UnicodeSetTest); 62b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru CASE(15, ErrorCodeTest); 6350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho case 16: 6450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho name = "LocalPointerTest"; 6550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (exec) { 6650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("TestSuite LocalPointerTest---"); logln(); 6750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalPointer<IntlTest> test(createLocalPointerTest()); 6850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho callTest(*test, par); 6950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 7050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho break; 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru default: name = ""; break; //needed to end loop 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 75b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruvoid ErrorCodeTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/) { 76b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if (exec) logln("TestSuite Utilities: "); 77b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru switch (index) { 78b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru case 0: name = "TestErrorCode"; if (exec) TestErrorCode(); break; 79b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru case 1: name = "TestSubclass"; if (exec) TestSubclass(); break; 80b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru default: name = ""; break; //needed to end loop 81b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 82b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 83b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 84b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Querustatic void RefPlusOne(UErrorCode &code) { code=(UErrorCode)(code+1); } 85b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Querustatic void PtrPlusTwo(UErrorCode *code) { *code=(UErrorCode)(*code+2); } 86b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 87b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruvoid ErrorCodeTest::TestErrorCode() { 88b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ErrorCode errorCode; 89b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(errorCode.get()!=U_ZERO_ERROR || !errorCode.isSuccess() || errorCode.isFailure()) { 90b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not initialize properly"); 91b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru return; 92b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 9350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errorCode.assertSuccess(); 9450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.errorName()!=u_errorName(U_ZERO_ERROR)) { 9550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("ErrorCode did not format error message string properly"); 9650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 97b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru RefPlusOne(errorCode); 98b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(errorCode.get()!=U_ILLEGAL_ARGUMENT_ERROR || errorCode.isSuccess() || !errorCode.isFailure()) { 99b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not yield a writable reference"); 100b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 101b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru PtrPlusTwo(errorCode); 102b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(errorCode.get()!=U_INVALID_FORMAT_ERROR || errorCode.isSuccess() || !errorCode.isFailure()) { 103b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not yield a writable pointer"); 104b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 105b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errorCode.set(U_PARSE_ERROR); 106b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(errorCode.get()!=U_PARSE_ERROR || errorCode.isSuccess() || !errorCode.isFailure()) { 107b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode.set() failed"); 108b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 109b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if( errorCode.reset()!=U_PARSE_ERROR || errorCode.get()!=U_ZERO_ERROR || 110b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru !errorCode.isSuccess() || errorCode.isFailure() 111b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ) { 112b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not reset properly"); 113b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 114b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 115b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 116b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruclass MyErrorCode: public ErrorCode { 117b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Querupublic: 118b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru MyErrorCode(int32_t &countChecks, int32_t &countDests) 119b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru : checks(countChecks), dests(countDests) {} 120b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ~MyErrorCode() { 121b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(isFailure()) { 122b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ++dests; 123b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 124b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 125b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruprivate: 126b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru virtual void handleFailure() const { 127b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ++checks; 128b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 129b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t &checks; 130b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t &dests; 131b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru}; 132b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 133b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruvoid ErrorCodeTest::TestSubclass() { 134b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t countChecks=0; 135b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t countDests=0; 136b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru { 137b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru MyErrorCode errorCode(countChecks, countDests); 138b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if( errorCode.get()!=U_ZERO_ERROR || !errorCode.isSuccess() || errorCode.isFailure() || 139b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru countChecks!=0 || countDests!=0 140b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ) { 141b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not initialize properly"); 142b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru return; 143b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 14450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errorCode.assertSuccess(); 145b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(countChecks!=0) { 14650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("ErrorCode.assertSuccess() called handleFailure() despite success"); 147b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 148b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru RefPlusOne(errorCode); 149b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(errorCode.get()!=U_ILLEGAL_ARGUMENT_ERROR || errorCode.isSuccess() || !errorCode.isFailure()) { 150b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not yield a writable reference"); 151b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 15250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errorCode.assertSuccess(); 153b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(countChecks!=1) { 15450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("ErrorCode.assertSuccess() did not handleFailure()"); 155b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 156b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru PtrPlusTwo(errorCode); 157b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(errorCode.get()!=U_INVALID_FORMAT_ERROR || errorCode.isSuccess() || !errorCode.isFailure()) { 158b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not yield a writable pointer"); 159b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 16050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errorCode.assertSuccess(); 161b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(countChecks!=2) { 16250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("ErrorCode.assertSuccess() did not handleFailure()"); 163b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 164b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errorCode.set(U_PARSE_ERROR); 165b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(errorCode.get()!=U_PARSE_ERROR || errorCode.isSuccess() || !errorCode.isFailure()) { 166b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode.set() failed"); 167b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 168b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if( errorCode.reset()!=U_PARSE_ERROR || errorCode.get()!=U_ZERO_ERROR || 169b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru !errorCode.isSuccess() || errorCode.isFailure() 170b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ) { 171b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errln("ErrorCode did not reset properly"); 172b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 17350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errorCode.assertSuccess(); 174b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(countChecks!=2) { 17550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("ErrorCode.assertSuccess() called handleFailure() despite success"); 176b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 177b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 178b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(countDests!=0) { 17950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("MyErrorCode destructor detected failure despite success"); 180b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 181b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru countChecks=countDests=0; 182b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru { 183b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru MyErrorCode errorCode(countChecks, countDests); 184b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru errorCode.set(U_PARSE_ERROR); 185b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 186b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if(countDests!=1) { 18750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("MyErrorCode destructor failed to detect failure"); 18850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 18950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 19050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 19150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoclass LocalPointerTest : public IntlTest { 19250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic: 19350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalPointerTest() {} 19450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 19550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL); 19650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 19750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestLocalPointer(); 19850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestLocalArray(); 19950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestLocalXyzPointer(); 20050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestLocalXyzPointerNull(); 20150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho}; 20250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehostatic IntlTest *createLocalPointerTest() { 20450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return new LocalPointerTest(); 20550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 20650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 20750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocalPointerTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) { 20850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(exec) { 20950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("TestSuite LocalPointerTest: "); 210b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 21150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho switch (index) { 21250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho TESTCASE(0, TestLocalPointer); 21350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho TESTCASE(1, TestLocalArray); 21450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho TESTCASE(2, TestLocalXyzPointer); 21550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho TESTCASE(3, TestLocalXyzPointerNull); 21650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho default: 21750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho name=""; 21850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho break; // needed to end the loop 21950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 22050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 22150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 22250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho// Exercise every LocalPointer and LocalPointerBase method. 22350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocalPointerTest::TestLocalPointer() { 22450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // constructor 22550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalPointer<UnicodeString> s(new UnicodeString((UChar32)0x50005)); 22650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // isNULL(), isValid(), operator==(), operator!=() 22750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(s.isNull() || !s.isValid() || s==NULL || !(s!=NULL)) { 22850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalPointer constructor or NULL test failure"); 22950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 23050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 23150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // getAlias(), operator->, operator* 23250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(s.getAlias()->length()!=2 || s->length()!=2 || (*s).length()!=2) { 23350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalPointer access failure"); 23450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 23550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // adoptInstead(), orphan() 23650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho s.adoptInstead(new UnicodeString((UChar)0xfffc)); 23750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(s->length()!=1) { 23850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalPointer adoptInstead(U+FFFC) failure"); 23950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 24050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString *orphan=s.orphan(); 24150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(orphan==NULL || orphan->length()!=1 || s.isValid() || s!=NULL) { 24250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalPointer orphan() failure"); 24350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 24450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete orphan; 24550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // destructor 24650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho s.adoptInstead(new UnicodeString()); 24750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(s->length()!=0) { 24850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalPointer adoptInstead(empty) failure"); 24950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 25050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 25150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 25250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho// Exercise every LocalArray method (but not LocalPointerBase). 25350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocalPointerTest::TestLocalArray() { 25450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // constructor 25550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalArray<UnicodeString> a(new UnicodeString[2]); 25650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // operator[]() 25750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho a[0].append((UChar)0x61); 25850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho a[1].append((UChar32)0x60006); 25950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(a[0].length()!=1 || a[1].length()!=2) { 26050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalArray access failure"); 26150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 26250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // adoptInstead() 26350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho a.adoptInstead(new UnicodeString[4]); 26450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho a[3].append((UChar)0x62).append((UChar)0x63).reverse(); 26550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(a[3].length()!=2 || a[3][1]!=0x62) { 26650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalArray adoptInstead() failure"); 26750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 26850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // destructor 26950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 27050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 27150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/ucnvsel.h" 27250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/ucal.h" 27350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/udatpg.h" 27427f654740f2a26ad62a5c155af9199af9e69b889claireho#include "unicode/uidna.h" 27550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uldnames.h" 27650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/umsg.h" 27750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/unorm2.h" 27850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uregex.h" 27950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/utrans.h" 28050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho// Use LocalXyzPointer types that are not covered elsewhere in the intltest suite. 28250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocalPointerTest::TestLocalXyzPointer() { 28350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointer"); 28450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static const char *const encoding="ISO-8859-1"; 28650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUConverterSelectorPointer sel( 28750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ucnvsel_open(&encoding, 1, NULL, UCNV_ROUNDTRIP_SET, errorCode)); 28850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("ucnvsel_open()")) { 28950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 29050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 29150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(sel.isNull()) { 29250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUConverterSelectorPointer failure"); 29350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 29450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 29550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 29650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_FORMATTING 29750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUCalendarPointer cal(ucal_open(NULL, 0, "root", UCAL_GREGORIAN, errorCode)); 29850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logDataIfFailureAndReset("ucal_open()")) { 29950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 30050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 30150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(cal.isNull()) { 30250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUCalendarPointer failure"); 30350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 30450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 30550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 30650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUDateTimePatternGeneratorPointer patgen(udatpg_open("root", errorCode)); 30750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("udatpg_open()")) { 30850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 30950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 31050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(patgen.isNull()) { 31150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUDateTimePatternGeneratorPointer failure"); 31250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 31350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 31450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 31550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalULocaleDisplayNamesPointer ldn(uldn_open("de-CH", ULDN_STANDARD_NAMES, errorCode)); 31650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("uldn_open()")) { 31750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 31850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 31950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(ldn.isNull()) { 32050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalULocaleDisplayNamesPointer failure"); 32150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 32250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 32350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 32450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString hello=UNICODE_STRING_SIMPLE("Hello {0}!"); 32550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUMessageFormatPointer msg( 32650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho umsg_open(hello.getBuffer(), hello.length(), "root", NULL, errorCode)); 32750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("umsg_open()")) { 32850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 32950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 33050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(msg.isNull()) { 33150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUMessageFormatPointer failure"); 33250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 33350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 33450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* UCONFIG_NO_FORMATTING */ 33550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 33650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_NORMALIZATION 33750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UNormalizer2 *nfc=unorm2_getInstance(NULL, "nfc", UNORM2_COMPOSE, errorCode); 33850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeSet emptySet; 33950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUNormalizer2Pointer fn2(unorm2_openFiltered(nfc, emptySet.toUSet(), errorCode)); 34050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("unorm2_openFiltered()")) { 34150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 34250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 34350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(fn2.isNull()) { 34450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUNormalizer2Pointer failure"); 34550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 34650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 34750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_NORMALIZATION */ 34850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 34927f654740f2a26ad62a5c155af9199af9e69b889claireho#if !UCONFIG_NO_IDNA 35027f654740f2a26ad62a5c155af9199af9e69b889claireho LocalUIDNAPointer idna(uidna_openUTS46(0, errorCode)); 35127f654740f2a26ad62a5c155af9199af9e69b889claireho if(errorCode.logIfFailureAndReset("uidna_openUTS46()")) { 35227f654740f2a26ad62a5c155af9199af9e69b889claireho return; 35327f654740f2a26ad62a5c155af9199af9e69b889claireho } 35427f654740f2a26ad62a5c155af9199af9e69b889claireho if(idna.isNull()) { 35527f654740f2a26ad62a5c155af9199af9e69b889claireho errln("LocalUIDNAPointer failure"); 35627f654740f2a26ad62a5c155af9199af9e69b889claireho return; 35727f654740f2a26ad62a5c155af9199af9e69b889claireho } 35827f654740f2a26ad62a5c155af9199af9e69b889claireho#endif /* !UCONFIG_NO_IDNA */ 35927f654740f2a26ad62a5c155af9199af9e69b889claireho 36050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_REGULAR_EXPRESSIONS 36150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString pattern=UNICODE_STRING_SIMPLE("abc|xy+z"); 36250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalURegularExpressionPointer regex( 36350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, errorCode)); 36450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("uregex_open()")) { 36550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 36650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 36750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(regex.isNull()) { 36850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalURegularExpressionPointer failure"); 36950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 37050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 37150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* UCONFIG_NO_REGULAR_EXPRESSIONS */ 37250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 37350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_TRANSLITERATION 37450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString id=UNICODE_STRING_SIMPLE("Grek-Latn"); 37550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUTransliteratorPointer trans( 37650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, NULL, 0, NULL, errorCode)); 37750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("utrans_open()")) { 37850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 37950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 38050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(trans.isNull()) { 38150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUTransliteratorPointer failure"); 38250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 38350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 38450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_TRANSLITERATION */ 38550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 38650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // destructors 38750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 38850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 38950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho// Try LocalXyzPointer types with NULL pointers. 39050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocalPointerTest::TestLocalXyzPointerNull() { 39150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 39250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUConverterSelectorPointer"); 39350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static const char *const encoding="ISO-8859-1"; 39450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUConverterSelectorPointer null; 39550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUConverterSelectorPointer sel( 39650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ucnvsel_open(&encoding, 1, NULL, UCNV_ROUNDTRIP_SET, errorCode)); 39750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho sel.adoptInstead(NULL); 39850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 39950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_FORMATTING 40050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 40150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUCalendarPointer"); 40250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUCalendarPointer null; 40350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUCalendarPointer cal(ucal_open(NULL, 0, "root", UCAL_GREGORIAN, errorCode)); 40450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!errorCode.logDataIfFailureAndReset("ucal_open()")) { 40550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho cal.adoptInstead(NULL); 40650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 40750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 40850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 40950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUDateTimePatternGeneratorPointer"); 41050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUDateTimePatternGeneratorPointer null; 41150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUDateTimePatternGeneratorPointer patgen(udatpg_open("root", errorCode)); 41250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho patgen.adoptInstead(NULL); 41350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 41450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 41550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUMessageFormatPointer"); 41650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString hello=UNICODE_STRING_SIMPLE("Hello {0}!"); 41750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUMessageFormatPointer null; 41850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUMessageFormatPointer msg( 41950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho umsg_open(hello.getBuffer(), hello.length(), "root", NULL, errorCode)); 42050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho msg.adoptInstead(NULL); 42150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 42250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_FORMATTING */ 42350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 42450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_REGULAR_EXPRESSIONS 42550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 42650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalURegularExpressionPointer"); 42750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString pattern=UNICODE_STRING_SIMPLE("abc|xy+z"); 42850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalURegularExpressionPointer null; 42950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalURegularExpressionPointer regex( 43050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, errorCode)); 43150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!errorCode.logDataIfFailureAndReset("urege_open()")) { 43250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho regex.adoptInstead(NULL); 43350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 43450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 43550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */ 43650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 43750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_TRANSLITERATION 43850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 43950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUTransliteratorPointer"); 44050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString id=UNICODE_STRING_SIMPLE("Grek-Latn"); 44150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUTransliteratorPointer null; 44250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUTransliteratorPointer trans( 44350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, NULL, 0, NULL, errorCode)); 44450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!errorCode.logDataIfFailureAndReset("utrans_openU()")) { 44550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho trans.adoptInstead(NULL); 44650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 44750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 44850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_TRANSLITERATION */ 44950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 450b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 451