Index: icu46/source/test/perf/charperf/charperf.cpp |
=================================================================== |
--- icu46/source/test/perf/charperf/charperf.cpp (revision 0) |
+++ icu46/source/test/perf/charperf/charperf.cpp (revision 0) |
@@ -0,0 +1,255 @@ |
+/******************************************************************** |
+ * COPYRIGHT: |
+ * Copyright (C) 2002-2006 IBM, Inc. All Rights Reserved. |
+ * |
+ ********************************************************************/ |
+/***************************************************************************** |
+* File charperf.cpp |
+* |
+* Modification History: |
+* Name Description |
+* Syn Wee Quek First Version |
+****************************************************************************** |
+*/ |
+ |
+/** |
+ * This program tests character properties performance. |
+ * APIs tested: |
+ * ICU4C |
+ * Windows |
+ */ |
+ |
+#include "charperf.h" |
+#include "uoptions.h" |
+ |
+UOption options[] = { |
+ UOPTION_DEF("min", 'n', UOPT_REQUIRES_ARG), |
+ UOPTION_DEF("min", 'x', UOPT_REQUIRES_ARG), |
+}; |
+int MIN_OPTION_ = 0; |
+int MAX_OPTION_ = 1; |
+ |
+int main(int argc, const char *argv[]) |
+{ |
+ UErrorCode status = U_ZERO_ERROR; |
+ CharPerformanceTest test(argc, argv, status); |
+ if (U_FAILURE(status)){ |
+ return status; |
+ } |
+ if (test.run() == FALSE){ |
+ fprintf(stderr, "FAILED: Tests could not be run please check the " |
+ "arguments.\n"); |
+ return -1; |
+ } |
+ return 0; |
+} |
+ |
+CharPerformanceTest::CharPerformanceTest(int32_t argc, const char *argv[], |
+ UErrorCode &status) |
+ : UPerfTest(argc, argv, status) |
+{ |
+ if (status== U_ILLEGAL_ARGUMENT_ERROR){ |
+ fprintf(stderr,gUsageString, "charperf"); |
+ return; |
+ } |
+ if (U_FAILURE(status)){ |
+ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", |
+ u_errorName(status)); |
+ return; |
+ } |
+ |
+ if (_remainingArgc < 0) { |
+ // that means there are some -names not matched in the super class |
+ // first tag is always skipped in u_parseArgs |
+ int size = - _remainingArgc; |
+ argv += argc - size; |
+ argc = size; |
+ _remainingArgc = u_parseArgs(argc, (char**)argv, |
+ (int32_t)(sizeof(options)/sizeof(options[0])), options); |
+ } |
+ MIN_ = 0; |
+ if (sizeof(wchar_t) > 2) { |
+ // for stdlibs like glibc that supports 32 bits wchar |
+ // we test for the whole unicode character set by default |
+ MAX_ = 0x10ffff; |
+ } |
+ else { |
+ MAX_ = 0xffff; |
+ } |
+ printf("MAX_ size will be 0x%x\n", MAX_); |
+ if (options[MIN_OPTION_].doesOccur) { |
+ MIN_ = atoi(options[MIN_OPTION_].value); |
+ } |
+ if (options[MAX_OPTION_].doesOccur) { |
+ MAX_ = atoi(options[MAX_OPTION_].value); |
+ } |
+} |
+ |
+CharPerformanceTest::~CharPerformanceTest() |
+{ |
+} |
+ |
+UPerfFunction* CharPerformanceTest::runIndexedTest(int32_t index, UBool exec, |
+ const char *&name, |
+ char* par) |
+{ |
+ switch (index) { |
+ TESTCASE(0, TestIsAlpha); |
+ TESTCASE(1, TestIsUpper); |
+ TESTCASE(2, TestIsLower); |
+ TESTCASE(3, TestIsDigit); |
+ TESTCASE(4, TestIsSpace); |
+ TESTCASE(5, TestIsAlphaNumeric); |
+ TESTCASE(6, TestIsPrint); |
+ TESTCASE(7, TestIsControl); |
+ TESTCASE(8, TestToLower); |
+ TESTCASE(9, TestToUpper); |
+ TESTCASE(10, TestIsWhiteSpace); |
+ TESTCASE(11, TestStdLibIsAlpha); |
+ TESTCASE(12, TestStdLibIsUpper); |
+ TESTCASE(13, TestStdLibIsLower); |
+ TESTCASE(14, TestStdLibIsDigit); |
+ TESTCASE(15, TestStdLibIsSpace); |
+ TESTCASE(16, TestStdLibIsAlphaNumeric); |
+ TESTCASE(17, TestStdLibIsPrint); |
+ TESTCASE(18, TestStdLibIsControl); |
+ TESTCASE(19, TestStdLibToLower); |
+ TESTCASE(20, TestStdLibToUpper); |
+ TESTCASE(21, TestStdLibIsWhiteSpace); |
+ default: |
+ name = ""; |
+ return NULL; |
+ } |
+ return NULL; |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsAlpha() |
+{ |
+ return new CharPerfFunction(isAlpha, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsUpper() |
+{ |
+ return new CharPerfFunction(isUpper, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsLower() |
+{ |
+ return new CharPerfFunction(isLower, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsDigit() |
+{ |
+ return new CharPerfFunction(isDigit, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsSpace() |
+{ |
+ return new CharPerfFunction(isSpace, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsAlphaNumeric() |
+{ |
+ return new CharPerfFunction(isAlphaNumeric, MIN_, MAX_); |
+} |
+ |
+/** |
+* This test may be different since c lib has a type PUNCT and it is printable. |
+* iswgraph is not used for testing since it is a subset of iswprint with the |
+* exception of returning true for white spaces. no match found in icu4c. |
+*/ |
+UPerfFunction* CharPerformanceTest::TestIsPrint() |
+{ |
+ return new CharPerfFunction(isPrint, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsControl() |
+{ |
+ return new CharPerfFunction(isControl, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestToLower() |
+{ |
+ return new CharPerfFunction(toLower, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestToUpper() |
+{ |
+ return new CharPerfFunction(toUpper, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestIsWhiteSpace() |
+{ |
+ return new CharPerfFunction(isWhiteSpace, MIN_, MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsAlpha() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsAlpha, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsUpper() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsUpper, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsLower() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsLower, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsDigit() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsDigit, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsSpace() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsSpace, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsAlphaNumeric() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsAlphaNumeric, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+/** |
+* This test may be different since c lib has a type PUNCT and it is printable. |
+* iswgraph is not used for testing since it is a subset of iswprint with the |
+* exception of returning true for white spaces. no match found in icu4c. |
+*/ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsPrint() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsPrint, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsControl() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsControl, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibToLower() |
+{ |
+ return new StdLibCharPerfFunction(StdLibToLower, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibToUpper() |
+{ |
+ return new StdLibCharPerfFunction(StdLibToUpper, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
+ |
+UPerfFunction* CharPerformanceTest::TestStdLibIsWhiteSpace() |
+{ |
+ return new StdLibCharPerfFunction(StdLibIsWhiteSpace, (wchar_t)MIN_, |
+ (wchar_t)MAX_); |
+} |
Property changes on: icu46/source/test/perf/charperf/charperf.cpp |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |