ee31845f15cf4e8a1a79c9c7a2fe1c7f96ac77b0
[platform/framework/web/crosswalk.git] / src / ios / consumer / base / supports_user_data_unittest.cc
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