Bug 738867 - Separate sanity and uint overflow tests. r=bjacob

This commit is contained in:
Jon Buckley 2013-05-13 09:22:30 -04:00
parent 67556c4453
commit 3e3e6b6062

View File

@ -115,13 +115,34 @@ void CheckSanity()
MOZ_ASSERT(numElems > 10);
VERIFY( c.Validate(type, numElems - 10, 10, numElems - 10));
VERIFY(!c.Validate(type, numElems - 11, 10, numElems - 10));
}
template<typename T>
void CheckUintOverflow()
{
// This test is only for integer types smaller than uint32_t
MOZ_STATIC_ASSERT(sizeof(T) < sizeof(uint32_t), "This test is only for integer types \
smaller than uint32_t");
const size_t numElems = 64; // should be significantly larger than tree leaf size to
// ensure we exercise some nontrivial tree-walking
T data[numElems];
size_t numBytes = numElems * sizeof(T);
MOZ_ASSERT(numBytes == sizeof(data));
GLenum type = GLType<T>();
WebGLElementArrayCache c;
for(size_t i = 0; i < numElems; i++)
data[i] = numElems - i;
c.BufferData(data, numBytes);
// bug 825205
if (sizeof(T) < sizeof(uint32_t)) {
uint32_t bigValWrappingToZero = uint32_t(T(-1)) + 1;
VERIFY(c.Validate(type, bigValWrappingToZero, 0, numElems));
VERIFY(c.Validate(type, bigValWrappingToZero - 1, 0, numElems));
}
uint32_t bigValWrappingToZero = uint32_t(T(-1)) + 1;
VERIFY( c.Validate(type, bigValWrappingToZero, 0, numElems));
VERIFY( c.Validate(type, bigValWrappingToZero - 1, 0, numElems));
VERIFY(!c.Validate(type, 0, 0, numElems));
}
int main(int argc, char *argv[])
@ -131,6 +152,9 @@ int main(int argc, char *argv[])
CheckSanity<uint8_t>();
CheckSanity<uint16_t>();
CheckUintOverflow<uint8_t>();
CheckUintOverflow<uint16_t>();
nsTArray<uint8_t> v, vsub;
WebGLElementArrayCache b;