diff options
Diffstat (limited to 'Build/source/libs/icu-xetex/test/threadtest/stringtest.cpp')
-rw-r--r-- | Build/source/libs/icu-xetex/test/threadtest/stringtest.cpp | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/Build/source/libs/icu-xetex/test/threadtest/stringtest.cpp b/Build/source/libs/icu-xetex/test/threadtest/stringtest.cpp deleted file mode 100644 index 2380a3c7713..00000000000 --- a/Build/source/libs/icu-xetex/test/threadtest/stringtest.cpp +++ /dev/null @@ -1,143 +0,0 @@ -// -//******************************************************************** -// Copyright (C) 2002, International Business Machines -// Corporation and others. All Rights Reserved. -//******************************************************************** -// -// File stringtest.cpp -// - -#include "threadtest.h" -#include "unicode/unistr.h" -#include "stdio.h" - -class StringThreadTest: public AbstractThreadTest { -public: - StringThreadTest(); - virtual ~StringThreadTest(); - virtual void check(); - virtual void runOnce(); - void makeStringCopies(int recursionCount); - -private: - UnicodeString *fCleanStrings; - UnicodeString *fSourceStrings; -}; - -StringThreadTest::StringThreadTest() { - // cleanStrings and sourceStrings are separately initialized to the same values. - // cleanStrings are never touched after in any remotely unsafe way. - // sourceStrings are copied during the test, which will run their buffer's reference - // counts all over the place. - fCleanStrings = new UnicodeString[5]; - fSourceStrings = new UnicodeString[5]; - - fCleanStrings[0] = "When sorrows come, they come not single spies, but in batallions."; - fSourceStrings[0] = "When sorrows come, they come not single spies, but in batallions."; - fCleanStrings[1] = "Away, you scullion! You rampallion! You fustilarion! I'll tickle your catastrophe!"; - fSourceStrings[1] = "Away, you scullion! You rampallion! You fustilarion! I'll tickle your catastrophe!"; - fCleanStrings[2] = "hot"; - fSourceStrings[2] = "hot"; - fCleanStrings[3] = ""; - fSourceStrings[3] = ""; - fCleanStrings[4] = "Tomorrow, and tomorrow, and tomorrow,\n" - "Creeps in this petty pace from day to day\n" - "To the last syllable of recorded time;\n" - "And all our yesterdays have lighted fools \n" - "The way to dusty death. Out, out brief candle!\n" - "Life's but a walking shadow, a poor player\n" - "That struts and frets his hour upon the stage\n" - "And then is heard no more. It is a tale\n" - "Told by and idiot, full of sound and fury,\n" - "Signifying nothing.\n"; - fSourceStrings[4] = "Tomorrow, and tomorrow, and tomorrow,\n" - "Creeps in this petty pace from day to day\n" - "To the last syllable of recorded time;\n" - "And all our yesterdays have lighted fools \n" - "The way to dusty death. Out, out brief candle!\n" - "Life's but a walking shadow, a poor player\n" - "That struts and frets his hour upon the stage\n" - "And then is heard no more. It is a tale\n" - "Told by and idiot, full of sound and fury,\n" - "Signifying nothing.\n"; -}; - - -StringThreadTest::~StringThreadTest() { - delete [] fCleanStrings; - delete [] fSourceStrings; -} - - -void StringThreadTest::runOnce() { - makeStringCopies(25); -} - -void StringThreadTest::makeStringCopies(int recursionCount) { - UnicodeString firstGeneration[5]; - UnicodeString secondGeneration[5]; - UnicodeString thirdGeneration[5]; - UnicodeString fourthGeneration[5]; - - // Make four generations of copies of the source strings, in slightly variant ways. - // - int i; - for (i=0; i<5; i++) { - firstGeneration[i] = fSourceStrings[i]; - secondGeneration[i] = firstGeneration[i]; - thirdGeneration[i] = UnicodeString(secondGeneration[i]); - // fourthGeneration[i] = UnicodeString("Lay on, MacDuff, And damn'd be him that first cries, \"Hold, enough!\""); - fourthGeneration[i] = UnicodeString(); - fourthGeneration[i] = thirdGeneration[i]; - } - - - // Recurse to make even more copies of the strings/ - // - if (recursionCount > 0) { - makeStringCopies(recursionCount-1); - } - - - // Verify that all four generations are equal. - for (i=0; i<5; i++) { - if (firstGeneration[i] != fSourceStrings[i] || - firstGeneration[i] != secondGeneration[i] || - firstGeneration[i] != thirdGeneration[i] || - firstGeneration[i] != fourthGeneration[i]) - { - fprintf(stderr, "Error, strings don't compare equal.\n"); - } - } - -}; - - -void StringThreadTest::check() { - // - // Check that the reference counts on the buffers for all of the source strings - // are one. The ref counts will have run way up while the test threads - // make numerous copies of the strings, but at the top of the loop all - // of the copies should be gone. - // - int i; - - for (i=0; i<5; i++) { - if (fSourceStrings[i].fFlags & UnicodeString::kRefCounted) { - const UChar *buf = fSourceStrings[i].getBuffer(); - uint32_t refCount = fSourceStrings[i].refCount(); - if (refCount != 1) { - fprintf(stderr, "\nFailure. SourceString Ref Count was %d, should be 1.\n", refCount); - } - } - } -}; - - -// -// Factory functoin for StringThreadTest. -// C function lets ThreadTest create StringTests without needing StringThreadTest header. -// -AbstractThreadTest *createStringTest() { - return new StringThreadTest(); -}; |