| Index: unittests/Bitcode/NaClBitstreamReaderTest.cpp
|
| diff --git a/unittests/Bitcode/NaClBitstreamReaderTest.cpp b/unittests/Bitcode/NaClBitstreamReaderTest.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a2a275a57dd785f88b5869a906f465d9ac7f7461
|
| --- /dev/null
|
| +++ b/unittests/Bitcode/NaClBitstreamReaderTest.cpp
|
| @@ -0,0 +1,78 @@
|
| +//===- llvm/unittest/Bitcode/NaClBitstreamReaderTest.cpp ------------------===//
|
| +// Tests issues in NaCl Bitstream Reader.
|
| +//
|
| +// The LLVM Compiler Infrastructure
|
| +//
|
| +// This file is distributed under the University of Illinois Open Source
|
| +// License. See LICENSE.TXT for details.
|
| +//
|
| +//===----------------------------------------------------------------------===//
|
| +
|
| +// Tests issues in NaCl Bitstream Reader.
|
| +
|
| +// TODO(kschimpf) Add more Tests.
|
| +
|
| +#include "llvm/Bitcode/NaCl/NaClBitstreamReader.h"
|
| +
|
| +#include "gtest/gtest.h"
|
| +
|
| +using namespace llvm;
|
| +
|
| +namespace {
|
| +
|
| +static const uint64_t BitZero = 0;
|
| +
|
| +// Initializes array to sequence of alternating zeros/ones.
|
| +void* InitAltOnes(uint8_t *Array, size_t ArraySize) {
|
| + for (size_t i = 0; i <ArraySize; ++i) {
|
| + Array[i] = 0x9;
|
| + }
|
| + return Array;
|
| +}
|
| +
|
| +// Tests that the default bitstream cursor is at bit zero.
|
| +TEST(NaClBitstreamTest, DefaultCursorAtBitZero) {
|
| + uint8_t CursorMemory[sizeof(NaClBitstreamCursor)];
|
| + NaClBitstreamCursor *Cursor =
|
| + new (InitAltOnes(CursorMemory, sizeof(NaClBitstreamCursor)))
|
| + NaClBitstreamCursor();
|
| + EXPECT_EQ(BitZero, Cursor->GetCurrentBitNo());
|
| +}
|
| +
|
| +// Tests that when we initialize the bitstream cursor with a default bitstream
|
| +// reader, the cursor is at bit zero.
|
| +TEST(NaClBitstreamTest, CursorOnDefaultReaderAtBitZero) {
|
| + NaClBitstreamReader Reader;
|
| + uint8_t CursorMemory[sizeof(NaClBitstreamCursor)];
|
| + NaClBitstreamCursor *Cursor =
|
| + new (InitAltOnes(CursorMemory, sizeof(NaClBitstreamCursor)))
|
| + NaClBitstreamCursor(Reader);
|
| + EXPECT_EQ(BitZero, Cursor->GetCurrentBitNo());
|
| +}
|
| +
|
| +// Tests that when we initialize the bitstream cursor with an array-filled
|
| +// bitstream reader, the cursor is at bit zero.
|
| +TEST(NaClBitstreamTest, ReaderCursorAtBitZero) {
|
| + static const size_t BufferSize = 12;
|
| + unsigned char Buffer[BufferSize];
|
| + NaClBitstreamReader Reader(Buffer, Buffer+BufferSize);
|
| + uint8_t CursorMemory[sizeof(NaClBitstreamCursor)];
|
| + NaClBitstreamCursor *Cursor =
|
| + new (InitAltOnes(CursorMemory, sizeof(NaClBitstreamCursor)))
|
| + NaClBitstreamCursor(Reader);
|
| + EXPECT_EQ(BitZero, Cursor->GetCurrentBitNo());
|
| +}
|
| +
|
| +TEST(NaClBitstreamTest, CursorAtReaderInitialAddress) {
|
| + static const size_t BufferSize = 12;
|
| + static const size_t InitialAddress = 8;
|
| + unsigned char Buffer[BufferSize];
|
| + NaClBitstreamReader Reader(Buffer, Buffer+BufferSize, InitialAddress);
|
| + uint8_t CursorMemory[sizeof(NaClBitstreamCursor)];
|
| + NaClBitstreamCursor *Cursor =
|
| + new (InitAltOnes(CursorMemory, sizeof(NaClBitstreamCursor)))
|
| + NaClBitstreamCursor(Reader);
|
| + EXPECT_EQ(InitialAddress * CHAR_BIT, Cursor->GetCurrentBitNo());
|
| +}
|
| +
|
| +} // end of anonymous namespace
|
|
|