X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..374ca955a76ecab1204ca8bfa63ff9238d998416:/icuSources/test/intltest/v32test.cpp?ds=inline diff --git a/icuSources/test/intltest/v32test.cpp b/icuSources/test/intltest/v32test.cpp new file mode 100644 index 00000000..7b11f9b4 --- /dev/null +++ b/icuSources/test/intltest/v32test.cpp @@ -0,0 +1,505 @@ +/******************************************************************** + * COPYRIGHT: + * Copyright (c) 2002-2003, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ + +// +// regextst.cpp +// +// ICU Regular Expressions test, part of intltest. +// + +#include "intltest.h" + +#include "v32test.h" +#include "uvectr32.h" +#include "uvector.h" +#include "util.h" +#include +#include + + +//--------------------------------------------------------------------------- +// +// Test class boilerplate +// +//--------------------------------------------------------------------------- +UVector32Test::UVector32Test() +{ +}; + + +UVector32Test::~UVector32Test() +{ +}; + + + +void UVector32Test::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) +{ + if (exec) logln("TestSuite UVector32Test: "); + switch (index) { + + case 0: name = "UVector32_API"; + if (exec) UVector32_API(); + break; + default: name = ""; + break; //needed to end loop + } +} + + +//--------------------------------------------------------------------------- +// +// Error Checking / Reporting macros used in all of the tests. +// +//--------------------------------------------------------------------------- +#define TEST_CHECK_STATUS(status) \ + if (U_FAILURE(status)) {\ + errln("UVector32Test failure at line %d. status=%s\n", __LINE__, u_errorName(status));\ + return;\ + } + +#define TEST_ASSERT(expr) \ + if ((expr)==FALSE) {\ + errln("RegexTest failure at line %d.\n", __LINE__);\ + } + +//--------------------------------------------------------------------------- +// +// 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); + TEST_ASSERT(resizedBuf[0] == 10); + TEST_ASSERT(resizedBuf[1] == 20); + + TEST_CHECK_STATUS(status); + delete a; + + + // + // RTTI + // + status = U_ZERO_ERROR; + a = new UVector32(status); + TEST_ASSERT(a->getDynamicClassID() == UVector32::getStaticClassID()); + TEST_ASSERT(a->getDynamicClassID() != UVector::getStaticClassID()); + 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; + +}; + +