1//===- BitstreamWriterTest.cpp - Tests for BitstreamWriter ----------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "llvm/Bitstream/BitstreamWriter.h"
10#include "llvm/ADT/STLExtras.h"
11#include "llvm/ADT/SmallString.h"
12#include "gtest/gtest.h"
13
14using namespace llvm;
15
16namespace {
17
18TEST(BitstreamWriterTest, emitBlob) {
19 SmallString<64> Buffer;
20 BitstreamWriter W(Buffer);
21 W.emitBlob(Bytes: "str", /* ShouldEmitSize */ false);
22 EXPECT_EQ(StringRef("str\0", 4), Buffer);
23}
24
25TEST(BitstreamWriterTest, emitBlobWithSize) {
26 SmallString<64> Buffer;
27 {
28 BitstreamWriter W(Buffer);
29 W.emitBlob(Bytes: "str");
30 }
31 SmallString<64> Expected;
32 {
33 BitstreamWriter W(Expected);
34 W.EmitVBR(Val: 3, NumBits: 6);
35 W.FlushToWord();
36 W.Emit(Val: 's', NumBits: 8);
37 W.Emit(Val: 't', NumBits: 8);
38 W.Emit(Val: 'r', NumBits: 8);
39 W.Emit(Val: 0, NumBits: 8);
40 }
41 EXPECT_EQ(Expected.str(), Buffer);
42}
43
44TEST(BitstreamWriterTest, emitBlobEmpty) {
45 SmallString<64> Buffer;
46 BitstreamWriter W(Buffer);
47 W.emitBlob(Bytes: "", /* ShouldEmitSize */ false);
48 EXPECT_EQ(StringRef(""), Buffer);
49}
50
51TEST(BitstreamWriterTest, emitBlob4ByteAligned) {
52 SmallString<64> Buffer;
53 BitstreamWriter W(Buffer);
54 W.emitBlob(Bytes: "str0", /* ShouldEmitSize */ false);
55 EXPECT_EQ(StringRef("str0"), Buffer);
56}
57
58} // end namespace
59

source code of llvm/unittests/Bitstream/BitstreamWriterTest.cpp