itutil.cpp revision 50294ead5e5d23f5bbfed76e00e6b510bd41eee1
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) { 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(0, MultithreadTest); 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(1, StringTest); 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(2, UnicodeStringTest); 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(3, LocaleTest); 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(4, CharIterTest); 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(5, UnicodeTest); 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(6, ResourceBundleTest); 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(7, NewResourceBundleTest); 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(8, PUtilTest); 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(9, UObjectTest); 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(10, UVector32Test); 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(11, UVectorTest); 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CASE(12, UTextTest); 60c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 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" 27450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uldnames.h" 27550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/umsg.h" 27650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/unorm2.h" 27750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uregex.h" 27850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/utrans.h" 27950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho// Use LocalXyzPointer types that are not covered elsewhere in the intltest suite. 28150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocalPointerTest::TestLocalXyzPointer() { 28250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointer"); 28350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static const char *const encoding="ISO-8859-1"; 28550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUConverterSelectorPointer sel( 28650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ucnvsel_open(&encoding, 1, NULL, UCNV_ROUNDTRIP_SET, errorCode)); 28750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("ucnvsel_open()")) { 28850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 28950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 29050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(sel.isNull()) { 29150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUConverterSelectorPointer failure"); 29250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 29350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 29450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 29550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_FORMATTING 29650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUCalendarPointer cal(ucal_open(NULL, 0, "root", UCAL_GREGORIAN, errorCode)); 29750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logDataIfFailureAndReset("ucal_open()")) { 29850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 29950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 30050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(cal.isNull()) { 30150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUCalendarPointer failure"); 30250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 30350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 30450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 30550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUDateTimePatternGeneratorPointer patgen(udatpg_open("root", errorCode)); 30650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("udatpg_open()")) { 30750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 30850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 30950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(patgen.isNull()) { 31050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUDateTimePatternGeneratorPointer failure"); 31150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 31250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 31350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 31450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalULocaleDisplayNamesPointer ldn(uldn_open("de-CH", ULDN_STANDARD_NAMES, errorCode)); 31550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("uldn_open()")) { 31650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 31750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 31850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(ldn.isNull()) { 31950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalULocaleDisplayNamesPointer failure"); 32050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 32150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 32250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 32350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString hello=UNICODE_STRING_SIMPLE("Hello {0}!"); 32450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUMessageFormatPointer msg( 32550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho umsg_open(hello.getBuffer(), hello.length(), "root", NULL, errorCode)); 32650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("umsg_open()")) { 32750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 32850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 32950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(msg.isNull()) { 33050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUMessageFormatPointer failure"); 33150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 33250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 33350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* UCONFIG_NO_FORMATTING */ 33450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 33550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_NORMALIZATION 33650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UNormalizer2 *nfc=unorm2_getInstance(NULL, "nfc", UNORM2_COMPOSE, errorCode); 33750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeSet emptySet; 33850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUNormalizer2Pointer fn2(unorm2_openFiltered(nfc, emptySet.toUSet(), errorCode)); 33950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("unorm2_openFiltered()")) { 34050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 34150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 34250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(fn2.isNull()) { 34350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUNormalizer2Pointer failure"); 34450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 34550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 34650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_NORMALIZATION */ 34750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 34850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_REGULAR_EXPRESSIONS 34950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString pattern=UNICODE_STRING_SIMPLE("abc|xy+z"); 35050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalURegularExpressionPointer regex( 35150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, errorCode)); 35250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("uregex_open()")) { 35350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 35450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 35550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(regex.isNull()) { 35650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalURegularExpressionPointer failure"); 35750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 35850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 35950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* UCONFIG_NO_REGULAR_EXPRESSIONS */ 36050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 36150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_TRANSLITERATION 36250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString id=UNICODE_STRING_SIMPLE("Grek-Latn"); 36350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUTransliteratorPointer trans( 36450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, NULL, 0, NULL, errorCode)); 36550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(errorCode.logIfFailureAndReset("utrans_open()")) { 36650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 36750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 36850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(trans.isNull()) { 36950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("LocalUTransliteratorPointer failure"); 37050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 37150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 37250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_TRANSLITERATION */ 37350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 37450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // destructors 37550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 37650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 37750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho// Try LocalXyzPointer types with NULL pointers. 37850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid LocalPointerTest::TestLocalXyzPointerNull() { 37950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 38050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUConverterSelectorPointer"); 38150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static const char *const encoding="ISO-8859-1"; 38250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUConverterSelectorPointer null; 38350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUConverterSelectorPointer sel( 38450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ucnvsel_open(&encoding, 1, NULL, UCNV_ROUNDTRIP_SET, errorCode)); 38550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho sel.adoptInstead(NULL); 38650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 38750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_FORMATTING 38850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 38950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUCalendarPointer"); 39050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUCalendarPointer null; 39150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUCalendarPointer cal(ucal_open(NULL, 0, "root", UCAL_GREGORIAN, errorCode)); 39250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!errorCode.logDataIfFailureAndReset("ucal_open()")) { 39350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho cal.adoptInstead(NULL); 39450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 39550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 39650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 39750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUDateTimePatternGeneratorPointer"); 39850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUDateTimePatternGeneratorPointer null; 39950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUDateTimePatternGeneratorPointer patgen(udatpg_open("root", errorCode)); 40050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho patgen.adoptInstead(NULL); 40150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 40250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 40350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUMessageFormatPointer"); 40450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString hello=UNICODE_STRING_SIMPLE("Hello {0}!"); 40550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUMessageFormatPointer null; 40650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUMessageFormatPointer msg( 40750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho umsg_open(hello.getBuffer(), hello.length(), "root", NULL, errorCode)); 40850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho msg.adoptInstead(NULL); 40950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 41050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_FORMATTING */ 41150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 41250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_REGULAR_EXPRESSIONS 41350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 41450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalURegularExpressionPointer"); 41550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString pattern=UNICODE_STRING_SIMPLE("abc|xy+z"); 41650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalURegularExpressionPointer null; 41750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalURegularExpressionPointer regex( 41850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, errorCode)); 41950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!errorCode.logDataIfFailureAndReset("urege_open()")) { 42050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho regex.adoptInstead(NULL); 42150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 42250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 42350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */ 42450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 42550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if !UCONFIG_NO_TRANSLITERATION 42650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 42750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUTransliteratorPointer"); 42850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString id=UNICODE_STRING_SIMPLE("Grek-Latn"); 42950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUTransliteratorPointer null; 43050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho LocalUTransliteratorPointer trans( 43150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, NULL, 0, NULL, errorCode)); 43250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(!errorCode.logDataIfFailureAndReset("utrans_openU()")) { 43350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho trans.adoptInstead(NULL); 43450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 43550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 43650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif /* !UCONFIG_NO_TRANSLITERATION */ 43750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 438b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 439