| // Copyright 2015 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 "net/quic/network_connection.h" |
| |
| #include "base/run_loop.h" |
| #include "base/test/scoped_task_environment.h" |
| #include "net/base/mock_network_change_notifier.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace net { |
| namespace test { |
| |
| constexpr auto CONNECTION_3G = NetworkChangeNotifier::CONNECTION_3G; |
| constexpr auto CONNECTION_2G = NetworkChangeNotifier::CONNECTION_2G; |
| constexpr auto CONNECTION_ETHERNET = NetworkChangeNotifier::CONNECTION_ETHERNET; |
| constexpr auto CONNECTION_WIFI = NetworkChangeNotifier::CONNECTION_WIFI; |
| |
| class NetworkConnectionTest : public testing::Test { |
| protected: |
| NetworkConnectionTest() |
| : notifier_(scoped_notifier_.mock_network_change_notifier()) {} |
| |
| ScopedMockNetworkChangeNotifier scoped_notifier_; |
| MockNetworkChangeNotifier* notifier_; |
| }; |
| |
| TEST_F(NetworkConnectionTest, Connection2G) { |
| notifier_->SetConnectionType(CONNECTION_2G); |
| |
| NetworkConnection network_connection; |
| EXPECT_EQ(CONNECTION_2G, network_connection.connection_type()); |
| const char* description = network_connection.connection_description(); |
| EXPECT_EQ(NetworkChangeNotifier::ConnectionTypeToString(CONNECTION_2G), |
| description); |
| } |
| |
| TEST_F(NetworkConnectionTest, Connection3G) { |
| notifier_->SetConnectionType(CONNECTION_3G); |
| |
| NetworkConnection network_connection; |
| EXPECT_EQ(CONNECTION_3G, network_connection.connection_type()); |
| const char* description = network_connection.connection_description(); |
| EXPECT_EQ(NetworkChangeNotifier::ConnectionTypeToString(CONNECTION_3G), |
| description); |
| } |
| |
| TEST_F(NetworkConnectionTest, ConnectionEthnernet) { |
| notifier_->SetConnectionType(CONNECTION_ETHERNET); |
| |
| NetworkConnection network_connection; |
| EXPECT_EQ(CONNECTION_ETHERNET, network_connection.connection_type()); |
| const char* description = network_connection.connection_description(); |
| EXPECT_EQ(NetworkChangeNotifier::ConnectionTypeToString(CONNECTION_ETHERNET), |
| description); |
| } |
| |
| TEST_F(NetworkConnectionTest, ConnectionWifi) { |
| notifier_->SetConnectionType(CONNECTION_WIFI); |
| |
| NetworkConnection network_connection; |
| EXPECT_EQ(CONNECTION_WIFI, network_connection.connection_type()); |
| const char* description = network_connection.connection_description(); |
| // On some platforms, the description for wifi will be more detailed |
| // than what is returned by NetworkChangeNotifier::ConnectionTypeToString. |
| EXPECT_NE(nullptr, description); |
| } |
| |
| TEST_F(NetworkConnectionTest, ConnectionChange) { |
| base::test::ScopedTaskEnvironment scoped_task_environment; |
| |
| notifier_->SetConnectionType(CONNECTION_2G); |
| |
| NetworkConnection network_connection; |
| const char* description_2g = network_connection.connection_description(); |
| |
| notifier_->SetConnectionType(CONNECTION_3G); |
| NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); |
| // Spin the message loop so the notification is delivered. |
| base::RunLoop().RunUntilIdle(); |
| EXPECT_EQ(CONNECTION_3G, network_connection.connection_type()); |
| const char* description_3g = network_connection.connection_description(); |
| |
| NetworkChangeNotifier::NotifyObserversOfConnectionTypeChangeForTests( |
| CONNECTION_ETHERNET); |
| // Spin the message loop so the notification is delivered. |
| base::RunLoop().RunUntilIdle(); |
| EXPECT_EQ(CONNECTION_ETHERNET, network_connection.connection_type()); |
| const char* description_ethernet = |
| network_connection.connection_description(); |
| |
| NetworkChangeNotifier::NotifyObserversOfConnectionTypeChangeForTests( |
| CONNECTION_WIFI); |
| EXPECT_NE(nullptr, network_connection.connection_description()); |
| EXPECT_EQ(NetworkChangeNotifier::ConnectionTypeToString(CONNECTION_2G), |
| description_2g); |
| EXPECT_EQ(NetworkChangeNotifier::ConnectionTypeToString(CONNECTION_3G), |
| description_3g); |
| EXPECT_EQ(NetworkChangeNotifier::ConnectionTypeToString(CONNECTION_ETHERNET), |
| description_ethernet); |
| } |
| |
| } // namespace test |
| } // namespace net |