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

Side by Side Diff: blimp/engine/feature/geolocation/blimp_location_provider_unittest.cc

Issue 2091023006: Adds EngineGeolocationFeature for Blimp Geolocation project. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment update Created 4 years, 5 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
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/feature/geolocation/blimp_location_provider.h"
6
7 #include <memory>
8 #include <utility>
9
10 #include "base/bind.h"
11 #include "base/memory/ptr_util.h"
12 #include "blimp/engine/feature/geolocation/mock_blimp_location_provider_delegate .h"
13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 using testing::_;
17 using testing::SaveArg;
18
19 namespace blimp {
20 namespace engine {
21
22 class BlimpLocationProviderTest : public testing::Test {
23 public:
24 BlimpLocationProviderTest()
25 : mock_callback_(base::Bind(&BlimpLocationProviderTest::OnLocationUpdate,
26 base::Unretained(this))),
27 delegate_(base::WrapUnique(new MockBlimpLocationProviderDelegate)),
28 location_provider_(new BlimpLocationProvider(delegate_->GetWeakPtr())) {
29 }
30
31 void SetUp() override {}
32
33 MOCK_METHOD2(OnLocationUpdate,
34 void(const content::LocationProvider* provider,
35 const content::Geoposition& geoposition));
36
37 protected:
38 content::LocationProvider::LocationProviderUpdateCallback mock_callback_;
39 std::unique_ptr<MockBlimpLocationProviderDelegate> delegate_;
40 std::unique_ptr<BlimpLocationProvider> location_provider_;
41
42 private:
43 DISALLOW_COPY_AND_ASSIGN(BlimpLocationProviderTest);
44 };
45
46 TEST_F(BlimpLocationProviderTest, StartProviderRunsCorrectly) {
47 EXPECT_CALL(
48 *delegate_,
49 RequestAccuracy(GeolocationSetInterestLevelMessage::HIGH_ACCURACY))
50 .Times(1);
51 EXPECT_CALL(*delegate_,
52 RequestAccuracy(GeolocationSetInterestLevelMessage::LOW_ACCURACY))
53 .Times(1);
54
55 // Occurs during tear down.
Wez 2016/07/22 01:18:58 nit: Suggest a little more clarifying wording, e.g
CJ 2016/07/22 20:03:30 Done.
56 EXPECT_CALL(*delegate_,
57 RequestAccuracy(GeolocationSetInterestLevelMessage::NO_INTEREST))
58 .Times(1);
59
60 EXPECT_TRUE(location_provider_->StartProvider(true));
61 EXPECT_TRUE(location_provider_->StartProvider(false));
62 }
63
64 TEST_F(BlimpLocationProviderTest, StartProviderHandlesNullDelegate) {
65 EXPECT_CALL(*delegate_, RequestAccuracy(_)).Times(0);
66 delegate_.reset();
Kevin M 2016/07/21 17:37:06 add newline to visually separate execution setup a
CJ 2016/07/21 22:04:46 Done.
67 EXPECT_FALSE(location_provider_->StartProvider(true));
68 EXPECT_FALSE(location_provider_->StartProvider(false));
69 }
70
71 TEST_F(BlimpLocationProviderTest, StopProviderRunsCorrectly) {
72 EXPECT_CALL(
73 *delegate_,
74 RequestAccuracy(GeolocationSetInterestLevelMessage::HIGH_ACCURACY))
75 .Times(1);
76 EXPECT_CALL(*delegate_,
77 RequestAccuracy(GeolocationSetInterestLevelMessage::NO_INTEREST))
78 .Times(1);
79 location_provider_->StartProvider(true);
80
Kevin M 2016/07/21 17:37:06 remove newline
CJ 2016/07/21 22:04:46 Done.
81 location_provider_->StopProvider();
82 }
83
84 TEST_F(BlimpLocationProviderTest, StopProviderHandlesNullDelegate) {
85 EXPECT_CALL(
86 *delegate_,
87 RequestAccuracy(GeolocationSetInterestLevelMessage::HIGH_ACCURACY))
88 .Times(1);
89 location_provider_->StartProvider(true);
90 delegate_.reset();
91 location_provider_->StopProvider();
92 }
93
94 TEST_F(BlimpLocationProviderTest, LocationProviderDeleted) {
95 EXPECT_CALL(
96 *delegate_,
97 RequestAccuracy(GeolocationSetInterestLevelMessage::HIGH_ACCURACY))
98 .Times(1);
99 EXPECT_CALL(*delegate_,
100 RequestAccuracy(GeolocationSetInterestLevelMessage::NO_INTEREST))
101 .Times(1);
102 location_provider_->StartProvider(true);
103 location_provider_.reset();
104 }
105
106 TEST_F(BlimpLocationProviderTest, RequestRefreshRunsCorrectly) {
107 EXPECT_CALL(*delegate_, RequestRefresh()).Times(1);
108 location_provider_->StartProvider(true);
109 location_provider_->RequestRefresh();
110 }
111
112 TEST_F(BlimpLocationProviderTest, RequestRefreshHandlesNullDelegate) {
113 EXPECT_CALL(*delegate_, RequestRefresh()).Times(0);
114 location_provider_->StartProvider(true);
115 delegate_.reset();
116 location_provider_->RequestRefresh();
117 }
118
119 TEST_F(BlimpLocationProviderTest, OnPermissionGrantedCallsRefresh) {
120 EXPECT_CALL(*delegate_, RequestRefresh()).Times(1);
121 location_provider_->StartProvider(true);
122 location_provider_->OnPermissionGranted();
123 }
124
125 TEST_F(BlimpLocationProviderTest, OnPermissionGrantedHandlesNullDelegate) {
126 EXPECT_CALL(*delegate_, RequestRefresh()).Times(0);
127 location_provider_->StartProvider(true);
128 delegate_.reset();
129 location_provider_->OnPermissionGranted();
130 }
131
132 TEST_F(BlimpLocationProviderTest, SetUpdateCallbackPropagatesCallback) {
133 base::Callback<void(const content::Geoposition&)> callback;
134 EXPECT_CALL(*delegate_, SetUpdateCallback(_)).WillOnce(SaveArg<0>(&callback));
135 location_provider_->SetUpdateCallback(mock_callback_);
136
137 EXPECT_CALL(*this, OnLocationUpdate(location_provider_.get(), _)).Times(1);
138 content::Geoposition position;
139 callback.Run(position);
140 }
141
142 TEST_F(BlimpLocationProviderTest, SetUpdateCallbackHandlesNullDelegate) {
143 EXPECT_CALL(*delegate_, SetUpdateCallback(_)).Times(0);
144 delegate_.reset();
145 location_provider_->SetUpdateCallback(mock_callback_);
146 }
147
148 } // namespace engine
149 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698