Re-enable BinaryStreamTest.StreamReaderObject.

I had an invalid pointer / size calculation that was causing
a stack smash.  Should be fixed now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296220 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Zachary Turner 2017-02-25 01:20:08 +00:00
parent 1613664c57
commit 0a1a6e3516
2 changed files with 28 additions and 34 deletions

View File

@ -443,39 +443,33 @@ TEST_F(BinaryStreamTest, StreamReaderEnum) {
}
}
//TEST_F(BinaryStreamTest, StreamReaderObject) {
// struct Foo {
// int X;
// double Y;
// char Z;
// };
//
// std::vector<Foo> Foos;
// Foos.push_back({-42, 42.42, 42});
// Foos.push_back({100, 3.1415, -89});
//
// std::vector<uint8_t> Bytes;
// Bytes.resize(2 * sizeof(Foo));
// Foo *FPtr = reinterpret_cast<Foo *>(&Bytes[0]);
// Foo *GPtr = FPtr + 1;
//
// ::memcpy(FPtr, &Foos[0], sizeof(Foo));
// ::memcpy(GPtr + sizeof(Foo), &Foos[1], sizeof(Foo));
//
// initialize(Bytes, 0);
//
// for (auto IS : InputStreams) {
// // 1. Reading object pointers.
// BinaryStreamReader Reader(*IS);
// const Foo *FPtrOut = nullptr;
// const Foo *GPtrOut = nullptr;
// ASSERT_NO_ERROR(Reader.readObject(FPtrOut));
// ASSERT_NO_ERROR(Reader.readObject(GPtrOut));
// EXPECT_EQ(0U, Reader.bytesRemaining());
// EXPECT_EQ(0, ::memcmp(FPtr, FPtrOut, sizeof(Foo)));
// EXPECT_EQ(0, ::memcmp(GPtr, GPtrOut, sizeof(Foo)));
// }
//}
TEST_F(BinaryStreamTest, StreamReaderObject) {
struct Foo {
int X;
double Y;
char Z;
};
std::vector<Foo> Foos;
Foos.push_back({-42, 42.42, 42});
Foos.push_back({100, 3.1415, -89});
const uint8_t *Bytes = reinterpret_cast<const uint8_t *>(&Foos[0]);
initialize(makeArrayRef(Bytes, 2 * sizeof(Foo)), 0);
for (auto IS : InputStreams) {
// 1. Reading object pointers.
BinaryStreamReader Reader(*IS);
const Foo *FPtrOut = nullptr;
const Foo *GPtrOut = nullptr;
ASSERT_NO_ERROR(Reader.readObject(FPtrOut));
ASSERT_NO_ERROR(Reader.readObject(GPtrOut));
EXPECT_EQ(0U, Reader.bytesRemaining());
EXPECT_EQ(0, ::memcmp(&Foos[0], FPtrOut, sizeof(Foo)));
EXPECT_EQ(0, ::memcmp(&Foos[1], GPtrOut, sizeof(Foo)));
}
}
TEST_F(BinaryStreamTest, StreamReaderStrings) {
std::vector<uint8_t> Bytes = {'O', 'n', 'e', '\0', 'T', 'w', 'o',

View File

@ -37,7 +37,7 @@ public:
uint32_t block_size() const { return 1; }
uint32_t block_count() const { return Blocks.size(); }
endianness getEndian() const { return little; }
endianness getEndian() const override { return little; }
Error readBytes(uint32_t Offset, uint32_t Size,
ArrayRef<uint8_t> &Buffer) override {