Home | History | Annotate | Download | only in Bitcode
      1 //===- BitstreamWriterTest.cpp - Tests for BitstreamWriter ----------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #include "llvm/ADT/STLExtras.h"
     11 #include "llvm/ADT/SmallString.h"
     12 #include "llvm/Bitcode/BitstreamWriter.h"
     13 #include "gtest/gtest.h"
     14 
     15 using namespace llvm;
     16 
     17 namespace {
     18 
     19 TEST(BitstreamWriterTest, emitBlob) {
     20   SmallString<64> Buffer;
     21   BitstreamWriter W(Buffer);
     22   W.emitBlob("str", /* ShouldEmitSize */ false);
     23   EXPECT_EQ(StringRef("str\0", 4), Buffer);
     24 }
     25 
     26 TEST(BitstreamWriterTest, emitBlobWithSize) {
     27   SmallString<64> Buffer;
     28   {
     29     BitstreamWriter W(Buffer);
     30     W.emitBlob("str");
     31   }
     32   SmallString<64> Expected;
     33   {
     34     BitstreamWriter W(Expected);
     35     W.EmitVBR(3, 6);
     36     W.FlushToWord();
     37     W.Emit('s', 8);
     38     W.Emit('t', 8);
     39     W.Emit('r', 8);
     40     W.Emit(0, 8);
     41   }
     42   EXPECT_EQ(StringRef(Expected), Buffer);
     43 }
     44 
     45 TEST(BitstreamWriterTest, emitBlobEmpty) {
     46   SmallString<64> Buffer;
     47   BitstreamWriter W(Buffer);
     48   W.emitBlob("", /* ShouldEmitSize */ false);
     49   EXPECT_EQ(StringRef(""), Buffer);
     50 }
     51 
     52 TEST(BitstreamWriterTest, emitBlob4ByteAligned) {
     53   SmallString<64> Buffer;
     54   BitstreamWriter W(Buffer);
     55   W.emitBlob("str0", /* ShouldEmitSize */ false);
     56   EXPECT_EQ(StringRef("str0"), Buffer);
     57 }
     58 
     59 } // end namespace
     60