#include "stdafx.h" #include "gtest/gtest.h" #include "gmock/gmock.h" #include "../TModificationTracker.h" #include "../TString.h" using namespace chengine; TEST(TModificationTrackerTests, DefaultConstructor) { TModificationTracker tracker; EXPECT_TRUE(tracker.IsModified()); EXPECT_EQ(TString(), tracker); EXPECT_FALSE(tracker.IsAdded()); } TEST(TModificationTrackerTests, ValueConstructor_NotAdded) { TModificationTracker tracker(L"SomeString", false); EXPECT_EQ(TString(L"SomeString"), tracker); EXPECT_TRUE(tracker.IsModified()); EXPECT_FALSE(tracker.IsAdded()); } TEST(TModificationTrackerTests, ValueConstructor_Added) { TModificationTracker tracker(L"SomeString", true); EXPECT_EQ(TString(L"SomeString"), tracker); EXPECT_TRUE(tracker.IsModified()); EXPECT_TRUE(tracker.IsAdded()); } TEST(TModificationTrackerTests, CopyConstructor_NotAdded) { TModificationTracker tracker(L"SomeString", false); TModificationTracker tracker2(tracker); EXPECT_EQ(TString(L"SomeString"), tracker2); EXPECT_TRUE(tracker2.IsModified()); EXPECT_FALSE(tracker2.IsAdded()); } TEST(TModificationTrackerTests, CopyConstructor_Added) { TModificationTracker tracker(L"SomeString", true); TModificationTracker tracker2(tracker); EXPECT_EQ(TString(L"SomeString"), tracker2); EXPECT_TRUE(tracker2.IsModified()); EXPECT_TRUE(tracker2.IsAdded()); } /////////////////////////////////////////////////////////////////////////// TEST(TModificationTrackerTests, AssignmentOperator_ModificationTracker_NotAdded) { TModificationTracker tracker(L"SomeString", false); TModificationTracker tracker2; tracker2 = tracker; EXPECT_EQ(TString(L"SomeString"), tracker2); EXPECT_TRUE(tracker2.IsModified()); EXPECT_FALSE(tracker2.IsAdded()); } TEST(TModificationTrackerTests, AssignmentOperator_ModificationTracker_Added) { TModificationTracker tracker(L"SomeString", true); TModificationTracker tracker2; tracker2 = tracker; EXPECT_EQ(TString(L"SomeString"), tracker2); EXPECT_TRUE(tracker2.IsModified()); EXPECT_TRUE(tracker2.IsAdded()); } TEST(TModificationTrackerTests, AssignmentOperator_ValueModified) { TModificationTracker tracker(L"SomeString", false); tracker.ClearModifications(); tracker = L"OtherString"; EXPECT_EQ(TString(L"OtherString"), tracker); EXPECT_TRUE(tracker.IsModified()); EXPECT_FALSE(tracker.IsAdded()); } TEST(TModificationTrackerTests, AssignmentOperator_ValueNotModified) { TModificationTracker tracker(L"SomeString", false); tracker.ClearModifications(); tracker = L"SomeString"; EXPECT_EQ(TString(L"SomeString"), tracker); EXPECT_FALSE(tracker.IsModified()); EXPECT_FALSE(tracker.IsAdded()); } /////////////////////////////////////////////////////////////////////////// TEST(TModificationTrackerTests, Modify) { TModificationTracker tracker(L"SomeString", false); tracker.ClearModifications(); tracker.Modify() = L"SomeString"; EXPECT_EQ(TString(L"SomeString"), tracker); EXPECT_TRUE(tracker.IsModified()); EXPECT_FALSE(tracker.IsAdded()); } /////////////////////////////////////////////////////////////////////////// TEST(TModificationTrackerTests, IsModified_IsAdded_ClearModifications) { TModificationTracker tracker(L"SomeString", true); EXPECT_TRUE(tracker.IsModified()); EXPECT_TRUE(tracker.IsAdded()); tracker.ClearModifications(); EXPECT_FALSE(tracker.IsModified()); EXPECT_FALSE(tracker.IsAdded()); }