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

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: Addresses Wez's #61 comments 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 // BlimpLocationProvider implicitly stops on teardown, if it was started.
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
67 delegate_.reset();
68 EXPECT_FALSE(location_provider_->StartProvider(true));
69 EXPECT_FALSE(location_provider_->StartProvider(false));
70 }
71
72 TEST_F(BlimpLocationProviderTest, StopProviderRunsCorrectly) {
73 EXPECT_CALL(
74 *delegate_,
75 RequestAccuracy(GeolocationSetInterestLevelMessage::HIGH_ACCURACY))
76 .Times(1);
77 EXPECT_CALL(*delegate_,
78 RequestAccuracy(GeolocationSetInterestLevelMessage::NO_INTEREST))
79 .Times(1);
80
81 location_provider_->StartProvider(true);
82 location_provider_->StopProvider();
83 }
84
85 TEST_F(BlimpLocationProviderTest, StopProviderHandlesNullDelegate) {
86 EXPECT_CALL(
87 *delegate_,
88 RequestAccuracy(GeolocationSetInterestLevelMessage::HIGH_ACCURACY))
89 .Times(1);
90
91 location_provider_->StartProvider(true);
92 delegate_.reset();
93 location_provider_->StopProvider();
94 }
95
96 TEST_F(BlimpLocationProviderTest, LocationProviderDeleted) {
97 EXPECT_CALL(
98 *delegate_,
99 RequestAccuracy(GeolocationSetInterestLevelMessage::HIGH_ACCURACY))
100 .Times(1);
101 EXPECT_CALL(*delegate_,
102 RequestAccuracy(GeolocationSetInterestLevelMessage::NO_INTEREST))
103 .Times(1);
104
105 location_provider_->StartProvider(true);
106 location_provider_.reset();
107 }
108
109 TEST_F(BlimpLocationProviderTest, RequestRefreshRunsCorrectly) {
110 EXPECT_CALL(*delegate_, RequestRefresh()).Times(1);
111
112 location_provider_->StartProvider(true);
113 location_provider_->RequestRefresh();
114 }
115
116 TEST_F(BlimpLocationProviderTest, RequestRefreshHandlesNullDelegate) {
117 EXPECT_CALL(*delegate_, RequestRefresh()).Times(0);
118
119 location_provider_->StartProvider(true);
120 delegate_.reset();
121 location_provider_->RequestRefresh();
122 }
123
124 TEST_F(BlimpLocationProviderTest, OnPermissionGrantedCallsRefresh) {
125 EXPECT_CALL(*delegate_, RequestRefresh()).Times(1);
126
127 location_provider_->StartProvider(true);
128 location_provider_->OnPermissionGranted();
129 }
130
131 TEST_F(BlimpLocationProviderTest, OnPermissionGrantedHandlesNullDelegate) {
132 EXPECT_CALL(*delegate_, RequestRefresh()).Times(0);
133
134 location_provider_->StartProvider(true);
135 delegate_.reset();
136 location_provider_->OnPermissionGranted();
137 }
138
139 TEST_F(BlimpLocationProviderTest, SetUpdateCallbackPropagatesCallback) {
140 base::Callback<void(const content::Geoposition&)> callback;
141 EXPECT_CALL(*delegate_, SetUpdateCallback(_)).WillOnce(SaveArg<0>(&callback));
142 EXPECT_CALL(*this, OnLocationUpdate(location_provider_.get(), _)).Times(1);
143
144 location_provider_->SetUpdateCallback(mock_callback_);
145 callback.Run(content::Geoposition());
146 }
147
148 TEST_F(BlimpLocationProviderTest, SetUpdateCallbackHandlesNullDelegate) {
149 EXPECT_CALL(*delegate_, SetUpdateCallback(_)).Times(0);
150
151 delegate_.reset();
152 location_provider_->SetUpdateCallback(mock_callback_);
153 }
154
155 } // namespace engine
156 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698