示例#1
0
static
void
GenericFindTest(ValueStrategy strategy, int32 maxNumber)
{
	typedef typename ValueStrategy::Value Value;
	TestVector<Value> v;
	GenericFill(v, strategy, maxNumber);
	// find the values in the vector
	const TestVector<Value> &cv = v;
	for (int32 i = 0; i < maxNumber; i++) {
		typename TestVector<Value>::ConstIterator cit = cv.Begin();
		int32 index = 0;
		for (typename TestVector<Value>::Iterator it = v.Begin();
				it != v.End(); ) {
			CHK(&v[index] == &*it);
			CHK(&cv[index] == &*cit);
			CHK(*it == *cit);
			it = v.Find(v[i], ++it);
			cit = cv.Find(cv[i], ++cit);
			index = v.IndexOf(v[i], index + 1);
		}
	}
	// try to find some random values
	for (int32 i = 0; i < maxNumber; i++) {
		Value value = strategy.Generate();
		typename TestVector<Value>::Iterator it = v.Find(value);
		typename TestVector<Value>::ConstIterator cit = cv.Find(value);
		if (it != v.End())
			CHK(&*it == &*cit);
	}
}
示例#2
0
static
void
GenericIteratorTest(ValueStrategy strategy, int32 maxNumber)
{
	typedef typename ValueStrategy::Value Value;
	TestVector<Value> v;
	GenericFill(v, strategy, maxNumber);
	const TestVector<Value> &cv = v;
	typename TestVector<Value>::Iterator it = v.Begin();
	typename TestVector<Value>::ConstIterator cit = cv.Begin();
	for (; it != v.End(); ++it, ++cit) {
		CHK(&*it == &*cit);
		CHK(&*it == it.operator->());
		CHK(&*cit == cit.operator->());
		CHK(it);
		CHK(cit);
	}
	CHK(cit == cv.End());
	while (it != v.Begin()) {
		--it;
		--cit;
		CHK(&*it == &*cit);
		CHK(&*it == it.operator->());
		CHK(&*cit == cit.operator->());
		CHK(it);
		CHK(cit);
	}
	CHK(cit == cv.Begin());
	CHK(!v.Null());
	CHK(!cv.Null());
}
示例#3
0
static
void
GenericMakeEmptyTest(ValueStrategy strategy, int32 maxNumber)
{
	typedef typename ValueStrategy::Value Value;
	TestVector<Value> v;
	v.MakeEmpty();
	GenericFill(v, strategy, maxNumber);
	v.MakeEmpty();
	v.MakeEmpty();
}
示例#4
0
static
void
GenericEraseTest2(ValueStrategy strategy, int32 maxNumber)
{
	typedef typename ValueStrategy::Value Value;
	TestVector<Value> v;
	GenericFill(v, strategy, maxNumber);
	for (int32 i = maxNumber - 1; i >= 0; i--) {
		int32 index = rand() % (i + 1);
		v.Erase(v.IteratorForIndex(index));
	}
}
示例#5
0
static
void
GenericIndexAccessTest(ValueStrategy strategy, int32 maxNumber)
{
	typedef typename ValueStrategy::Value Value;
	TestVector<Value> v;
	GenericFill(v, strategy, maxNumber);
	const TestVector<Value> &cv = v;
	for (int32 i = 0; i < maxNumber; i++) {
		CHK(v[i] == cv[i]);
		CHK(v.ElementAt(i) == cv.ElementAt(i));
	}
}
示例#6
0
static
void
GenericRemoveTest(ValueStrategy strategy, int32 maxNumber)
{
	typedef typename ValueStrategy::Value Value;
	TestVector<Value> v;
	GenericFill(v, strategy, maxNumber);
	while (v.Count() > 0) {
		int32 index = rand() % (v.Count());
		Value value = v[index];
		v.Remove(value);
		v.Remove(value);
	}
}
示例#7
0
 inline bool Fill(T& context) {
     return GenericFill(reinterpret_cast<uint8_t*>(&context.Fields), sizeof(context.Fields));
 }