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 | |
14 | using namespace llvm; |
15 | |
16 | namespace { |
17 | |
18 | TEST(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 | |
25 | TEST(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 | |
44 | TEST(BitstreamWriterTest, emitBlobEmpty) { |
45 | SmallString<64> Buffer; |
46 | BitstreamWriter W(Buffer); |
47 | W.emitBlob(Bytes: "" , /* ShouldEmitSize */ false); |
48 | EXPECT_EQ(StringRef("" ), Buffer); |
49 | } |
50 | |
51 | TEST(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 | |