Skip to content

Commit

Permalink
TESTS: Add unit tests for seeking in memory write streams
Browse files Browse the repository at this point in the history
  • Loading branch information
Nostritius authored and DrMcCoy committed Jun 23, 2018
1 parent 1b3f2c3 commit 630ad14
Showing 1 changed file with 146 additions and 0 deletions.
146 changes: 146 additions & 0 deletions tests/common/memwritestream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,91 @@ GTEST_TEST(MemoryWriteStream, writeString) {
EXPECT_EQ(data[5], 'r');
}

GTEST_TEST(MemoryWriteStream, seek) {
byte data[6] = { 0 };
Common::MemoryWriteStream stream(data);

stream.writeString("Foobar");
stream.seek(3);
stream.writeString("Foo");

EXPECT_EQ(data[0], 'F');
EXPECT_EQ(data[1], 'o');
EXPECT_EQ(data[2], 'o');
EXPECT_EQ(data[3], 'F');
EXPECT_EQ(data[4], 'o');
EXPECT_EQ(data[5], 'o');

stream.seek(-2, Common::SeekableWriteStream::kOriginEnd);
stream.writeString("uu");

EXPECT_EQ(data[0], 'F');
EXPECT_EQ(data[1], 'o');
EXPECT_EQ(data[2], 'o');
EXPECT_EQ(data[3], 'F');
EXPECT_EQ(data[4], 'u');
EXPECT_EQ(data[5], 'u');

stream.seek(-6, Common::SeekableWriteStream::kOriginCurrent);
stream.writeString("bar");

EXPECT_EQ(data[0], 'b');
EXPECT_EQ(data[1], 'a');
EXPECT_EQ(data[2], 'r');
EXPECT_EQ(data[3], 'F');
EXPECT_EQ(data[4], 'u');
EXPECT_EQ(data[5], 'u');
}

GTEST_TEST(MemoryWriteStream, size) {
byte data[14] = { 0 };
Common::MemoryWriteStream stream(data);

stream.writeUint64BE(0x0123456789ABCDEF);
EXPECT_EQ(stream.size(), 14);

stream.seek(-2, Common::SeekableWriteStream::kOriginCurrent);
stream.writeUint64BE(0x0123456789ABCDEF);
EXPECT_EQ(stream.size(), 14);

EXPECT_EQ(data[0], 0x01);
EXPECT_EQ(data[1], 0x23);
EXPECT_EQ(data[2], 0x45);
EXPECT_EQ(data[3], 0x67);
EXPECT_EQ(data[4], 0x89);
EXPECT_EQ(data[5], 0xAB);
EXPECT_EQ(data[6], 0x01);
EXPECT_EQ(data[7], 0x23);
EXPECT_EQ(data[8], 0x45);
EXPECT_EQ(data[9], 0x67);
EXPECT_EQ(data[10], 0x89);
EXPECT_EQ(data[11], 0xAB);
EXPECT_EQ(data[12], 0xCD);
EXPECT_EQ(data[13], 0xEF);

stream.seek(-2, Common::SeekableWriteStream::kOriginEnd);

byte data2[4] = {0x01, 0x02, 0x03, 0x04};
EXPECT_EQ(stream.write(data2, 4), 2);
EXPECT_EQ(stream.size(), 14);

EXPECT_EQ(data[0], 0x01);
EXPECT_EQ(data[1], 0x23);
EXPECT_EQ(data[2], 0x45);
EXPECT_EQ(data[3], 0x67);
EXPECT_EQ(data[4], 0x89);
EXPECT_EQ(data[5], 0xAB);
EXPECT_EQ(data[6], 0x01);
EXPECT_EQ(data[7], 0x23);
EXPECT_EQ(data[8], 0x45);
EXPECT_EQ(data[9], 0x67);
EXPECT_EQ(data[10], 0x89);
EXPECT_EQ(data[11], 0xAB);
EXPECT_EQ(data[12], 0x01);
EXPECT_EQ(data[13], 0x02);
}


GTEST_TEST(MemoryWriteStreamDynamic, write) {
static const byte data[8] = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

Expand All @@ -324,3 +409,64 @@ GTEST_TEST(MemoryWriteStreamDynamic, write) {
for (size_t i = 0; i < ARRAYSIZE(data); i++)
EXPECT_EQ(stream.getData()[i], data[i]) << "At index " << i;
}

GTEST_TEST(MemoryWriteStreamDynamic, seek) {
Common::MemoryWriteStreamDynamic stream(true);

stream.writeString("Foobar");
stream.seek(3);
stream.writeString("Foo");

EXPECT_EQ(stream.getData()[0], 'F');
EXPECT_EQ(stream.getData()[1], 'o');
EXPECT_EQ(stream.getData()[2], 'o');
EXPECT_EQ(stream.getData()[3], 'F');
EXPECT_EQ(stream.getData()[4], 'o');
EXPECT_EQ(stream.getData()[5], 'o');

stream.seek(-2, Common::SeekableWriteStream::kOriginEnd);
stream.writeString("uu");

EXPECT_EQ(stream.getData()[0], 'F');
EXPECT_EQ(stream.getData()[1], 'o');
EXPECT_EQ(stream.getData()[2], 'o');
EXPECT_EQ(stream.getData()[3], 'F');
EXPECT_EQ(stream.getData()[4], 'u');
EXPECT_EQ(stream.getData()[5], 'u');

stream.seek(-6, Common::SeekableWriteStream::kOriginCurrent);
stream.writeString("bar");

EXPECT_EQ(stream.getData()[0], 'b');
EXPECT_EQ(stream.getData()[1], 'a');
EXPECT_EQ(stream.getData()[2], 'r');
EXPECT_EQ(stream.getData()[3], 'F');
EXPECT_EQ(stream.getData()[4], 'u');
EXPECT_EQ(stream.getData()[5], 'u');
}

GTEST_TEST(MemoryWriteStreamDynamic, size) {
Common::MemoryWriteStreamDynamic stream(true);

stream.writeUint64BE(0x0123456789ABCDEF);
EXPECT_EQ(stream.size(), 8);

stream.seek(-2, Common::SeekableWriteStream::kOriginCurrent);
stream.writeUint64BE(0x0123456789ABCDEF);
EXPECT_EQ(stream.size(), 14);

EXPECT_EQ(stream.getData()[0], 0x01);
EXPECT_EQ(stream.getData()[1], 0x23);
EXPECT_EQ(stream.getData()[2], 0x45);
EXPECT_EQ(stream.getData()[3], 0x67);
EXPECT_EQ(stream.getData()[4], 0x89);
EXPECT_EQ(stream.getData()[5], 0xAB);
EXPECT_EQ(stream.getData()[6], 0x01);
EXPECT_EQ(stream.getData()[7], 0x23);
EXPECT_EQ(stream.getData()[8], 0x45);
EXPECT_EQ(stream.getData()[9], 0x67);
EXPECT_EQ(stream.getData()[10], 0x89);
EXPECT_EQ(stream.getData()[11], 0xAB);
EXPECT_EQ(stream.getData()[12], 0xCD);
EXPECT_EQ(stream.getData()[13], 0xEF);
}

0 comments on commit 630ad14

Please sign in to comment.