summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Support/MemoryBufferTest.cpp
diff options
context:
space:
mode:
authorEli Bendersky <eliben@google.com>2013-07-22 22:46:21 +0000
committerEli Bendersky <eliben@google.com>2013-07-22 22:46:21 +0000
commitf288626c130fc32e31bfd0ed629eb46bf638003d (patch)
treed769665825e259d3e88230e9d15bc3d31530f242 /llvm/unittests/Support/MemoryBufferTest.cpp
parent1ff26ab69477f16822ca465c4a8ff6edb00f692f (diff)
downloadbcm5719-llvm-f288626c130fc32e31bfd0ed629eb46bf638003d.tar.gz
bcm5719-llvm-f288626c130fc32e31bfd0ed629eb46bf638003d.zip
Add a simple unit test for MemoryBuffer::getOpenFile
llvm-svn: 186887
Diffstat (limited to 'llvm/unittests/Support/MemoryBufferTest.cpp')
-rw-r--r--llvm/unittests/Support/MemoryBufferTest.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/unittests/Support/MemoryBufferTest.cpp b/llvm/unittests/Support/MemoryBufferTest.cpp
index 1d9f482c519..336a0e441c0 100644
--- a/llvm/unittests/Support/MemoryBufferTest.cpp
+++ b/llvm/unittests/Support/MemoryBufferTest.cpp
@@ -11,7 +11,9 @@
//
//===----------------------------------------------------------------------===//
+#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/raw_ostream.h"
#include "llvm/ADT/OwningPtr.h"
#include "gtest/gtest.h"
@@ -95,4 +97,35 @@ TEST_F(MemoryBufferTest, make_new) {
EXPECT_EQ(0, Four->getBufferStart()[0]);
}
+TEST_F(MemoryBufferTest, getOpenFileNoNullTerminator) {
+ // Test that MemoryBuffer::getOpenFile works properly when no null
+ // terminator is requested and the size is large enough to trigger
+ // the usage of memory mapping.
+ int TestFD;
+ SmallString<64> TestPath;
+ // Create a temporary file and write data into it.
+ sys::fs::createTemporaryFile("prefix", "temp", TestFD, TestPath);
+ // OF is responsible for closing the file, and is unbuffered so that
+ // the results are immediately visible through the fd.
+ raw_fd_ostream OF(TestFD, true, true);
+ for (int i = 0; i < 60000; ++i) {
+ OF << "0123456789";
+ }
+
+ OwningBuffer Buf;
+ error_code EC = MemoryBuffer::getOpenFile(TestFD,
+ TestPath.c_str(),
+ Buf,
+ 40000, // Size
+ -1,
+ 8000, // Offset
+ false);
+ EXPECT_FALSE(EC);
+
+ StringRef BufData = Buf->getBuffer();
+ EXPECT_EQ(BufData.size(), 40000U);
+ EXPECT_EQ(BufData[0], '0');
+ EXPECT_EQ(BufData[9], '9');
+}
+
}
OpenPOWER on IntegriCloud