cc: Make picture pile base thread safe.
[chromium-blink-merge.git] / ios / consumer / base / supports_user_data_unittest.cc
blobee31845f15cf4e8a1a79c9c7a2fe1c7f96ac77b0
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.
5 #include "ios/public/consumer/base/supports_user_data.h"
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"
12 namespace ios {
14 namespace {
15 const char* kTestData1Key = "test_data1";
16 const char* kTestData2Key = "test_data2";
17 } // namespace
19 class TestData : public SupportsUserData::Data {
20 public:
21 TestData(bool* was_destroyed)
22 : was_destroyed_(was_destroyed) {
23 *was_destroyed_ = false;
25 virtual ~TestData() {
26 *was_destroyed_ = true;
29 private:
30 bool* was_destroyed_;
33 class TestSupportsUserData : public SupportsUserData {
34 public:
35 TestSupportsUserData() {}
36 virtual ~TestSupportsUserData() {}
39 class SupportsUserDataTest : public PlatformTest {
40 public:
41 virtual void SetUp() override {
42 PlatformTest::SetUp();
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());
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_;
61 PlatformTest::TearDown();
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_;
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_);
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_);
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_);
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_);
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_);
108 supports_user_data_->RemoveUserData(kTestData2Key);
109 EXPECT_FALSE(test_data1_was_destroyed_);
110 EXPECT_TRUE(test_data2_was_destroyed_);
112 supports_user_data_.reset();
113 EXPECT_TRUE(test_data1_was_destroyed_);
116 } // namespace ios