X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/374ca955a76ecab1204ca8bfa63ff9238d998416..fd0068a84e9996f225edba706498f6ed413d0673:/icuSources/test/iotest/iotest.cpp?ds=sidebyside diff --git a/icuSources/test/iotest/iotest.cpp b/icuSources/test/iotest/iotest.cpp index 320aca2a..748ae358 100644 --- a/icuSources/test/iotest/iotest.cpp +++ b/icuSources/test/iotest/iotest.cpp @@ -1,6 +1,6 @@ /* ********************************************************************** -* Copyright (C) 2002-2004, International Business Machines +* Copyright (C) 2002-2006, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** * file name: iotest.cpp @@ -14,7 +14,6 @@ #include "unicode/ustdio.h" -#include "unicode/ustream.h" #include "unicode/uclean.h" #include "unicode/ucnv.h" @@ -24,37 +23,11 @@ #include "ustr_cnv.h" #include "iotest.h" #include "unicode/tstdtmod.h" - -#if U_IOSTREAM_SOURCE >= 199711 -#include -#ifdef U_LINUX -#define USE_SSTREAM 1 -#include -#else -// is deprecated on some platforms, and the compiler complains very loudly if you use it. -#include -#endif -using namespace std; -#elif U_IOSTREAM_SOURCE >= 198506 -#include -#include -#endif +#include "putilimp.h" #include #include -U_CDECL_BEGIN -#ifdef WIN32 -const UChar NEW_LINE[] = {0x0d,0x0a,0}; -const char C_NEW_LINE[] = {0x0d,0x0a,0}; -#define UTF8_NEW_LINE "\x0d\x0a" -#else -const UChar NEW_LINE[] = {0x0a,0}; -const char C_NEW_LINE[] = {'\n',0}; -#define UTF8_NEW_LINE "\x0a" -#endif -U_CDECL_END - class DataDrivenLogger : public TestLog { static const char* fgDataDir; static char *fgTestDataPath; @@ -292,7 +265,7 @@ static void U_CALLCONV DataDrivenPrintf(void) uFileBufferLenReturned = u_fprintf_u(testFile, format, i64); break; case 0x73: // 's' char * - u_austrncpy(cBuffer, uBuffer, sizeof(cBuffer)); + u_austrncpy(cBuffer, argument, sizeof(cBuffer)); uBufferLenReturned = u_sprintf_u(uBuffer, format, cBuffer); uFileBufferLenReturned = u_fprintf_u(testFile, format, cBuffer); break; @@ -388,6 +361,7 @@ static void U_CALLCONV DataDrivenScanf(void) int32_t i32, expected32; int64_t i64, expected64; double dbl, expectedDbl; + volatile float flt, expectedFlt; // Use volatile in order to get around an Intel compiler issue. int32_t uBufferLenReturned; //const char *fileLocale = "en_US_POSIX"; @@ -437,6 +411,15 @@ static void U_CALLCONV DataDrivenScanf(void) i, dbl, expectedDbl); } break; + case 0x66: // 'f' float + expectedFlt = (float)atof(u_austrcpy(cBuffer, expectedResult)); + uBufferLenReturned = u_sscanf_u(argument, format, &flt); + //uFileBufferLenReturned = u_fscanf_u(testFile, format, flt); + if (flt != expectedFlt) { + log_err("error in scanf test case[%d] Got: %f Exp: %f\n", + i, flt, expectedFlt); + } + break; case 0x31: // '1' int8_t expected8 = (int8_t)uto64(expectedResult); uBufferLenReturned = u_sscanf_u(argument, format, &i8); @@ -681,97 +664,17 @@ static void U_CALLCONV DataDrivenPrintfPrecision(void) } U_CDECL_END -U_CDECL_BEGIN -static void U_CALLCONV TestStream(void) -{ -#if U_IOSTREAM_SOURCE >= 198506 - const UChar thisMu[] = { 0x74, 0x48, 0x69, 0x73, 0x3BC, 0}; - const UChar mu[] = { 0x6D, 0x75, 0}; - UnicodeString str1 = UNICODE_STRING_SIMPLE("str1"); - UnicodeString str2 = UNICODE_STRING_SIMPLE(" <<"); - UnicodeString str3 = UNICODE_STRING_SIMPLE("2"); - UnicodeString str4 = UNICODE_STRING_SIMPLE(" UTF-8 "); - UnicodeString inStr = UNICODE_STRING_SIMPLE(" UTF-8 "); - UnicodeString inStr2; - char defConvName[UCNV_MAX_CONVERTER_NAME_LENGTH*2]; - char inStrC[128]; - UErrorCode status = U_ZERO_ERROR; - UConverter *defConv; - static const char testStr[] = "\x42\x65\x67\x69\x6E\x6E\x69\x6E\x67\x20\x6F\x66\x20\x74\x65\x73\x74\x20\x73\x74\x72\x31\x20\x20\x20\x3C\x3C\x32\x31\x20" UTF8_NEW_LINE "\x20\x55\x54\x46\x2D\x38\x20\xCE\xBC\xF0\x90\x80\x81\xF0\x90\x80\x82"; - - str4.append((UChar32)0x03BC); /* mu */ - str4.append((UChar32)0x10001); - str4.append((UChar32)0x10002); - - /* release the default converter and use utf-8 for a bit */ - defConv = u_getDefaultConverter(&status); - if (U_FAILURE(status)) { - log_err("Can't get default converter\n"); - return; - } - ucnv_close(defConv); - strncpy(defConvName, ucnv_getDefaultName(), sizeof(defConvName)/sizeof(defConvName[0])); - ucnv_setDefaultName("UTF-8"); - -#ifdef USE_SSTREAM - ostringstream outTestStream; - istringstream inTestStream("\x20\x74\x48\x69\x73\xCE\xBC\xE2\x80\x82\x20\x6D\x75\x20\x77\x6F\x72\x6C\x64"); -#else - char testStreamBuf[512]; - ostrstream outTestStream(testStreamBuf, sizeof(testStreamBuf)); - istrstream inTestStream("\x20\x74\x48\x69\x73\xCE\xBC\xE2\x80\x82\x20\x6D\x75\x20\x77\x6F\x72\x6C\x64", 0); - - /* initialize testStreamBuf */ - memset(testStreamBuf, '*', sizeof(testStreamBuf)); - testStreamBuf[sizeof(testStreamBuf)-1] = 0; -#endif - - outTestStream << "\x42\x65\x67\x69\x6E\x6E\x69\x6E\x67\x20\x6F\x66\x20\x74\x65\x73\x74\x20"; - outTestStream << str1 << "\x20\x20" << str2 << str3 << "\x31\x20" << UTF8_NEW_LINE << str4 << ends; -#ifdef USE_SSTREAM - string tempStr = outTestStream.str(); - const char *testStreamBuf = tempStr.c_str(); -#endif - if (strcmp(testStreamBuf, testStr) != 0) { - log_err("Got: \"%s\", Expected: \"%s\"\n", testStreamBuf, testStr); - } - - inTestStream >> inStr >> inStr2; - if (inStr.compare(thisMu) != 0) { - u_austrncpy(inStrC, inStr.getBuffer(), inStr.length()); - inStrC[inStr.length()] = 0; - log_err("Got: \"%s\", Expected: \"tHis\\u03BC\"\n", inStrC); - } - if (inStr2.compare(mu) != 0) { - u_austrncpy(inStrC, inStr.getBuffer(), inStr.length()); - inStrC[inStr.length()] = 0; - log_err("Got: \"%s\", Expected: \"mu\"\n", inStrC); - } - - /* return the default converter to the original state. */ - ucnv_setDefaultName(defConvName); - defConv = u_getDefaultConverter(&status); - if (U_FAILURE(status)) { - log_err("Can't get default converter"); - return; - } - ucnv_close(defConv); -#else - log_info("U_IOSTREAM_SOURCE is disabled\n"); -#endif -} -U_CDECL_END - static void addAllTests(TestNode** root) { addFileTest(root); addStringTest(root); + addTranslitTest(root); #if !UCONFIG_NO_FORMATTING addTest(root, &DataDrivenPrintf, "datadriv/DataDrivenPrintf"); addTest(root, &DataDrivenPrintfPrecision, "datadriv/DataDrivenPrintfPrecision"); addTest(root, &DataDrivenScanf, "datadriv/DataDrivenScanf"); #endif - addTest(root, &TestStream, "stream/TestStream"); + addStreamTests(root); } /* returns the path to icu/source/data/out */ @@ -865,6 +768,10 @@ int main(int argc, char* argv[]) int32_t nerrors = 0; TestNode *root = NULL; UErrorCode errorCode = U_ZERO_ERROR; + UDate startTime, endTime; + int32_t diffTime; + + startTime = uprv_getUTCtime(); /* Check whether ICU will initialize without forcing the build data directory into * the ICU_DATA path. Success here means either the data dll contains data, or that @@ -916,5 +823,14 @@ int main(int argc, char* argv[]) cleanUpTestTree(root); DataDrivenLogger::cleanUp(); u_cleanup(); + + endTime = uprv_getUTCtime(); + diffTime = (int32_t)(endTime - startTime); + printf("Elapsed Time: %02d:%02d:%02d.%03d\n", + (int)((diffTime%U_MILLIS_PER_DAY)/U_MILLIS_PER_HOUR), + (int)((diffTime%U_MILLIS_PER_HOUR)/U_MILLIS_PER_MINUTE), + (int)((diffTime%U_MILLIS_PER_MINUTE)/U_MILLIS_PER_SECOND), + (int)(diffTime%U_MILLIS_PER_SECOND)); + return nerrors; }