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 |