Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: blimp/engine/common/blimp_pref_store_unittest.cc

Issue 1881253003: Create a PrefStore in support of Blimp metrics collection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Additional test to confirm proper observer calls. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « blimp/engine/common/blimp_pref_store.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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 "blimp/engine/common/blimp_pref_store.h"
6
7 #include "base/values.h"
8 #include "components/prefs/pref_store_observer_mock.h"
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace blimp {
13 namespace engine {
14 namespace {
15 const char kTestPref[] = "test.pref";
16
17 class BlimpPrefStoreTest : public testing::Test {
18 public:
19 BlimpPrefStoreTest() { }
20
21 void SetUp() override { store_ = new BlimpPrefStore(); }
22 protected:
23 scoped_refptr<BlimpPrefStore> store_;
24 PrefStoreObserverMock observer_;
25 };
26
27 TEST_F(BlimpPrefStoreTest, SetGetValue) {
28 const base::Value* value = NULL;
29 base::Value* mutable_value = NULL;
30 EXPECT_FALSE(store_->GetValue(kTestPref, &value));
31 EXPECT_FALSE(store_->GetMutableValue(kTestPref, &mutable_value));
32
33 store_->SetValue(kTestPref, make_scoped_ptr(new base::FundamentalValue(42)),
34 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
35 EXPECT_TRUE(store_->GetValue(kTestPref, &value));
36 EXPECT_TRUE(base::FundamentalValue(42).Equals(value));
37 EXPECT_TRUE(store_->GetMutableValue(kTestPref, &mutable_value));
38 EXPECT_TRUE(base::FundamentalValue(42).Equals(mutable_value));
39
40 store_->RemoveValue(kTestPref, WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
41 EXPECT_FALSE(store_->GetValue(kTestPref, &value));
42 EXPECT_FALSE(store_->GetMutableValue(kTestPref, &mutable_value));
43 }
44
45 TEST_F(BlimpPrefStoreTest, GetSetObserver) {
46 // Starts with no observers.
47 EXPECT_FALSE(store_->HasObservers());
48 // Add one.
Kevin M 2016/04/20 23:03:35 Add newlines before commented blocks, so... EXPEC
Jess 2016/04/20 23:32:06 Done.
49 store_->AddObserver(&observer_);
50 EXPECT_TRUE(store_->HasObservers());
51 // Remove only observer.
52 store_->RemoveObserver(&observer_);
53 EXPECT_FALSE(store_->HasObservers());
54 }
55
56 TEST_F(BlimpPrefStoreTest, CallObserver) {
57 // With observer included.
58 store_->AddObserver(&observer_);
59 // Triggers on SetValue.
60 store_->SetValue(kTestPref, make_scoped_ptr(new base::FundamentalValue(42)),
61 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
62 observer_.VerifyAndResetChangedKey(kTestPref);
63 // And RemoveValue.
64 store_->RemoveValue(kTestPref, WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
65 observer_.VerifyAndResetChangedKey(kTestPref);
66 // But not SetValueSilently.
67 store_->SetValueSilently(kTestPref,
68 make_scoped_ptr(new base::FundamentalValue(42)),
69 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
70 EXPECT_EQ(0u, observer_.changed_keys.size());
71 // On multiple RemoveValues only the first one triggers observer.
72 store_->RemoveValue(kTestPref, WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
73 observer_.VerifyAndResetChangedKey(kTestPref);
74 store_->RemoveValue(kTestPref, WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
75 EXPECT_EQ(0u, observer_.changed_keys.size());
76
77 // Doesn't make call on removed observers.
78 store_->RemoveObserver(&observer_);
79 store_->SetValue(kTestPref, make_scoped_ptr(new base::FundamentalValue(42)),
80 WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
81 store_->RemoveValue(kTestPref, WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
82 EXPECT_EQ(0u, observer_.changed_keys.size());
83 }
84
85 } // namespace
86 } // namespace engine
87 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/engine/common/blimp_pref_store.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698