comparison unittests/Support/MemoryBufferTest.cpp @ 83:60c9769439b8 LLVM3.7

LLVM 3.7
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Wed, 18 Feb 2015 14:55:36 +0900
parents 54457678186b
children afa8332a0e37
comparison
equal deleted inserted replaced
78:af83660cff7b 83:60c9769439b8
167 167
168 TEST_F(MemoryBufferTest, getOpenFileReopened) { 168 TEST_F(MemoryBufferTest, getOpenFileReopened) {
169 testGetOpenFileSlice(true); 169 testGetOpenFileSlice(true);
170 } 170 }
171 171
172 } 172
173 TEST_F(MemoryBufferTest, slice) {
174 // Create a file that is six pages long with different data on each page.
175 int FD;
176 SmallString<64> TestPath;
177 sys::fs::createTemporaryFile("MemoryBufferTest_Slice", "temp", FD, TestPath);
178 raw_fd_ostream OF(FD, true, /*unbuffered=*/true);
179 for (unsigned i = 0; i < 0x2000 / 8; ++i) {
180 OF << "12345678";
181 }
182 for (unsigned i = 0; i < 0x2000 / 8; ++i) {
183 OF << "abcdefgh";
184 }
185 for (unsigned i = 0; i < 0x2000 / 8; ++i) {
186 OF << "ABCDEFGH";
187 }
188 OF.close();
189
190 // Try offset of one page.
191 ErrorOr<OwningBuffer> MB = MemoryBuffer::getFileSlice(TestPath.str(),
192 0x4000, 0x1000);
193 std::error_code EC = MB.getError();
194 ASSERT_FALSE(EC);
195 EXPECT_EQ(0x4000UL, MB.get()->getBufferSize());
196
197 StringRef BufData = MB.get()->getBuffer();
198 EXPECT_TRUE(BufData.substr(0x0000,8).equals("12345678"));
199 EXPECT_TRUE(BufData.substr(0x0FF8,8).equals("12345678"));
200 EXPECT_TRUE(BufData.substr(0x1000,8).equals("abcdefgh"));
201 EXPECT_TRUE(BufData.substr(0x2FF8,8).equals("abcdefgh"));
202 EXPECT_TRUE(BufData.substr(0x3000,8).equals("ABCDEFGH"));
203 EXPECT_TRUE(BufData.substr(0x3FF8,8).equals("ABCDEFGH"));
204
205 // Try non-page aligned.
206 ErrorOr<OwningBuffer> MB2 = MemoryBuffer::getFileSlice(TestPath.str(),
207 0x3000, 0x0800);
208 EC = MB2.getError();
209 ASSERT_FALSE(EC);
210 EXPECT_EQ(0x3000UL, MB2.get()->getBufferSize());
211
212 StringRef BufData2 = MB2.get()->getBuffer();
213 EXPECT_TRUE(BufData2.substr(0x0000,8).equals("12345678"));
214 EXPECT_TRUE(BufData2.substr(0x17F8,8).equals("12345678"));
215 EXPECT_TRUE(BufData2.substr(0x1800,8).equals("abcdefgh"));
216 EXPECT_TRUE(BufData2.substr(0x2FF8,8).equals("abcdefgh"));
217
218 }
219
220
221
222 }