void PNamesBuilderImpl::writeCSourceFile(const char *path, UErrorCode &errorCode) { if(U_FAILURE(errorCode)) { return; } FILE *f=usrc_create(path, "propname_data.h", "icu/tools/unicode/c/genprops/pnamesbuilder.cpp"); if(f==NULL) { errorCode=U_FILE_ACCESS_ERROR; return; } fputs("#ifndef INCLUDED_FROM_PROPNAME_CPP\n" "# error This file must be #included from propname.cpp only.\n" "#endif\n\n", f); fputs("U_NAMESPACE_BEGIN\n\n", f); usrc_writeArray(f, "const int32_t PropNameData::indexes[%ld]={", indexes, 32, PropNameData::IX_COUNT, "};\n\n"); usrc_writeArray(f, "const int32_t PropNameData::valueMaps[%ld]={\n", valueMaps.getBuffer(), 32, valueMaps.size(), "\n};\n\n"); usrc_writeArray(f, "const uint8_t PropNameData::bytesTries[%ld]={\n", bytesTries.data(), 8, bytesTries.length(), "\n};\n\n"); usrc_writeArrayOfMostlyInvChars( f, "const char PropNameData::nameGroups[%ld]={\n", nameGroups.data(), nameGroups.length(), "\n};\n\n"); fputs("U_NAMESPACE_END\n", f); fclose(f); }
void PNamesBuilderImpl::writeBinaryData(const char *path, UBool withCopyright, UErrorCode &errorCode) { if(U_FAILURE(errorCode)) { return; } UNewDataMemory *pdata=udata_create(path, PNAME_DATA_TYPE, PNAME_DATA_NAME, &dataInfo, withCopyright ? U_COPYRIGHT_STRING : 0, &errorCode); if(U_FAILURE(errorCode)) { fprintf(stderr, "genprops: udata_create(%s, pnames.icu) failed - %s\n", path, u_errorName(errorCode)); return; } udata_writeBlock(pdata, indexes, PropNameData::IX_COUNT*4); udata_writeBlock(pdata, valueMaps.getBuffer(), valueMaps.size()*4); udata_writeBlock(pdata, bytesTries.data(), bytesTries.length()); udata_writeBlock(pdata, nameGroups.data(), nameGroups.length()); int32_t dataLength=(int32_t)udata_finish(pdata, &errorCode); if(dataLength!=indexes[PropNameData::IX_TOTAL_SIZE]) { fprintf(stderr, "udata_finish(pnames.icu) reports %ld bytes written but should be %ld\n", (long)dataLength, (long)indexes[PropNameData::IX_TOTAL_SIZE]); errorCode=U_INTERNAL_PROGRAM_ERROR; } }
//--------------------------------------------------------------------------- // // UVector32_API Check for basic functionality of UVector32. // //--------------------------------------------------------------------------- void UVector32Test::UVector32_API() { UErrorCode status = U_ZERO_ERROR; UVector32 *a; UVector32 *b; a = new UVector32(status); TEST_CHECK_STATUS(status); delete a; status = U_ZERO_ERROR; a = new UVector32(2000, status); TEST_CHECK_STATUS(status); delete a; // // assign() // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); b = new UVector32(status); b->assign(*a, status); TEST_ASSERT(b->size() == 3); TEST_ASSERT(b->elementAti(1) == 20); TEST_CHECK_STATUS(status); delete a; delete b; // // operator == and != and equals() // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); b = new UVector32(status); TEST_ASSERT(*b != *a); TEST_ASSERT(!(*b == *a)); TEST_ASSERT(!b->equals(*a)); b->assign(*a, status); TEST_ASSERT(*b == *a); TEST_ASSERT(!(*b != *a)); TEST_ASSERT(b->equals(*a)); b->addElement(666, status); TEST_ASSERT(*b != *a); TEST_ASSERT(!(*b == *a)); TEST_ASSERT(!b->equals(*a)); TEST_CHECK_STATUS(status); delete b; delete a; // // addElement(). Covered by above tests. // // // setElementAt() // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); a->setElementAt(666, 1); TEST_ASSERT(a->elementAti(0) == 10); TEST_ASSERT(a->elementAti(1) == 666); TEST_ASSERT(a->size() == 3); TEST_CHECK_STATUS(status); delete a; // // insertElementAt() // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); a->insertElementAt(666, 1, status); TEST_ASSERT(a->elementAti(0) == 10); TEST_ASSERT(a->elementAti(1) == 666); TEST_ASSERT(a->elementAti(2) == 20); TEST_ASSERT(a->elementAti(3) == 30); TEST_ASSERT(a->size() == 4); TEST_CHECK_STATUS(status); delete a; // // elementAti() covered by above tests // // // lastElementi // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); TEST_ASSERT(a->lastElementi() == 30); TEST_CHECK_STATUS(status); delete a; // // indexOf // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); TEST_ASSERT(a->indexOf(30, 0) == 2); TEST_ASSERT(a->indexOf(40, 0) == -1); TEST_ASSERT(a->indexOf(10, 0) == 0); TEST_ASSERT(a->indexOf(10, 1) == -1); TEST_CHECK_STATUS(status); delete a; // // contains // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); TEST_ASSERT(a->contains(10) == TRUE); TEST_ASSERT(a->contains(11) == FALSE); TEST_ASSERT(a->contains(20) == TRUE); TEST_ASSERT(a->contains(-10) == FALSE); TEST_CHECK_STATUS(status); delete a; // // containsAll // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); b = new UVector32(status); TEST_ASSERT(a->containsAll(*b) == TRUE); b->addElement(2, status); TEST_ASSERT(a->containsAll(*b) == FALSE); b->setElementAt(10, 0); TEST_ASSERT(a->containsAll(*b) == TRUE); TEST_ASSERT(b->containsAll(*a) == FALSE); b->addElement(30, status); b->addElement(20, status); TEST_ASSERT(a->containsAll(*b) == TRUE); TEST_ASSERT(b->containsAll(*a) == TRUE); b->addElement(2, status); TEST_ASSERT(a->containsAll(*b) == FALSE); TEST_ASSERT(b->containsAll(*a) == TRUE); TEST_CHECK_STATUS(status); delete a; delete b; // // removeAll // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); b = new UVector32(status); a->removeAll(*b); TEST_ASSERT(a->size() == 3); b->addElement(20, status); a->removeAll(*b); TEST_ASSERT(a->size() == 2); TEST_ASSERT(a->contains(10)==TRUE); TEST_ASSERT(a->contains(30)==TRUE); b->addElement(10, status); a->removeAll(*b); TEST_ASSERT(a->size() == 1); TEST_ASSERT(a->contains(30) == TRUE); TEST_CHECK_STATUS(status); delete a; delete b; // // retainAll // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); b = new UVector32(status); b->addElement(10, status); b->addElement(20, status); b->addElement(30, status); b->addElement(15, status); a->retainAll(*b); TEST_ASSERT(a->size() == 3); b->removeElementAt(1); a->retainAll(*b); TEST_ASSERT(a->contains(20) == FALSE); TEST_ASSERT(a->size() == 2); b->removeAllElements(); TEST_ASSERT(b->size() == 0); a->retainAll(*b); TEST_ASSERT(a->size() == 0); TEST_CHECK_STATUS(status); delete a; delete b; // // removeElementAt Tested above. // // // removeAllElments Tested above // // // size() tested above // // // isEmpty // status = U_ZERO_ERROR; a = new UVector32(status); TEST_ASSERT(a->isEmpty() == TRUE); a->addElement(10, status); TEST_ASSERT(a->isEmpty() == FALSE); a->addElement(20, status); a->removeElementAt(0); TEST_ASSERT(a->isEmpty() == FALSE); a->removeElementAt(0); TEST_ASSERT(a->isEmpty() == TRUE); TEST_CHECK_STATUS(status); delete a; // // ensureCapacity, expandCapacity // status = U_ZERO_ERROR; a = new UVector32(status); TEST_ASSERT(a->isEmpty() == TRUE); a->addElement(10, status); TEST_ASSERT(a->ensureCapacity(5000, status)== TRUE); TEST_ASSERT(a->expandCapacity(20000, status) == TRUE); TEST_CHECK_STATUS(status); delete a; // // setSize // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); a->setSize(100); TEST_ASSERT(a->size() == 100); TEST_ASSERT(a->elementAti(0) == 10); TEST_ASSERT(a->elementAti(1) == 20); TEST_ASSERT(a->elementAti(2) == 30); TEST_ASSERT(a->elementAti(3) == 0); a->setElementAt(666, 99); a->setElementAt(777, 100); TEST_ASSERT(a->elementAti(99) == 666); TEST_ASSERT(a->elementAti(100) == 0); a->setSize(2); TEST_ASSERT(a->elementAti(1) == 20); TEST_ASSERT(a->elementAti(2) == 0); TEST_ASSERT(a->size() == 2); a->setSize(0); TEST_ASSERT(a->empty() == TRUE); TEST_ASSERT(a->size() == 0); TEST_CHECK_STATUS(status); delete a; // // containsNone // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); b = new UVector32(status); TEST_ASSERT(a->containsNone(*b) == TRUE); b->addElement(5, status); TEST_ASSERT(a->containsNone(*b) == TRUE); b->addElement(30, status); TEST_ASSERT(a->containsNone(*b) == FALSE); TEST_CHECK_STATUS(status); delete a; delete b; // // sortedInsert // status = U_ZERO_ERROR; a = new UVector32(status); a->sortedInsert(30, status); a->sortedInsert(20, status); a->sortedInsert(10, status); TEST_ASSERT(a->elementAti(0) == 10); TEST_ASSERT(a->elementAti(1) == 20); TEST_ASSERT(a->elementAti(2) == 30); TEST_CHECK_STATUS(status); delete a; // // getBuffer // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); int32_t *buf = a->getBuffer(); TEST_ASSERT(buf[0] == 10); TEST_ASSERT(buf[1] == 20); a->setSize(20000); int32_t *resizedBuf; resizedBuf = a->getBuffer(); //TEST_ASSERT(buf != resizedBuf); // The buffer might have been realloc'd TEST_ASSERT(resizedBuf[0] == 10); TEST_ASSERT(resizedBuf[1] == 20); TEST_CHECK_STATUS(status); delete a; // // empty // status = U_ZERO_ERROR; a = new UVector32(status); TEST_ASSERT(a->empty() == TRUE); a->addElement(10, status); TEST_ASSERT(a->empty() == FALSE); a->addElement(20, status); a->removeElementAt(0); TEST_ASSERT(a->empty() == FALSE); a->removeElementAt(0); TEST_ASSERT(a->empty() == TRUE); TEST_CHECK_STATUS(status); delete a; // // peeki // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); TEST_ASSERT(a->peeki() == 10); a->addElement(20, status); TEST_ASSERT(a->peeki() == 20); a->addElement(30, status); TEST_ASSERT(a->peeki() == 30); TEST_CHECK_STATUS(status); delete a; // // popi // status = U_ZERO_ERROR; a = new UVector32(status); a->addElement(10, status); a->addElement(20, status); a->addElement(30, status); TEST_ASSERT(a->popi() == 30); TEST_ASSERT(a->popi() == 20); TEST_ASSERT(a->popi() == 10); TEST_ASSERT(a->popi() == 0); TEST_ASSERT(a->isEmpty()); TEST_CHECK_STATUS(status); delete a; // // push // status = U_ZERO_ERROR; a = new UVector32(status); TEST_ASSERT(a->push(10, status) == 10); TEST_ASSERT(a->push(20, status) == 20); TEST_ASSERT(a->push(30, status) == 30); TEST_ASSERT(a->size() == 3); TEST_ASSERT(a->popi() == 30); TEST_ASSERT(a->popi() == 20); TEST_ASSERT(a->popi() == 10); TEST_ASSERT(a->isEmpty()); TEST_CHECK_STATUS(status); delete a; // // reserveBlock // status = U_ZERO_ERROR; a = new UVector32(status); a->ensureCapacity(1000, status); // TODO: TEST_CHECK_STATUS(status); delete a; }