diff options
| author | Yong He <yonghe@outlook.com> | 2021-09-24 11:33:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-24 11:33:44 -0700 |
| commit | bec8e6aec85b6e3f875c58bdd59eb15613978358 (patch) | |
| tree | 0791fb2ce1be786c17e5a6ee489ed3065fc07332 /tools/slang-test/unit-test-byte-encode.cpp | |
| parent | f2a3c933bc11a498c622fa18694c84beca8ca031 (diff) | |
Move existing unit tests to a standalone dll. (#1945)
Diffstat (limited to 'tools/slang-test/unit-test-byte-encode.cpp')
| -rw-r--r-- | tools/slang-test/unit-test-byte-encode.cpp | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/tools/slang-test/unit-test-byte-encode.cpp b/tools/slang-test/unit-test-byte-encode.cpp deleted file mode 100644 index 8ffac3ee3..000000000 --- a/tools/slang-test/unit-test-byte-encode.cpp +++ /dev/null @@ -1,141 +0,0 @@ -// unit-test-byte-encode.cpp - -#include "../../source/core/slang-byte-encode-util.h" - -#include <stdio.h> -#include <stdlib.h> - -#include "test-context.h" - -#include "../../source/core/slang-random-generator.h" -#include "../../source/core/slang-list.h" - -using namespace Slang; - -static void checkUInt32(uint32_t value) -{ - uint8_t buffer[ByteEncodeUtil::kMaxLiteEncodeUInt32 + 1]; - - int writeLen = ByteEncodeUtil::encodeLiteUInt32(value, buffer); - buffer[writeLen] = 0xcd; - - uint32_t decode; - int readLen = ByteEncodeUtil::decodeLiteUInt32(buffer, &decode); - - SLANG_CHECK(readLen == writeLen && decode == value); -} - -static void byteEncodeUnitTest() -{ - DefaultRandomGenerator randGen(0x5346536a); - - { - SLANG_CHECK(ByteEncodeUtil::calcMsb8(0) == -1); - SLANG_CHECK(ByteEncodeUtil::calcMsb8(1) == 0); - SLANG_CHECK(ByteEncodeUtil::calcMsb8(0x81) == 7); - } - - { - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0) == -1); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x81) == 7); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x00000001) == 0); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x00000081) == 7); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x00000181) == 8); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x00008181) == 15); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x00018181) == 16); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x00818181) == 23); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x01818181) == 24); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0x81818181) == 31); - SLANG_CHECK(ByteEncodeUtil::calcMsb32(0xffffffff) == 31); - } - - { - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x00000000) == -1); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x00000001) == 0); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x00000081) == 0); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x00000181) == 1); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x00008181) == 1); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x00018181) == 2); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x00818181) == 2); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x01818181) == 3); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0x81818181) == 3); - SLANG_CHECK(ByteEncodeUtil::calcMsByte32(0xffffffff) == 3); - } - - { - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x00000001) == 0); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x00000081) == 0); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x00000181) == 1); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x00008181) == 1); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x00018181) == 2); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x00818181) == 2); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x01818181) == 3); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0x81818181) == 3); - SLANG_CHECK(ByteEncodeUtil::calcNonZeroMsByte32(0xffffffff) == 3); - } - - { - const int blockSize = 1024; - - List<uint8_t> encodedBuffer; - encodedBuffer.setCount(ByteEncodeUtil::kMaxLiteEncodeUInt32 * blockSize); - - List<uint32_t> initialBuffer; - initialBuffer.setCount(blockSize); - List<uint32_t> decodeBuffer; - decodeBuffer.setCount(blockSize); - // Put in cache? - memset(decodeBuffer.begin(), 0, blockSize * sizeof(uint32_t)); - - for (int i = 0; i < blockSize; i++) - { - const int v = ByteEncodeUtil::calcMsb8(uint32_t((randGen.nextInt32() & 0xf) | 1)); - - // Make the commonality of different numbers that bytes are most common, then shorts etc.. - uint32_t mask; - switch (v) - { - case 0: mask = 0xffffffff; break; - case 1: mask = 0x00ffffff; break; - case 2: mask = 0x0000ffff; break; - case 3: mask = 0x000000ff; break; - } - - initialBuffer[i] = randGen.nextInt32() & mask; - } - - size_t numEncodeBytes = ByteEncodeUtil::encodeLiteUInt32(initialBuffer.begin(), blockSize, encodedBuffer.begin()); - - SLANG_CHECK(ByteEncodeUtil::calcEncodeLiteSizeUInt32(initialBuffer.begin(), blockSize) == numEncodeBytes); - - size_t numEncodeBytes2 = ByteEncodeUtil::decodeLiteUInt32(encodedBuffer.begin(), blockSize, decodeBuffer.begin()); - - SLANG_CHECK(numEncodeBytes2 == numEncodeBytes); - - SLANG_CHECK(memcmp(decodeBuffer.begin(), initialBuffer.begin(), sizeof(uint32_t) * blockSize) == 0); - } - - { - checkUInt32(uint32_t(0)); - checkUInt32(uint32_t(0x7fffff)); - checkUInt32(uint32_t(0x7fff)); - checkUInt32(uint32_t(0x7f)); - checkUInt32(uint32_t(0x7fffffff)); - checkUInt32(uint32_t(0xffffffff)); - -#if 1 - for (int64_t i = 0; i < SLANG_INT64(0x100000000); i += 371) - { - checkUInt32(uint32_t(i)); - } -#else - for (int64_t i = 0; i < SLANG_INT64(0x100000000); i += 1) - { - checkUInt32(uint32_t(i)); - } -#endif - } - -} - -SLANG_UNIT_TEST("ByteEncode", byteEncodeUnitTest); |
