llvm/unittests/Bitcode/BitstreamWriterTest.cpp
Duncan P. N. Exon Smith 15b99e0369 BitcodeWriter: Simplify and test writing blobs, NFC
Split helper out of EmitRecordWithAbbrevImpl called emitBlob to reduce
code duplication, and add a few tests for it.

No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264550 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-27 23:04:04 +00:00

60 lines
1.4 KiB
C++

//===- BitstreamWriterTest.cpp - Tests for BitstreamWriter ----------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Bitcode/BitstreamWriter.h"
#include "gtest/gtest.h"
using namespace llvm;
namespace {
TEST(BitstreamWriterTest, emitBlob) {
SmallString<64> Buffer;
BitstreamWriter W(Buffer);
W.emitBlob("str", /* ShouldEmitSize */ false);
EXPECT_EQ(StringRef("str\0", 4), Buffer);
}
TEST(BitstreamWriterTest, emitBlobWithSize) {
SmallString<64> Buffer;
{
BitstreamWriter W(Buffer);
W.emitBlob("str");
}
SmallString<64> Expected;
{
BitstreamWriter W(Expected);
W.EmitVBR(3, 6);
W.FlushToWord();
W.Emit('s', 8);
W.Emit('t', 8);
W.Emit('r', 8);
W.Emit(0, 8);
}
EXPECT_EQ(StringRef(Expected), Buffer);
}
TEST(BitstreamWriterTest, emitBlobEmpty) {
SmallString<64> Buffer;
BitstreamWriter W(Buffer);
W.emitBlob("", /* ShouldEmitSize */ false);
EXPECT_EQ(StringRef(""), Buffer);
}
TEST(BitstreamWriterTest, emitBlob4ByteAligned) {
SmallString<64> Buffer;
BitstreamWriter W(Buffer);
W.emitBlob("str0", /* ShouldEmitSize */ false);
EXPECT_EQ(StringRef("str0"), Buffer);
}
} // end namespace