From 864f0a01867fa894c5586107de9f239dd25910fb Mon Sep 17 00:00:00 2001 From: Sebastian Messmer Date: Sun, 26 Apr 2015 00:41:29 +0200 Subject: [PATCH] Added more test cases for Data --- data/Data.h | 2 -- test/data/DataTest.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/data/Data.h b/data/Data.h index 4d6ec069..6b746521 100644 --- a/data/Data.h +++ b/data/Data.h @@ -16,7 +16,6 @@ public: virtual ~Data(); Data(Data &&rhs); // move constructor - //TODO Test move assignment (and if not tested yet, also move constructor) Data &operator=(Data &&rhs); // move assignment Data copy() const; @@ -41,7 +40,6 @@ private: DISALLOW_COPY_AND_ASSIGN(Data); }; -//TODO Test operator== and operator!= bool operator==(const Data &lhs, const Data &rhs); bool operator!=(const Data &lhs, const Data &rhs); diff --git a/test/data/DataTest.cpp b/test/data/DataTest.cpp index a3b8819c..f3f6ae8c 100644 --- a/test/data/DataTest.cpp +++ b/test/data/DataTest.cpp @@ -114,6 +114,14 @@ TEST_P(DataTestWithSizeParam, Copy) { EXPECT_EQ(randomData, copy); } +TEST_F(DataTest, ChangingCopyDoesntChangeOriginal) { + Data original = DataFixture::generate(1024); + Data copy = original.copy(); + ((uint8_t*)copy.data())[0] = ((uint8_t*)copy.data())[0] + 1; + EXPECT_EQ(DataFixture::generate(1024), original); + EXPECT_NE(copy, original); +} + TEST_F(DataTest, InitializeWithZeroes) { Data data(10*1024); data.FillWithZeroes(); @@ -128,6 +136,61 @@ TEST_F(DataTest, FillModifiedDataWithZeroes) { EXPECT_TRUE(DataIsZeroes(data)); } +TEST_F(DataTest, MoveConstructor) { + Data original = DataFixture::generate(1024); + Data copy(std::move(original)); + EXPECT_EQ(DataFixture::generate(1024), copy); + EXPECT_EQ(nullptr, original.data()); + EXPECT_EQ(0, original.size()); +} + +TEST_F(DataTest, MoveAssignment) { + Data original = DataFixture::generate(1024); + Data copy(0); + copy = std::move(original); + EXPECT_EQ(DataFixture::generate(1024), copy); + EXPECT_EQ(nullptr, original.data()); + EXPECT_EQ(0, original.size()); +} + +TEST_F(DataTest, Equality) { + Data data1 = DataFixture::generate(1024); + Data data2 = DataFixture::generate(1024); + EXPECT_TRUE(data1 == data2); + EXPECT_FALSE(data1 != data2); +} + +TEST_F(DataTest, Inequality_DifferentSize) { + Data data1 = DataFixture::generate(1024); + Data data2 = DataFixture::generate(1023); + EXPECT_FALSE(data1 == data2); + EXPECT_TRUE(data1 != data2); +} + +TEST_F(DataTest, Inequality_DifferentFirstByte) { + Data data1 = DataFixture::generate(1024); + Data data2 = DataFixture::generate(1024); + ((uint8_t*)data2.data())[0] = ((uint8_t*)data2.data())[0] + 1; + EXPECT_FALSE(data1 == data2); + EXPECT_TRUE(data1 != data2); +} + +TEST_F(DataTest, Inequality_DifferentMiddleByte) { + Data data1 = DataFixture::generate(1024); + Data data2 = DataFixture::generate(1024); + ((uint8_t*)data2.data())[500] = ((uint8_t*)data2.data())[500] + 1; + EXPECT_FALSE(data1 == data2); + EXPECT_TRUE(data1 != data2); +} + +TEST_F(DataTest, Inequality_DifferentLastByte) { + Data data1 = DataFixture::generate(1024); + Data data2 = DataFixture::generate(1024); + ((uint8_t*)data2.data())[1023] = ((uint8_t*)data2.data())[1023] + 1; + EXPECT_FALSE(data1 == data2); + EXPECT_TRUE(data1 != data2); +} + //Needs 64bit for representation. This value isn't in the size param list, because the list is also used for read/write checks. TEST_F(DataTest, LargesizeSize) { size_t size = 10L*1024*1024*1024;