Mercurial > hg > CbC > CbC_llvm
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 } |