/********************************************************************
* COPYRIGHT:
- * Copyright (C) 2002 IBM, Inc. All Rights Reserved.
+ * Copyright (C) 2002-2006 IBM, Inc. All Rights Reserved.
*
********************************************************************/
/*****************************************************************************
#include "uoptions.h"
UOption options[] = {
- UOPTION_DEF("min", 'n', UOPT_REQUIRES_ARG),
- UOPTION_DEF("min", 'x', UOPT_REQUIRES_ARG),
- };
+ UOPTION_DEF("min", 'n', UOPT_REQUIRES_ARG),
+ UOPTION_DEF("min", 'x', UOPT_REQUIRES_ARG),
+};
int MIN_OPTION_ = 0;
int MAX_OPTION_ = 1;
{
UErrorCode status = U_ZERO_ERROR;
CharPerformanceTest test(argc, argv, status);
- if (U_FAILURE(status)){
+ if (U_FAILURE(status)){
return status;
}
if (test.run() == FALSE){
fprintf(stderr, "FAILED: Tests could not be run please check the "
- "arguments.\n");
+ "arguments.\n");
return -1;
}
return 0;
}
CharPerformanceTest::CharPerformanceTest(int32_t argc, const char *argv[],
- UErrorCode &status)
- : UPerfTest(argc, argv, status)
+ UErrorCode &status)
+ : UPerfTest(argc, argv, status)
{
- if (status== U_ILLEGAL_ARGUMENT_ERROR){
- fprintf(stderr,gUsageString, "charperf");
- return;
+ 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));
+ 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;
- MAX_ = 0xffff;
-
- if (options[MIN_OPTION_].doesOccur) {
- MIN_ = atoi(options[MIN_OPTION_].value);
- }
- if (options[MAX_OPTION_].doesOccur) {
- MAX_ = atoi(options[MAX_OPTION_].value);
- }
+ 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)
+ 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);
+ 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;
UPerfFunction* CharPerformanceTest::TestIsAlpha()
{
- return new CharPerfFunction(isAlpha, MIN_, MAX_);
+ return new CharPerfFunction(isAlpha, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestIsUpper()
{
- return new CharPerfFunction(isUpper, MIN_, MAX_);
+ return new CharPerfFunction(isUpper, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestIsLower()
{
- return new CharPerfFunction(isLower, MIN_, MAX_);
+ return new CharPerfFunction(isLower, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestIsDigit()
{
- return new CharPerfFunction(isDigit, MIN_, MAX_);
+ return new CharPerfFunction(isDigit, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestIsSpace()
{
- return new CharPerfFunction(isSpace, MIN_, MAX_);
+ return new CharPerfFunction(isSpace, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestIsAlphaNumeric()
{
- return new CharPerfFunction(isAlphaNumeric, MIN_, MAX_);
+ 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.
- */
+* 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_);
+ return new CharPerfFunction(isPrint, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestIsControl()
{
- return new CharPerfFunction(isControl, MIN_, MAX_);
+ return new CharPerfFunction(isControl, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestToLower()
{
- return new CharPerfFunction(toLower, MIN_, MAX_);
+ return new CharPerfFunction(toLower, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestToUpper()
{
- return new CharPerfFunction(toUpper, MIN_, MAX_);
+ return new CharPerfFunction(toUpper, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestIsWhiteSpace()
{
- return new CharPerfFunction(isWhiteSpace, MIN_, MAX_);
+ return new CharPerfFunction(isWhiteSpace, MIN_, MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsAlpha()
{
- return new StdLibCharPerfFunction(StdLibIsAlpha, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibIsAlpha, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsUpper()
{
- return new StdLibCharPerfFunction(StdLibIsUpper, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibIsUpper, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsLower()
{
- return new StdLibCharPerfFunction(StdLibIsLower, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibIsLower, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsDigit()
{
- return new StdLibCharPerfFunction(StdLibIsDigit, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibIsDigit, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsSpace()
{
- return new StdLibCharPerfFunction(StdLibIsSpace, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibIsSpace, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsAlphaNumeric()
{
- return new StdLibCharPerfFunction(StdLibIsAlphaNumeric, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ 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.
- */
+* 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_);
+ return new StdLibCharPerfFunction(StdLibIsPrint, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsControl()
{
- return new StdLibCharPerfFunction(StdLibIsControl, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibIsControl, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibToLower()
{
- return new StdLibCharPerfFunction(StdLibToLower, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibToLower, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibToUpper()
{
- return new StdLibCharPerfFunction(StdLibToUpper, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibToUpper, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}
UPerfFunction* CharPerformanceTest::TestStdLibIsWhiteSpace()
{
- return new StdLibCharPerfFunction(StdLibIsWhiteSpace, (wchar_t)MIN_,
- (wchar_t)MAX_);
+ return new StdLibCharPerfFunction(StdLibIsWhiteSpace, (wchar_t)MIN_,
+ (wchar_t)MAX_);
}