Make check depend on all.
[oota-llvm.git] / unittests / Support / MemoryBufferTest.cpp
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
18 using namespace llvm;
19
20 class MemoryBufferTest : public testing::Test {
21 protected:
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
33 namespace {
34
35 TEST_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
59 TEST_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
72 TEST_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 }