1f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/******************************************************************** 2f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) * COPYRIGHT: 3f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) * Copyright (c) 1998-2010, International Business Machines Corporation and 4f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) * others. All Rights Reserved. 5f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) ********************************************************************/ 6f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/* 7f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* File putiltst.c (Tests the API in putil) 8f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* 9f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* Modification History: 10f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* 11f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* Date Name Description 12f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* 07/12/2000 Madhu Creation 13f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)******************************************************************************* 14f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)*/ 15f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 16f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "unicode/utypes.h" 17f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "cintltst.h" 18f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "cmemory.h" 19f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "unicode/putil.h" 20f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "unicode/ustring.h" 21f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "unicode/icudataver.h" 22f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "cstring.h" 23f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "putilimp.h" 24f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "toolutil.h" 25f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "uinvchar.h" 26f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include <stdio.h> 27f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 28f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 29f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static UBool compareWithNAN(double x, double y); 30f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void doAssert(double expect, double got, const char *message); 31f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 32f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void TestPUtilAPI(void){ 33f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 34f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) double n1=0.0, y1=0.0, expn1, expy1; 35f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) double value1 = 0.021; 36f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) char *str=0; 37f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UBool isTrue=FALSE; 38f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 39f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_modf()\n"); 40f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) y1 = uprv_modf(value1, &n1); 41f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1=0; 42f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expy1=0.021; 43f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(y1 != expy1 || n1 != expn1){ 44f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("Error in uprv_modf. Expected IntegralValue=%f, Got=%f, \n Expected FractionalValue=%f, Got=%f\n", 45f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1, n1, expy1, y1); 46f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 47f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(getTestOption(VERBOSITY_OPTION)){ 48f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("[float] x = %f n = %f y = %f\n", value1, n1, y1); 49f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 50f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_fmod()\n"); 51f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1=uprv_fmod(30.50, 15.00); 52f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(expn1, 0.5, "uprv_fmod(30.50, 15.00) failed."); 53f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 54f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_ceil()\n"); 55f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1=uprv_ceil(value1); 56f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(expn1, 1, "uprv_ceil(0.021) failed."); 57f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 58f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_floor()\n"); 59f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1=uprv_floor(value1); 60f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(expn1, 0, "uprv_floor(0.021) failed."); 61f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 62f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_fabs()\n"); 63f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1=uprv_fabs((2.02-1.345)); 64f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(expn1, 0.675, "uprv_fabs(2.02-1.345) failed."); 65f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 66f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_fmax()\n"); 67f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_fmax(2.4, 1.2), 2.4, "uprv_fmax(2.4, 1.2) failed."); 68f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 69f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_fmax() with x value= NaN\n"); 70f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1=uprv_fmax(uprv_getNaN(), 1.2); 71f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(expn1, uprv_getNaN(), "uprv_fmax(uprv_getNaN(), 1.2) failed. when one parameter is NaN"); 72f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 73f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_fmin()\n"); 74f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_fmin(2.4, 1.2), 1.2, "uprv_fmin(2.4, 1.2) failed."); 75f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 76f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_fmin() with x value= NaN\n"); 77f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) expn1=uprv_fmin(uprv_getNaN(), 1.2); 78f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(expn1, uprv_getNaN(), "uprv_fmin(uprv_getNaN(), 1.2) failed. when one parameter is NaN"); 79f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 80f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_max()\n"); 81f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_max(4, 2), 4, "uprv_max(4, 2) failed."); 82f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 83f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_min()\n"); 84f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_min(-4, 2), -4, "uprv_min(-4, 2) failed."); 85f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 86f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_trunc()\n"); 87f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_trunc(12.3456), 12, "uprv_trunc(12.3456) failed."); 88f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_trunc(12.234E2), 1223, "uprv_trunc(12.234E2) failed."); 89f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_trunc(uprv_getNaN()), uprv_getNaN(), "uprv_trunc(uprv_getNaN()) failed. with parameter=NaN"); 90f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_trunc(uprv_getInfinity()), uprv_getInfinity(), "uprv_trunc(uprv_getInfinity()) failed. with parameter=Infinity"); 91f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 92f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 93f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_pow10()\n"); 94f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_pow10(4), 10000, "uprv_pow10(4) failed."); 95f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 96f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_isNegativeInfinity()\n"); 97f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) isTrue=uprv_isNegativeInfinity(uprv_getInfinity() * -1); 98f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(isTrue != TRUE){ 99f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: uprv_isNegativeInfinity failed.\n"); 100f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 101f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_isPositiveInfinity()\n"); 102f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) isTrue=uprv_isPositiveInfinity(uprv_getInfinity()); 103f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(isTrue != TRUE){ 104f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: uprv_isPositiveInfinity failed.\n"); 105f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 106f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_isInfinite()\n"); 107f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) isTrue=uprv_isInfinite(uprv_getInfinity()); 108f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(isTrue != TRUE){ 109f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: uprv_isInfinite failed.\n"); 110f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 111f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 112f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#if 0 113f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API uprv_digitsAfterDecimal()....\n"); 114f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(value1), 3, "uprv_digitsAfterDecimal() failed."); 115f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(1.2345E2), 2, "uprv_digitsAfterDecimal(1.2345E2) failed."); 116f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(1.2345E-2), 6, "uprv_digitsAfterDecimal(1.2345E-2) failed."); 117f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(1.2345E2), 2, "uprv_digitsAfterDecimal(1.2345E2) failed."); 118f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(-1.2345E-20), 24, "uprv_digitsAfterDecimal(1.2345E-20) failed."); 119f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(1.2345E20), 0, "uprv_digitsAfterDecimal(1.2345E20) failed."); 120f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(-0.021), 3, "uprv_digitsAfterDecimal(-0.021) failed."); 121f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(23.0), 0, "uprv_digitsAfterDecimal(23.0) failed."); 122f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) doAssert(uprv_digitsAfterDecimal(0.022223333321), 9, "uprv_digitsAfterDecimal(0.022223333321) failed."); 123f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#endif 124f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 125f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_errorName()...\n"); 126f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) str=(char*)u_errorName((UErrorCode)0); 127f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(str, "U_ZERO_ERROR") != 0){ 128f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_getVersion() failed. Expected: U_ZERO_ERROR Got=%s\n", str); 129f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 130f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_errorName()...\n"); 131f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) str=(char*)u_errorName((UErrorCode)-127); 132f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(str, "U_USING_DEFAULT_WARNING") != 0){ 133f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_getVersion() failed. Expected: U_USING_DEFAULT_WARNING Got=%s\n", str); 134f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 135f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_errorName().. with BOGUS ERRORCODE...\n"); 136f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) str=(char*)u_errorName((UErrorCode)200); 137f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(str, "[BOGUS UErrorCode]") != 0){ 138f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_getVersion() failed. Expected: [BOGUS UErrorCode] Got=%s\n", str); 139f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 140f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 141f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 142f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char* dataDirectory; 143f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t dataDirectoryLen; 144f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UChar *udataDir=0; 145f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UChar temp[100]; 146f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) char *charvalue=0; 147f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing chars to UChars\n"); 148f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 149f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* This cannot really work on a japanese system. u_uastrcpy will have different results than */ 150f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* u_charsToUChars when there is a backslash in the string! */ 151f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /*dataDirectory=u_getDataDirectory();*/ 152f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 153f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) dataDirectory="directory1"; /*no backslashes*/ 154f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) dataDirectoryLen=(int32_t)strlen(dataDirectory); 155f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) udataDir=(UChar*)malloc(sizeof(UChar) * (dataDirectoryLen + 1)); 156f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_charsToUChars(dataDirectory, udataDir, (dataDirectoryLen + 1)); 157f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_uastrcpy(temp, dataDirectory); 158f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 159f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(u_strcmp(temp, udataDir) != 0){ 160f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_charsToUChars failed. Expected %s, Got %s\n", austrdup(temp), austrdup(udataDir)); 161f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 162f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing UChars to chars\n"); 163f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) charvalue=(char*)malloc(sizeof(char) * (u_strlen(udataDir) + 1)); 164f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 165f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_UCharsToChars(udataDir, charvalue, (u_strlen(udataDir)+1)); 166f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(charvalue, dataDirectory) != 0){ 167f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_UCharsToChars failed. Expected %s, Got %s\n", charvalue, dataDirectory); 168f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 169f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) free(charvalue); 170f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) free(udataDir); 171f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 172f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 173f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing uprv_timezone()....\n"); 174f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 175f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t tzoffset = uprv_timezone(); 176f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Value returned from uprv_timezone = %d\n", tzoffset); 177f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (tzoffset != 28800) { 178f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("***** WARNING: If testing in the PST timezone, t_timezone should return 28800! *****"); 179f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 180f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if ((tzoffset % 1800 != 0)) { 181f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_info("Note: t_timezone offset of %ld (for %s : %s) is not a multiple of 30min.", tzoffset, uprv_tzname(0), uprv_tzname(1)); 182f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 183f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /*tzoffset=uprv_getUTCtime();*/ 184f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 185f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 186f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 187f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 188f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void TestVersion() 189f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 190f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UVersionInfo versionArray = {0x01, 0x00, 0x02, 0x02}; 191f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UVersionInfo versionArray2 = {0x01, 0x00, 0x02, 0x02}; 192f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) char versionString[17]; /* xxx.xxx.xxx.xxx\0 */ 193f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UChar versionUString[] = { 0x0031, 0x002E, 0x0030, 0x002E, 194f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 0x0032, 0x002E, 0x0038, 0x0000 }; /* 1.0.2.8 */ 195f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UBool isModified = FALSE; 196f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UVersionInfo version; 197f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UErrorCode status = U_ZERO_ERROR; 198f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 199f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_versionToString().....\n"); 200f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 201f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "1.0.2.2") != 0){ 202f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed. Expected: 1.0.2.2, Got=%s\n", versionString); 203f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 204f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_versionToString().....with versionArray=NULL\n"); 205f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(NULL, versionString); 206f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "") != 0){ 207f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed. with versionArray=NULL. It should just return\n"); 208f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 209f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_versionToString().....with versionArray=NULL\n"); 210f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(NULL, versionString); 211f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "") != 0){ 212f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed . It should just return\n"); 213f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 214f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_versionToString().....with versionString=NULL\n"); 215f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, NULL); 216f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "") != 0){ 217f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed. with versionArray=NULL It should just return\n"); 218f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 219f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) versionArray[0] = 0x0a; 220f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_versionToString().....\n"); 221f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 222f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "10.0.2.2") != 0){ 223f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed. Expected: 10.0.2.2, Got=%s\n", versionString); 224f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 225f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) versionArray[0] = 0xa0; 226f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 227f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "160.0.2.2") != 0){ 228f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed. Expected: 160.0.2.2, Got=%s\n", versionString); 229f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 230f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) versionArray[0] = 0xa0; 231f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) versionArray[1] = 0xa0; 232f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 233f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "160.160.2.2") != 0){ 234f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed. Expected: 160.160.2.2, Got=%s\n", versionString); 235f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 236f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) versionArray[0] = 0x01; 237f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) versionArray[1] = 0x0a; 238f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 239f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "1.10.2.2") != 0){ 240f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_versionToString() failed. Expected: 160.160.2.2, Got=%s\n", versionString); 241f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 242f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 243f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_versionFromString() ....\n"); 244f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionFromString(versionArray, "1.3.5.6"); 245f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 246f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "1.3.5.6") != 0){ 247f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_getVersion() failed. Expected: 1.3.5.6, Got=%s\n", versionString); 248f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 249f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_versionFromString() where versionArray=NULL....\n"); 250f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionFromString(NULL, "1.3.5.6"); 251f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 252f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, "1.3.5.6") != 0){ 253f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_getVersion() failed. Expected: 1.3.5.6, Got=%s\n", versionString); 254f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 255f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 256f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing the API u_getVersion().....\n"); 257f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_getVersion(versionArray); 258f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray, versionString); 259f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(strcmp(versionString, U_ICU_VERSION) != 0){ 260f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: u_getVersion() failed. Got=%s, expected %s\n", versionString, U_ICU_VERSION); 261f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 262f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* test unicode */ 263f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing u_versionFromUString...\n"); 264f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionFromString(versionArray,"1.0.2.8"); 265f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionFromUString(versionArray2, versionUString); 266f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionToString(versionArray2, versionString); 267f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(memcmp(versionArray, versionArray2, sizeof(UVersionInfo))) { 268f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("FAIL: u_versionFromUString produced a different result - not 1.0.2.8 but %s [%x.%x.%x.%x]\n", 269f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) versionString, 270f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) (int)versionArray2[0], 271f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) (int)versionArray2[1], 272f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) (int)versionArray2[2], 273f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) (int)versionArray2[3]); 274f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 275f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) else { 276f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose(" from UString: %s\n", versionString); 277f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 278f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 279f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* Test the data version API for better code coverage */ 280f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_getDataVersion(version, &status); 281f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (U_FAILURE(status)) { 282f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_data_err("ERROR: Unable to get data version. %s\n", u_errorName(status)); 283f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 284f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_isDataOlder(version, &isModified, &status); 285f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (U_FAILURE(status)) { 286f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR: Unable to compare data version. %s\n", u_errorName(status)); 287f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 288f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 289f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 290f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 291f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void TestCompareVersions() 292f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 293f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* use a 1d array to be palatable to java */ 294f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *testCases[] = { 295f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* v1 <|=|> v2 */ 296f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "0.0.0.0", "=", "0.0.0.0", 297f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "3.1.2.0", ">", "3.0.9.0", 298f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "3.2.8.6", "<", "3.4", 299f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "4.0", ">", "3.2", 300f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) NULL, NULL, NULL 301f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }; 302f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *v1str; 303f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *opstr; 304f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *v2str; 305f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t op, invop, got, invgot; 306f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UVersionInfo v1, v2; 307f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t j; 308f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing memcmp()\n"); 309f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) for(j=0;testCases[j]!=NULL;j+=3) { 310f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) v1str = testCases[j+0]; 311f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) opstr = testCases[j+1]; 312f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) v2str = testCases[j+2]; 313f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) switch(opstr[0]) { 314f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) case '-': 315f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) case '<': op = -1; break; 316f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) case '0': 317f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) case '=': op = 0; break; 318f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) case '+': 319f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) case '>': op = 1; break; 320f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) default: log_err("Bad operator at j/3=%d\n", (j/3)); return; 321f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 322f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) invop = 0-op; /* inverse operation: with v1 and v2 switched */ 323f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionFromString(v1, v1str); 324f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) u_versionFromString(v2, v2str); 325f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) got = memcmp(v1, v2, sizeof(UVersionInfo)); 326f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) invgot = memcmp(v2, v1, sizeof(UVersionInfo)); /* Opposite */ 327f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if((got <= 0 && op <= 0) || (got >= 0 && op >= 0)) { 328f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("%d: %s %s %s, OK\n", (j/3), v1str, opstr, v2str); 329f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 330f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("%d: %s %s %s: wanted values of the same sign, %d got %d\n", (j/3), v1str, opstr, v2str, op, got); 331f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 332f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if((invgot >= 0 && invop >= 0) || (invgot <= 0 && invop <= 0)) { 333f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("%d: %s (%d) %s, OK (inverse)\n", (j/3), v2str, invop, v1str); 334f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 335f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("%d: %s (%d) %s: wanted values of the same sign, %d got %d\n", (j/3), v2str, invop, v1str, invop, invgot); 336f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 337f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 338f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 339f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 340f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 341f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 342f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#if 0 343f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void testIEEEremainder() 344f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 345f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) double pinf = uprv_getInfinity(); 346f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) double ninf = -uprv_getInfinity(); 347f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) double nan = uprv_getNaN(); 348f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/* double pzero = 0.0;*/ 349f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/* double nzero = 0.0; 350f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) nzero *= -1;*/ 351f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 352f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* simple remainder checks*/ 353f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(7.0, 2.5, -0.5); 354f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(7.0, -2.5, -0.5); 355f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* this should work 356f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(43.7, 2.5, 1.2); 357f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) */ 358f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 359f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* infinity and real*/ 360f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(1.0, pinf, 1.0); 361f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(1.0, ninf, 1.0); 362f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 363f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /*test infinity and real*/ 364f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(nan, 1.0, nan); 365f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(1.0, nan, nan); 366f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /*test infinity and nan*/ 367f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(ninf, nan, nan); 368f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(pinf, nan, nan); 369f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 370f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* test infinity and zero */ 371f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/* remainderTest(pinf, pzero, 1.25); 372f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(pinf, nzero, 1.25); 373f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(ninf, pzero, 1.25); 374f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) remainderTest(ninf, nzero, 1.25); */ 375f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 376f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 377f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void remainderTest(double x, double y, double exp) 378f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 379f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) double result = uprv_IEEEremainder(x,y); 380f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 381f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if( uprv_isNaN(result) && 382f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) ! ( uprv_isNaN(x) || uprv_isNaN(y))) { 383f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("FAIL: got NaN as result without NaN as argument"); 384f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err(" IEEEremainder(%f, %f) is %f, expected %f\n", x, y, result, exp); 385f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 386f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) else if(!compareWithNAN(result, exp)) { 387f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("FAIL: IEEEremainder(%f, %f) is %f, expected %f\n", x, y, result, exp); 388f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else{ 389f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("OK: IEEEremainder(%f, %f) is %f\n", x, y, result); 390f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 391f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 392f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 393f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#endif 394f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 395f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static UBool compareWithNAN(double x, double y) 396f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 397f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if( uprv_isNaN(x) || uprv_isNaN(y) ) { 398f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(!uprv_isNaN(x) || !uprv_isNaN(y) ) { 399f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return FALSE; 400f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 401f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 402f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) else if (y != x) { /* no NaN's involved */ 403f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return FALSE; 404f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 405f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 406f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return TRUE; 407f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 408f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 409f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void doAssert(double got, double expect, const char *message) 410f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 411f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(! compareWithNAN(expect, got) ) { 412f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("ERROR : %s. Expected : %lf, Got: %lf\n", message, expect, got); 413f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 414f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 415f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 416f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 417f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#define _CODE_ARR_LEN 8 418f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static const UErrorCode errorCode[_CODE_ARR_LEN] = { 419f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_USING_FALLBACK_WARNING, 420f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_STRING_NOT_TERMINATED_WARNING, 421f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ILLEGAL_ARGUMENT_ERROR, 422f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_STATE_TOO_OLD_ERROR, 423f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_BAD_VARIABLE_DEFINITION, 424f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_RULE_MASK_ERROR, 425f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_UNEXPECTED_TOKEN, 426f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_UNSUPPORTED_ATTRIBUTE 427f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)}; 428f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 429f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static const char* str[] = { 430f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_USING_FALLBACK_WARNING", 431f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_STRING_NOT_TERMINATED_WARNING", 432f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_ILLEGAL_ARGUMENT_ERROR", 433f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_STATE_TOO_OLD_ERROR", 434f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_BAD_VARIABLE_DEFINITION", 435f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_RULE_MASK_ERROR", 436f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_UNEXPECTED_TOKEN", 437f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "U_UNSUPPORTED_ATTRIBUTE" 438f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)}; 439f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 440f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void TestErrorName(void){ 441f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t code=0; 442f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char* errorName ; 443f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) for(;code<U_ERROR_LIMIT;code++){ 444f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) errorName = u_errorName((UErrorCode)code); 445f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(!errorName || errorName[0] == 0) { 446f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("Error: u_errorName(0x%X) failed.\n",code); 447f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 448f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 449f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 450f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) for(code=0;code<_CODE_ARR_LEN; code++){ 451f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) errorName = u_errorName(errorCode[code]); 452f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(uprv_strcmp(str[code],errorName )!=0){ 453f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("Error : u_errorName failed. Expected: %s Got: %s \n",str[code],errorName); 454f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 455f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 456f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 457f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 458f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#define AESTRNCPY_SIZE 13 459f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 460f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static const char * dump_binline(uint8_t *bytes) { 461f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) static char buf[512]; 462f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t i; 463f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) for(i=0;i<13;i++) { 464f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) sprintf(buf+(i*3), "%02x ", bytes[i]); 465f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 466f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return buf; 467f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 468f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 469f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void Test_aestrncpy(int32_t line, const uint8_t *expect, const uint8_t *src, int32_t len) 470f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 471f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) uint8_t str_buf[AESTRNCPY_SIZE] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; 472f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) uint8_t *ret; 473f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 474f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("\n%s:%d: Beginning test of uprv_aestrncpy(dst, src, %d)\n", __FILE__, line, len); 475f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) ret = uprv_aestrncpy(str_buf, src, len); 476f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(ret != str_buf) { 477f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("\n%s:%d: FAIL: uprv_aestrncpy returned %p expected %p\n", __FILE__, line, (void*)ret, (void*)str_buf); 478f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 479f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(!uprv_memcmp(str_buf, expect, AESTRNCPY_SIZE)) { 480f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("\n%s:%d: OK - compared OK.", __FILE__, line); 481f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("\n%s:%d: expected: %s", __FILE__, line, dump_binline((uint8_t *)expect)); 482f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("\n%s:%d: got : %s\n", __FILE__, line, dump_binline(str_buf)); 483f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 484f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err ("\n%s:%d: FAIL: uprv_aestrncpy output differs", __FILE__, line); 485f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err ("\n%s:%d: expected: %s", __FILE__, line, dump_binline((uint8_t *)expect)); 486f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err ("\n%s:%d: got : %s\n", __FILE__, line, dump_binline(str_buf)); 487f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 488f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 489f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 490f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void TestString(void) 491f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 492f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 493f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) uint8_t str_tst[AESTRNCPY_SIZE] = { 0x81, 0x4b, 0x5c, 0x82, 0x25, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }; 494f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 495f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) uint8_t str_exp1[AESTRNCPY_SIZE] = { 0x61, 0x2e, 0x2a, 0x62, 0x0a, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; 496f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) uint8_t str_exp2[AESTRNCPY_SIZE] = { 0x61, 0x2e, 0x2a, 0x62, 0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; 497f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) uint8_t str_exp3[AESTRNCPY_SIZE] = { 0x61, 0x2e, 0x2a, 0x62, 0x0a, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff }; 498f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 499f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 500f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 501f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* test #1- copy with -1 length */ 502f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) Test_aestrncpy(__LINE__, str_exp1, str_tst, -1); 503f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) Test_aestrncpy(__LINE__, str_exp1, str_tst, 6); 504f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) Test_aestrncpy(__LINE__, str_exp2, str_tst, 5); 505f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) Test_aestrncpy(__LINE__, str_exp3, str_tst, 8); 506f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 507f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 508f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)void addPUtilTest(TestNode** root); 509f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 510f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void addToolUtilTests(TestNode** root); 511f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 512f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)void 513f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)addPUtilTest(TestNode** root) 514f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 515f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &TestVersion, "putiltst/TestVersion"); 516f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &TestCompareVersions, "putiltst/TestCompareVersions"); 517f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/* addTest(root, &testIEEEremainder, "putiltst/testIEEEremainder"); */ 518f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &TestErrorName, "putiltst/TestErrorName"); 519f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &TestPUtilAPI, "putiltst/TestPUtilAPI"); 520f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &TestString, "putiltst/TestString"); 521f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addToolUtilTests(root); 522f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 523f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 524f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/* Tool Util Tests ================ */ 525f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#define TOOLUTIL_TESTBUF_SIZE 2048 526f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static char toolutil_testBuf[TOOLUTIL_TESTBUF_SIZE]; 527f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static const char *NULLSTR="NULL"; 528f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 529f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/** 530f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) * Normalize NULL to 'NULL' for testing 531f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) */ 532f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#define STRNULL(x) ((x)?(x):NULLSTR) 533f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 534f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void toolutil_findBasename(void) 535f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 536f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) struct { 537f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *inBuf; 538f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *expectResult; 539f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } testCases[] = { 540f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 541f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_SEP_STRING "usr" U_FILE_SEP_STRING "bin" U_FILE_SEP_STRING "pkgdata", 542f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "pkgdata" 543f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 544f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 545f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_SEP_STRING "usr" U_FILE_SEP_STRING "bin" U_FILE_SEP_STRING, 546f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "" 547f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 548f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 549f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" U_FILE_ALT_SEP_STRING "pkgdata", 550f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "pkgdata" 551f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 552f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 553f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" U_FILE_ALT_SEP_STRING, 554f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "" 555f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 556f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }; 557f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t count=(sizeof(testCases)/sizeof(testCases[0])); 558f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t i; 559f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 560f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 561f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing findBaseName()\n"); 562f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) for(i=0;i<count;i++) { 563f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *result; 564f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *input = STRNULL(testCases[i].inBuf); 565f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *expect = STRNULL(testCases[i].expectResult); 566f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Test case [%d/%d]: %s\n", i, count-1, input); 567f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) result = STRNULL(findBasename(testCases[i].inBuf)); 568f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(result==expect||!strcmp(result,expect)) { 569f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose(" -> %s PASS\n", result); 570f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 571f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("FAIL: Test case [%d/%d]: %s -> %s but expected %s\n", i, count-1, input, result, expect); 572f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 573f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 574f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 575f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 576f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 577f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void toolutil_findDirname(void) 578f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 579f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int i; 580f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) struct { 581f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *inBuf; 582f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t outBufLen; 583f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UErrorCode expectStatus; 584f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *expectResult; 585f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } testCases[] = { 586f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 587f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_SEP_STRING "usr" U_FILE_SEP_STRING "bin" U_FILE_SEP_STRING "pkgdata", 588f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 200, 589f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 590f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_SEP_STRING "usr" U_FILE_SEP_STRING "bin", 591f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 592f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 593f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_SEP_STRING "usr" U_FILE_SEP_STRING "bin" U_FILE_SEP_STRING "pkgdata", 594f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 2, 595f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_BUFFER_OVERFLOW_ERROR, 596f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) NULL 597f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 598f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 599f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" U_FILE_ALT_SEP_STRING "pkgdata", 600f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 200, 601f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 602f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" 603f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 604f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 605f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" U_FILE_ALT_SEP_STRING "pkgdata", 606f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 2, 607f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_BUFFER_OVERFLOW_ERROR, 608f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) NULL 609f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 610f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 611f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" U_FILE_SEP_STRING "pkgdata", 612f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 200, 613f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 614f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" 615f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 616f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 617f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_SEP_STRING "bin" U_FILE_ALT_SEP_STRING "pkgdata", 618f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 200, 619f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 620f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_SEP_STRING "bin" 621f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 622f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 623f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "usr" U_FILE_ALT_SEP_STRING "bin" U_FILE_ALT_SEP_STRING "pkgdata", 624f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 2, 625f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_BUFFER_OVERFLOW_ERROR, 626f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) NULL 627f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 628f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 629f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING "vmlinuz", 630f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 200, 631f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 632f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_ALT_SEP_STRING 633f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 634f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 635f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_SEP_STRING "vmlinux", 636f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 200, 637f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 638f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_FILE_SEP_STRING 639f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 640f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 641f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "pkgdata", 642f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 0, 643f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_BUFFER_OVERFLOW_ERROR, 644f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) NULL 645f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 646f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 647f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "pkgdata", 648f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 1, 649f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_BUFFER_OVERFLOW_ERROR, 650f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) NULL 651f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 652f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 653f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "pkgdata", 654f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 2, 655f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 656f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "." 657f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }, 658f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 659f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "pkgdata", 660f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 20, 661f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) U_ZERO_ERROR, 662f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "." 663f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 664f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) }; 665f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t count=(sizeof(testCases)/sizeof(testCases[0])); 666f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 667f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Testing findDirname()\n"); 668f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) for(i=0;i<count;i++) { 669f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *result; 670f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *input = STRNULL(testCases[i].inBuf); 671f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) const char *expect = STRNULL(testCases[i].expectResult); 672f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UErrorCode status = U_ZERO_ERROR; 673f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) uprv_memset(toolutil_testBuf, 0x55, TOOLUTIL_TESTBUF_SIZE); 674f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 675f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("Test case [%d/%d]: %s\n", i, count-1, input); 676f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) result = STRNULL(findDirname(testCases[i].inBuf, toolutil_testBuf, testCases[i].outBufLen, &status)); 677f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose(" -> %s, \n", u_errorName(status)); 678f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(status != testCases[i].expectStatus) { 679f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose("FAIL: Test case [%d/%d]: %s got error code %s but expected %s\n", i, count-1, input, u_errorName(status), u_errorName(testCases[i].expectStatus)); 680f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 681f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if(result==expect||!strcmp(result,expect)) { 682f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_verbose(" = -> %s \n", result); 683f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 684f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) log_err("FAIL: Test case [%d/%d]: %s -> %s but expected %s\n", i, count-1, input, result, expect); 685f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 686f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 687f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 688f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 689f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 690f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 691f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static void addToolUtilTests(TestNode** root) { 692f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &toolutil_findBasename, "putiltst/toolutil/findBasename"); 693f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &toolutil_findDirname, "putiltst/toolutil/findDirname"); 694f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) /* 695f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) Not yet tested: 696f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 697f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &toolutil_getLongPathname, "putiltst/toolutil/getLongPathname"); 698f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &toolutil_getCurrentYear, "putiltst/toolutil/getCurrentYear"); 699f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) addTest(root, &toolutil_UToolMemory, "putiltst/toolutil/UToolMemory"); 700f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) */ 701f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 702