/******************************************************************** * COPYRIGHT: * Copyright (c) 1998-1999, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ /* * File test.c * * Modification History: * * Date Name Description * 07/28/2000 Madhu Creation ******************************************************************************* */ #include "unicode/utypes.h" #include "ucmp16.h" #include "ucmp8.h" #include "ucmp32.h" #include "cmemory.h" #include "cintltst.h" #include static void TestUCMP16API(void); static void TestUCMP8API(void); static void TestUCMP32API(void); void addCompactArrayTest(TestNode** root) { addTest(root, &TestUCMP16API, "ucmptst/TestUCMP16API"); addTest(root, &TestUCMP8API, "ucmptst/TestUCMP8API"); addTest(root, &TestUCMP32API, "ucmptst/TestUCMP32API"); } static void TestUCMP16API(){ int16_t newValues[]={ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, }; uint16_t indexArray[]={ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, }; uint16_t *values; CompactShortArray* ucmp16Array=NULL; CompactShortArray ucmp16Array1; CompactShortArray ucmp16Array2; int32_t count=0, i=0; int16_t const TEST_DEFAULT_VALUE = 0xff; /*ucmp16_open*/ log_verbose("Testing ucmp16_open()\n"); ucmp16Array=ucmp16_open(TEST_DEFAULT_VALUE); if(ucmp16Array == NULL){ log_err("ERROR: ucmp16_open() failed\n"); } if(ucmp16_getDefaultValue(ucmp16Array) != TEST_DEFAULT_VALUE || (int32_t)ucmp16_getCount(ucmp16Array) != (int32_t)ucmp16_getkUnicodeCount()) { log_err("ERROR: ucmp16_open failed\n"); } /*ucmp16_init*/ log_verbose("Testing ucmp16_init()\n"); ucmp16_init(&ucmp16Array1, TEST_DEFAULT_VALUE); if(ucmp16_getDefaultValue(&ucmp16Array1) == 0x0000 || (int32_t)ucmp16_getCount(&ucmp16Array1) != (int32_t)ucmp16_getkUnicodeCount() || ucmp16_getIndex(&ucmp16Array1) == NULL || ucmp16_getArray(&ucmp16Array1) == NULL || ucmp16Array->fBogus != FALSE){ log_err("Error: ucmp16_init() failed\n"); } /*ucmp16_initBogus*/ log_verbose("Testing ucmp16_initBogus()\n"); ucmp16_initBogus(&ucmp16Array2); if(ucmp16_getDefaultValue(&ucmp16Array2) != 0x0000 || (int32_t)ucmp16_getCount(&ucmp16Array2) != ucmp16Array2.fCount || ucmp16_getIndex(&ucmp16Array2) != NULL || ucmp16_getArray(&ucmp16Array2) != NULL || ucmp16Array2.fBogus != TRUE){ log_err("Error: ucmp16_initBogus() failed\n"); } /*ucmp16_getDefaultValue*/ if(ucmp16_getDefaultValue(ucmp16Array) != ucmp16_getDefaultValue(&ucmp16Array1) || ucmp16_getDefaultValue(ucmp16Array) == ucmp16_getDefaultValue(&ucmp16Array2) ){ log_err("Error in ucmp16_getDefaultValue()\n"); } /*ucmp16_getkBlockCount*/ if(ucmp16_getkBlockCount() != 128 ){ log_err("Error in ucmp16_getkBlockCount()\n"); } ucmp16_close(ucmp16Array); ucmp16_close(&ucmp16Array1); ucmp16_close(&ucmp16Array2); /*ucmp_compact, ucmp16_set*/ log_verbose("Testing ucmp16_set\n"); ucmp16Array=ucmp16_open(TEST_DEFAULT_VALUE); if(ucmp16Array->fCompact == TRUE){ log_err("Error: ucmp16_open failed Got compact for expanded data\n"); } ucmp16_compact(ucmp16Array); if(ucmp16Array->fCompact != TRUE){ log_err("Error: ucmp16_compact failed\n"); } /* ucmp16_set*/ ucmp16_set(ucmp16Array, 0, TEST_DEFAULT_VALUE); values=(uint16_t*)ucmp16_getArray(ucmp16Array); if(values[0] != TEST_DEFAULT_VALUE){ log_err("ERROR: ucmp16_set() failed\n"); } if(ucmp16Array->fCompact == TRUE){ log_err("Error: ucmp16_set didn't expand the compact data\n"); } /*ucmp16_set where the value != defaultValue*/ ucmp16_compact(ucmp16Array); ucmp16_set(ucmp16Array, 0, 0xfe); values=(uint16_t*)ucmp16_getArray(ucmp16Array); if(values[0] != 0xfe){ log_err("ERROR: ucmp16_set() failed\n"); } /*ucmp16_setRange*/ ucmp16_compact(ucmp16Array); ucmp16_setRange(ucmp16Array, 0, 10, 0xff); values=(uint16_t*)ucmp16_getArray(ucmp16Array); for(i=0; i<10; i++){ if(values[0] != 0xff){ log_err("ERROR: ucmp16_set() failed\n"); break; } } /*ucmp16_setRange where the value != defaultValue*/ ucmp16_compact(ucmp16Array); ucmp16_setRange(ucmp16Array, 0, 10, 0xfe); values=(uint16_t*)ucmp16_getArray(ucmp16Array); for(i=0; i<10; i++){ if(values[0] != 0xfe){ log_err("ERROR: ucmp16_set() failed\n"); break; } } ucmp16_close(ucmp16Array); /*ucmp16_openAlias*/ log_verbose("Testing ucmp16_openAlias()\n"); count=sizeof(newValues)/sizeof(newValues[0]); ucmp16Array=ucmp16_openAlias(indexArray, newValues, count, 0xFE); if(ucmp16_getDefaultValue(ucmp16Array) != 0x00fe || (int32_t)ucmp16_getCount(ucmp16Array) != count || ucmp16Array->fAlias != TRUE || memcmp(ucmp16_getArray(ucmp16Array), newValues, count) != 0 || memcmp(ucmp16_getIndex(ucmp16Array), indexArray, count) != 0 ) { log_err("Error: ucmp16_openAlias() failed\n"); } ucmp16_close(ucmp16Array); } static void TestUCMP8API(){ CompactByteArray* ucmp8Array=NULL; CompactByteArray ucmp8Array1; CompactByteArray ucmp8Array2; int32_t i=0; uint8_t *values; uint8_t *valuesSet; uint8_t const TEST_DEFAULT_VALUE = (uint8_t)0xFF; /*ucmp8_open*/ log_verbose("Testing ucmp8_open()\n"); ucmp8Array=ucmp8_open(TEST_DEFAULT_VALUE); if(ucmp8Array == NULL){ log_err("ERROR: ucmp8_open() failed\n"); } if( (int32_t)ucmp8_getCount(ucmp8Array) != (int32_t)ucmp8_getkUnicodeCount()) { log_err("ERROR: ucmp8_open failed\n"); } /*ucmp8_init*/ log_verbose("Testing ucmp8_init()\n"); ucmp8_init(&ucmp8Array1, TEST_DEFAULT_VALUE); if( (int32_t)ucmp8_getCount(&ucmp8Array1) != (int32_t)ucmp8_getkUnicodeCount() || ucmp8_getIndex(&ucmp8Array1) == NULL || ucmp8_getArray(&ucmp8Array1) == NULL || ucmp8Array1.fBogus != FALSE){ log_err("Error: ucmp8_init() failed\n"); } /*ucmp8_initBogus*/ log_verbose("Testing ucmp8_initBogus()\n"); ucmp8_initBogus(&ucmp8Array2); if((int32_t)ucmp8_getCount(&ucmp8Array2) != ucmp8Array2.fCount || ucmp8_getIndex(&ucmp8Array2) != NULL || ucmp8_getArray(&ucmp8Array2) != NULL || ucmp8Array2.fBogus != TRUE){ log_err("Error: ucmp8_initBogus() failed\n"); } /*ucmp8_getkBlockCount*/ if(ucmp8_getkBlockCount() != 128 ){ log_err("Error in ucmp8_getkBlockCount()\n"); } values=(uint8_t*)ucmp8_getArray(&ucmp8Array1); if(values[0] !=TEST_DEFAULT_VALUE){ log_err("Error: getArray() or init failed\n"); } /*ucmp8_compact*/ if(ucmp8Array1.fCompact == TRUE){ log_err("Error: ucmp8_open failed Got compact for expanded data\n"); } ucmp8_compact(&ucmp8Array1, 1); if(ucmp8Array1.fCompact != TRUE){ log_err("Error: ucmp8_compact failed\n"); } /*ucmp8_set*/ ucmp8_set(&ucmp8Array1, 0, (uint8_t)0xFE); valuesSet=(uint8_t*)ucmp8_getArray(&ucmp8Array1); if(valuesSet[0] != (uint8_t)0xFE ){ log_err("ERROR: ucmp8_set() failed\n"); } if(ucmp8Array1.fCompact == TRUE){ log_err("Error: ucmp8_set didn't expand the compact data \n"); } /*ucmp8_set*/ ucmp8_compact(&ucmp8Array1, 1); ucmp8_set(&ucmp8Array1, 0, (uint8_t)0xFD); valuesSet=(uint8_t*)ucmp8_getArray(&ucmp8Array1); if(valuesSet[0] != (uint8_t)0xFD ){ log_err("ERROR: ucmp8_set() failed\n"); } if(ucmp8Array1.fCompact == TRUE){ log_err("Error: ucmp8_set didn't expand the compact data \n"); } /*ucmp8_setRange*/ ucmp8_compact(&ucmp8Array1, 1); ucmp8_setRange(&ucmp8Array1, 0, 10, (uint8_t)0xFD); valuesSet=(uint8_t*)ucmp8_getArray(&ucmp8Array1); for(i =0 ; i< 10; i++ ){ if(valuesSet[0] != (uint8_t)0xFD ){ log_err("ERROR: ucmp8_set() failed\n"); break; } } ucmp8_close(ucmp8Array); ucmp8_close(&ucmp8Array1); ucmp8_close(&ucmp8Array2); } static void TestUCMP32API(){ CompactIntArray* ucmp32Array=NULL; int32_t i=0; int32_t *values; int32_t const TEST_DEFAULT_VALUE = 0xFFFF; /*ucmp32_open*/ log_verbose("Testing ucmp32_open()\n"); ucmp32Array=ucmp32_open(TEST_DEFAULT_VALUE); if(ucmp32Array == NULL){ log_err("ERROR: ucmp32_open() failed\n"); } if( (int32_t)ucmp32_getCount(ucmp32Array) != (int32_t)ucmp32_getkUnicodeCount()) { log_err("ERROR: ucmp32_open or ucmp_getCount() failed failed\n"); } /*ucmp32_getkBlockCount*/ if(ucmp32_getkBlockCount() != 128 ){ log_err("Error in ucmp32_getkBlockCount()\n"); } if(ucmp32_getArray(ucmp32Array) == NULL || ucmp32_getIndex(ucmp32Array) == NULL ){ log_err("Error in ucmp32_open of ucmp32_getArray() or ucmp32_getIndex()\n"); } /*ucmp32_compact*/ if(ucmp32Array->fCompact == TRUE){ log_err("Error: ucmp32_open failed Got compact for expanded data\n"); } ucmp32_compact(ucmp32Array, 1); if(ucmp32Array->fCompact != TRUE){ log_err("Error: ucmp32_compact failed\n"); } /* ucmp32_set*/ ucmp32_set(ucmp32Array, 0, TEST_DEFAULT_VALUE); values=(int32_t*)ucmp32_getArray(ucmp32Array); if(values[0] != TEST_DEFAULT_VALUE){ log_err("ERROR: ucmp32_set() failed\n"); } if(ucmp32Array->fCompact == TRUE){ log_err("Error: ucmp32_set didn't expand\n"); } /*ucmp32_set where the value != defaultValue*/ ucmp32_compact(ucmp32Array, 1); ucmp32_set(ucmp32Array, 0, 0xFFFE); values=(int32_t*)ucmp32_getArray(ucmp32Array); if(values[0] != 0xFFFE){ log_err("ERROR: ucmp32_set() failed\n"); } /*ucmp32_setRange*/ ucmp32_compact(ucmp32Array, 1); ucmp32_setRange(ucmp32Array, 0, 10, 0xFFFF); values=(int32_t*)ucmp32_getArray(ucmp32Array); for(i=0; i<10; i++){ if(values[0] != 0xFFFF){ log_err("ERROR: ucmp32_set() failed\n"); break; } } if(ucmp32Array->fCompact == TRUE){ log_err("Error: ucmp32_setRange didn't expand\n"); } /*ucmp32_setRange where the value != defaultValue*/ ucmp32_compact(ucmp32Array, 1); ucmp32_setRange(ucmp32Array, 0, 10, 0xFFFE); values=(int32_t*)ucmp32_getArray(ucmp32Array); for(i=0; i<10; i++){ if(values[0] != 0xFFFE){ log_err("ERROR: ucmp32_set() failed\n"); break; } } ucmp32_close(ucmp32Array); }