1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/unittests/Bitstream/BitstreamWriterTest.cpp
Francis Visoiu Mistrih 972459e6ed [Bitcode] Move Bitstream to a separate library
This moves Bitcode/Bitstream*, Bitcode/BitCodes.h to Bitstream/.

This is needed to avoid a circular dependency when using the bitstream
code for parsing optimization remarks.

Since Bitcode uses Core for the IR part:

libLLVMRemarks -> Bitcode -> Core

and Core uses libLLVMRemarks to generate remarks (see
IR/RemarkStreamer.cpp):

Core -> libLLVMRemarks

we need to separate the Bitstream and Bitcode part.

For clang-doc, it seems that it doesn't need the whole bitcode layer, so
I updated the CMake to only use the bitstream part.

Differential Revision: https://reviews.llvm.org/D63899

llvm-svn: 365091
2019-07-03 22:40:07 +00:00

59 lines
1.5 KiB
C++

//===- BitstreamWriterTest.cpp - Tests for BitstreamWriter ----------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "llvm/Bitstream/BitstreamWriter.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.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