MemoryBufferTest.cpp revision 5a88dda4be791426ab4d20a6a6c9c65d66614a27
1//===- llvm/unittest/Support/MemoryBufferTest.cpp - MemoryBuffer tests ----===// 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// This file implements unit tests for the MemoryBuffer support class. 11// 12//===----------------------------------------------------------------------===// 13 14#include "llvm/Support/MemoryBuffer.h" 15#include "llvm/ADT/OwningPtr.h" 16#include "gtest/gtest.h" 17 18using namespace llvm; 19 20class MemoryBufferTest : public testing::Test { 21protected: 22 MemoryBufferTest() 23 : data("this is some data") 24 { } 25 26 virtual void SetUp() { } 27 28 typedef OwningPtr<MemoryBuffer> OwningBuffer; 29 30 std::string data; 31}; 32 33namespace { 34 35TEST_F(MemoryBufferTest, get) { 36 // Default name and null-terminator flag 37 OwningBuffer MB1(MemoryBuffer::getMemBuffer(data)); 38 EXPECT_TRUE(0 != MB1.get()); 39 40 // RequiresNullTerminator = false 41 OwningBuffer MB2(MemoryBuffer::getMemBuffer(data, "one", false)); 42 EXPECT_TRUE(0 != MB2.get()); 43 44 // RequiresNullTerminator = true 45 OwningBuffer MB3(MemoryBuffer::getMemBuffer(data, "two", true)); 46 EXPECT_TRUE(0 != MB3.get()); 47 48 // verify all 3 buffers point to the same address 49 EXPECT_EQ(MB1->getBufferStart(), MB2->getBufferStart()); 50 EXPECT_EQ(MB2->getBufferStart(), MB3->getBufferStart()); 51 52 // verify the original data is unmodified after deleting the buffers 53 MB1.reset(); 54 MB2.reset(); 55 MB3.reset(); 56 EXPECT_EQ("this is some data", data); 57} 58 59TEST_F(MemoryBufferTest, copy) { 60 // copy with no name 61 OwningBuffer MBC1(MemoryBuffer::getMemBufferCopy(data)); 62 EXPECT_TRUE(0 != MBC1.get()); 63 64 // copy with a name 65 OwningBuffer MBC2(MemoryBuffer::getMemBufferCopy(data, "copy")); 66 EXPECT_TRUE(0 != MBC2.get()); 67 68 // verify the two copies do not point to the same place 69 EXPECT_NE(MBC1->getBufferStart(), MBC2->getBufferStart()); 70} 71 72TEST_F(MemoryBufferTest, make_new) { 73 // 0-sized buffer 74 OwningBuffer Zero(MemoryBuffer::getNewUninitMemBuffer(0)); 75 EXPECT_TRUE(0 != Zero.get()); 76 77 // uninitialized buffer with no name 78 OwningBuffer One(MemoryBuffer::getNewUninitMemBuffer(321)); 79 EXPECT_TRUE(0 != One.get()); 80 81 // uninitialized buffer with name 82 OwningBuffer Two(MemoryBuffer::getNewUninitMemBuffer(123, "bla")); 83 EXPECT_TRUE(0 != Two.get()); 84 85 // 0-initialized buffer with no name 86 OwningBuffer Three(MemoryBuffer::getNewMemBuffer(321, data)); 87 EXPECT_TRUE(0 != Three.get()); 88 for (size_t i = 0; i < 321; ++i) 89 EXPECT_EQ(0, Three->getBufferStart()[0]); 90 91 // 0-initialized buffer with name 92 OwningBuffer Four(MemoryBuffer::getNewMemBuffer(123, "zeros")); 93 EXPECT_TRUE(0 != Four.get()); 94 for (size_t i = 0; i < 123; ++i) 95 EXPECT_EQ(0, Four->getBufferStart()[0]); 96} 97 98} 99