Index: blimp/client/core/geolocation/geolocation_feature_unittest.cc |
diff --git a/blimp/client/core/geolocation/geolocation_feature_unittest.cc b/blimp/client/core/geolocation/geolocation_feature_unittest.cc |
deleted file mode 100644 |
index b84ae18ef4f0ad52c11038f84db2d145c88a532a..0000000000000000000000000000000000000000 |
--- a/blimp/client/core/geolocation/geolocation_feature_unittest.cc |
+++ /dev/null |
@@ -1,236 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "blimp/client/core/geolocation/geolocation_feature.h" |
- |
-#include <memory> |
-#include <utility> |
- |
-#include "base/memory/ptr_util.h" |
-#include "blimp/common/create_blimp_message.h" |
-#include "blimp/common/proto/blimp_message.pb.h" |
-#include "blimp/net/test_common.h" |
-#include "device/geolocation/geoposition.h" |
-#include "device/geolocation/location_provider.h" |
-#include "device/geolocation/mock_location_provider.h" |
-#include "net/base/net_errors.h" |
-#include "net/base/test_completion_callback.h" |
-#include "net/test/gtest_util.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using testing::InSequence; |
-using testing::Invoke; |
-using testing::SaveArg; |
-using testing::StrictMock; |
-using testing::_; |
- |
-namespace blimp { |
-namespace client { |
- |
-const double kLatitude = -42.0; |
-const double kLongitude = 17.3; |
-const double kAltitude = 123.4; |
-const double kAccuracy = 73.7; |
- |
-MATCHER(EqualsDefaultGeoposition, "") { |
- return arg.feature_case() == BlimpMessage::kGeolocation && |
- arg.geolocation().type_case() == GeolocationMessage::kCoordinates && |
- arg.geolocation().coordinates().latitude() == kLatitude && |
- arg.geolocation().coordinates().longitude() == kLongitude && |
- arg.geolocation().coordinates().altitude() == kAltitude && |
- arg.geolocation().coordinates().accuracy() == kAccuracy; |
-} |
- |
-MATCHER_P4(EqualGeoposition, lat, lon, alt, acc, "") { |
- return arg.feature_case() == BlimpMessage::kGeolocation && |
- arg.geolocation().type_case() == GeolocationMessage::kCoordinates && |
- arg.geolocation().coordinates().latitude() == lat && |
- arg.geolocation().coordinates().longitude() == lon && |
- arg.geolocation().coordinates().altitude() == alt && |
- arg.geolocation().coordinates().accuracy() == acc; |
-} |
- |
-MATCHER_P(EqualsError, error_code, "") { |
- return arg.feature_case() == BlimpMessage::kGeolocation && |
- arg.geolocation().type_case() == GeolocationMessage::kError && |
- arg.geolocation().error().error_code() == error_code; |
-} |
- |
-class GeolocationFeatureTest : public testing::Test { |
- public: |
- GeolocationFeatureTest() {} |
- |
- void SetUp() override { |
- auto location_provider = |
- base::MakeUnique<StrictMock<device::MockLocationProvider>>(); |
- location_provider_ = location_provider.get(); |
- EXPECT_CALL(*location_provider_, SetUpdateCallback(_)) |
- .WillOnce(SaveArg<0>(&callback_)); |
- feature_ = |
- base::MakeUnique<GeolocationFeature>(std::move(location_provider)); |
- |
- auto out_processor = |
- base::MakeUnique<StrictMock<MockBlimpMessageProcessor>>(); |
- out_processor_ = out_processor.get(); |
- feature_->set_outgoing_message_processor(std::move(out_processor)); |
- |
- position_.latitude = kLatitude; |
- position_.longitude = kLongitude; |
- position_.altitude = kAltitude; |
- position_.accuracy = kAccuracy; |
- } |
- |
- protected: |
- void SendMockSetInterestLevelMessage( |
- GeolocationSetInterestLevelMessage::Level level) { |
- GeolocationMessage* geolocation_message; |
- std::unique_ptr<BlimpMessage> message = |
- CreateBlimpMessage(&geolocation_message); |
- |
- GeolocationSetInterestLevelMessage* interest_message = |
- geolocation_message->mutable_set_interest_level(); |
- interest_message->set_level(level); |
- |
- net::TestCompletionCallback cb; |
- feature_->ProcessMessage(std::move(message), cb.callback()); |
- EXPECT_EQ(net::OK, cb.WaitForResult()); |
- } |
- |
- void ReportProcessMessageSuccess(const BlimpMessage& blimp_message, |
- const net::CompletionCallback& callback) { |
- callback.Run(net::OK); |
- } |
- |
- // These are raw pointers to classes that are owned by the |
- // GeolocationFeature. |
- StrictMock<MockBlimpMessageProcessor>* out_processor_; |
- StrictMock<device::MockLocationProvider>* location_provider_; |
- |
- std::unique_ptr<GeolocationFeature> feature_; |
- device::LocationProvider::LocationProviderUpdateCallback callback_; |
- device::Geoposition position_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(GeolocationFeatureTest); |
-}; |
- |
-TEST_F(GeolocationFeatureTest, UpdateInterestLevelReceived) { |
- InSequence s; |
- |
- EXPECT_CALL(*location_provider_, StartProvider(true)); |
- EXPECT_CALL(*location_provider_, StopProvider()); |
- EXPECT_CALL(*location_provider_, StartProvider(false)); |
- |
- SendMockSetInterestLevelMessage( |
- GeolocationSetInterestLevelMessage::HIGH_ACCURACY); |
- SendMockSetInterestLevelMessage( |
- GeolocationSetInterestLevelMessage::NO_INTEREST); |
- SendMockSetInterestLevelMessage( |
- GeolocationSetInterestLevelMessage::LOW_ACCURACY); |
-} |
- |
-TEST_F(GeolocationFeatureTest, UnexpectedMessageReceived) { |
- GeolocationMessage* geolocation_message; |
- std::unique_ptr<BlimpMessage> message = |
- CreateBlimpMessage(&geolocation_message); |
- |
- GeolocationCoordinatesMessage* coordinates_message = |
- geolocation_message->mutable_coordinates(); |
- coordinates_message->set_latitude(1.0); |
- |
- net::TestCompletionCallback cb; |
- feature_->ProcessMessage(std::move(message), cb.callback()); |
- |
- EXPECT_EQ(net::ERR_UNEXPECTED, cb.WaitForResult()); |
-} |
- |
-TEST_F(GeolocationFeatureTest, RequestRefreshReceived) { |
- EXPECT_CALL(*location_provider_, OnPermissionGranted()); |
- |
- GeolocationMessage* geolocation_message; |
- std::unique_ptr<BlimpMessage> message = |
- CreateBlimpMessage(&geolocation_message); |
- geolocation_message->mutable_request_refresh(); |
- |
- net::TestCompletionCallback cb; |
- feature_->ProcessMessage(std::move(message), cb.callback()); |
- EXPECT_EQ(net::OK, cb.WaitForResult()); |
-} |
- |
-TEST_F(GeolocationFeatureTest, LocationUpdateSendsCorrectMessage) { |
- EXPECT_CALL(*out_processor_, |
- MockableProcessMessage(EqualsDefaultGeoposition(), _)); |
- callback_.Run(location_provider_, position_); |
-} |
- |
-TEST_F(GeolocationFeatureTest, ErrorUpdateSendsCorrectMessage) { |
- ON_CALL(*out_processor_, MockableProcessMessage(_, _)) |
- .WillByDefault(Invoke( |
- this, &GeolocationFeatureTest_ErrorUpdateSendsCorrectMessage_Test:: |
- ReportProcessMessageSuccess)); |
- EXPECT_CALL( |
- *out_processor_, |
- MockableProcessMessage( |
- EqualsError(GeolocationErrorMessage::POSITION_UNAVAILABLE), _)); |
- EXPECT_CALL(*out_processor_, |
- MockableProcessMessage( |
- EqualsError(GeolocationErrorMessage::PERMISSION_DENIED), _)); |
- EXPECT_CALL( |
- *out_processor_, |
- MockableProcessMessage(EqualsError(GeolocationErrorMessage::TIMEOUT), _)); |
- |
- device::Geoposition err_position; |
- err_position.error_code = |
- device::Geoposition::ErrorCode::ERROR_CODE_POSITION_UNAVAILABLE; |
- callback_.Run(location_provider_, err_position); |
- |
- err_position.error_code = |
- device::Geoposition::ErrorCode::ERROR_CODE_PERMISSION_DENIED; |
- callback_.Run(location_provider_, err_position); |
- |
- err_position.error_code = device::Geoposition::ErrorCode::ERROR_CODE_TIMEOUT; |
- callback_.Run(location_provider_, err_position); |
-} |
- |
-TEST_F(GeolocationFeatureTest, NoRepeatSendsWithMessagePending) { |
- EXPECT_CALL(*out_processor_, |
- MockableProcessMessage(EqualsDefaultGeoposition(), _)); |
- callback_.Run(location_provider_, position_); |
- callback_.Run(location_provider_, position_); |
- callback_.Run(location_provider_, position_); |
-} |
- |
-TEST_F(GeolocationFeatureTest, MessageSendsAfterAcknowledgement) { |
- EXPECT_CALL(*out_processor_, |
- MockableProcessMessage(EqualsDefaultGeoposition(), _)) |
- .WillOnce(Invoke( |
- this, &GeolocationFeatureTest_MessageSendsAfterAcknowledgement_Test:: |
- ReportProcessMessageSuccess)); |
- |
- device::Geoposition position; |
- position.latitude = 1.0; |
- position.longitude = 1.0; |
- position.altitude = 1.0; |
- position.accuracy = 1.0; |
- position.timestamp = base::Time::Now(); |
- |
- EXPECT_CALL(*out_processor_, |
- MockableProcessMessage(EqualGeoposition(1.0, 1.0, 1.0, 1.0), _)); |
- callback_.Run(location_provider_, position_); |
- callback_.Run(location_provider_, position); |
-} |
- |
-TEST_F(GeolocationFeatureTest, ProcessMessageHandlesNullCallback) { |
- EXPECT_CALL(*location_provider_, OnPermissionGranted()); |
- |
- GeolocationMessage* geolocation_message; |
- std::unique_ptr<BlimpMessage> message = |
- CreateBlimpMessage(&geolocation_message); |
- geolocation_message->mutable_request_refresh(); |
- |
- feature_->ProcessMessage(std::move(message), net::CompletionCallback()); |
-} |
- |
-} // namespace client |
-} // namespace blimp |