| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "ios/public/consumer/base/supports_user_data.h" | |
| 6 | |
| 7 #include "base/memory/scoped_ptr.h" | |
| 8 #include "testing/gmock/include/gmock/gmock.h" | |
| 9 #include "testing/gtest/include/gtest/gtest.h" | |
| 10 #include "testing/platform_test.h" | |
| 11 | |
| 12 namespace ios { | |
| 13 | |
| 14 namespace { | |
| 15 const char* kTestData1Key = "test_data1"; | |
| 16 const char* kTestData2Key = "test_data2"; | |
| 17 } // namespace | |
| 18 | |
| 19 class TestData : public SupportsUserData::Data { | |
| 20 public: | |
| 21 TestData(bool* was_destroyed) | |
| 22 : was_destroyed_(was_destroyed) { | |
| 23 *was_destroyed_ = false; | |
| 24 } | |
| 25 virtual ~TestData() { | |
| 26 *was_destroyed_ = true; | |
| 27 } | |
| 28 | |
| 29 private: | |
| 30 bool* was_destroyed_; | |
| 31 }; | |
| 32 | |
| 33 class TestSupportsUserData : public SupportsUserData { | |
| 34 public: | |
| 35 TestSupportsUserData() {} | |
| 36 virtual ~TestSupportsUserData() {} | |
| 37 }; | |
| 38 | |
| 39 class SupportsUserDataTest : public PlatformTest { | |
| 40 public: | |
| 41 virtual void SetUp() override { | |
| 42 PlatformTest::SetUp(); | |
| 43 | |
| 44 test_data1_was_destroyed_ = false; | |
| 45 test_data1_ = new TestData(&test_data1_was_destroyed_); | |
| 46 test_data2_was_destroyed_ = false; | |
| 47 test_data2_ = new TestData(&test_data2_was_destroyed_); | |
| 48 supports_user_data_.reset(new TestSupportsUserData()); | |
| 49 } | |
| 50 | |
| 51 virtual void TearDown() override { | |
| 52 if (!test_data1_was_destroyed_ && | |
| 53 supports_user_data_ && | |
| 54 supports_user_data_->GetUserData(kTestData1Key) != test_data1_) | |
| 55 delete test_data1_; | |
| 56 if (!test_data2_was_destroyed_ && | |
| 57 supports_user_data_ && | |
| 58 supports_user_data_->GetUserData(kTestData2Key) != test_data2_) | |
| 59 delete test_data2_; | |
| 60 | |
| 61 PlatformTest::TearDown(); | |
| 62 } | |
| 63 | |
| 64 protected: | |
| 65 scoped_ptr<TestSupportsUserData> supports_user_data_; | |
| 66 bool test_data1_was_destroyed_; | |
| 67 TestData* test_data1_; | |
| 68 bool test_data2_was_destroyed_; | |
| 69 TestData* test_data2_; | |
| 70 }; | |
| 71 | |
| 72 TEST_F(SupportsUserDataTest, SetAndGetData) { | |
| 73 EXPECT_FALSE(supports_user_data_->GetUserData(kTestData1Key)); | |
| 74 supports_user_data_->SetUserData(kTestData1Key, test_data1_); | |
| 75 EXPECT_EQ(supports_user_data_->GetUserData(kTestData1Key), test_data1_); | |
| 76 } | |
| 77 | |
| 78 TEST_F(SupportsUserDataTest, DataDestroyedOnDestruction) { | |
| 79 EXPECT_FALSE(supports_user_data_->GetUserData(kTestData1Key)); | |
| 80 supports_user_data_->SetUserData(kTestData1Key, test_data1_); | |
| 81 EXPECT_FALSE(test_data1_was_destroyed_); | |
| 82 supports_user_data_.reset(); | |
| 83 EXPECT_TRUE(test_data1_was_destroyed_); | |
| 84 } | |
| 85 | |
| 86 TEST_F(SupportsUserDataTest, DataDestroyedOnRemoval) { | |
| 87 EXPECT_FALSE(supports_user_data_->GetUserData(kTestData1Key)); | |
| 88 supports_user_data_->SetUserData(kTestData1Key, test_data1_); | |
| 89 EXPECT_FALSE(test_data1_was_destroyed_); | |
| 90 supports_user_data_->RemoveUserData(kTestData1Key); | |
| 91 EXPECT_TRUE(test_data1_was_destroyed_); | |
| 92 } | |
| 93 | |
| 94 TEST_F(SupportsUserDataTest, DistinctDataStoredSeparately) { | |
| 95 EXPECT_FALSE(supports_user_data_->GetUserData(kTestData2Key)); | |
| 96 supports_user_data_->SetUserData(kTestData1Key, test_data1_); | |
| 97 EXPECT_FALSE(supports_user_data_->GetUserData(kTestData2Key)); | |
| 98 supports_user_data_->SetUserData(kTestData2Key, test_data2_); | |
| 99 EXPECT_EQ(supports_user_data_->GetUserData(kTestData2Key), test_data2_); | |
| 100 } | |
| 101 | |
| 102 TEST_F(SupportsUserDataTest, DistinctDataDestroyedSeparately) { | |
| 103 supports_user_data_->SetUserData(kTestData1Key, test_data1_); | |
| 104 supports_user_data_->SetUserData(kTestData2Key, test_data2_); | |
| 105 EXPECT_FALSE(test_data1_was_destroyed_); | |
| 106 EXPECT_FALSE(test_data2_was_destroyed_); | |
| 107 | |
| 108 supports_user_data_->RemoveUserData(kTestData2Key); | |
| 109 EXPECT_FALSE(test_data1_was_destroyed_); | |
| 110 EXPECT_TRUE(test_data2_was_destroyed_); | |
| 111 | |
| 112 supports_user_data_.reset(); | |
| 113 EXPECT_TRUE(test_data1_was_destroyed_); | |
| 114 } | |
| 115 | |
| 116 } // namespace ios | |
| OLD | NEW |