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