• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 The Chromium Authors
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 "net/quic/network_connection.h"
6 
7 #include "base/memory/raw_ptr.h"
8 #include "base/run_loop.h"
9 #include "net/base/mock_network_change_notifier.h"
10 #include "net/test/test_with_task_environment.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 
13 namespace net::test {
14 
15 constexpr auto CONNECTION_3G = NetworkChangeNotifier::CONNECTION_3G;
16 constexpr auto CONNECTION_2G = NetworkChangeNotifier::CONNECTION_2G;
17 constexpr auto CONNECTION_ETHERNET = NetworkChangeNotifier::CONNECTION_ETHERNET;
18 constexpr auto CONNECTION_WIFI = NetworkChangeNotifier::CONNECTION_WIFI;
19 
20 // TestWithTaskEnvironment needed to instantiate a
21 // net::NetworkChangeNotifier::NetworkChangeNotifier via
22 // ScopedMockNetworkChangeNotifier.
23 class NetworkConnectionTest : public TestWithTaskEnvironment {
24  protected:
NetworkConnectionTest()25   NetworkConnectionTest()
26       : notifier_(scoped_notifier_.mock_network_change_notifier()) {}
27 
28   ScopedMockNetworkChangeNotifier scoped_notifier_;
29   raw_ptr<MockNetworkChangeNotifier> notifier_;
30 };
31 
TEST_F(NetworkConnectionTest,Connection2G)32 TEST_F(NetworkConnectionTest, Connection2G) {
33   notifier_->SetConnectionType(CONNECTION_2G);
34 
35   NetworkConnection network_connection;
36   EXPECT_EQ(CONNECTION_2G, network_connection.connection_type());
37 }
38 
TEST_F(NetworkConnectionTest,Connection3G)39 TEST_F(NetworkConnectionTest, Connection3G) {
40   notifier_->SetConnectionType(CONNECTION_3G);
41 
42   NetworkConnection network_connection;
43   EXPECT_EQ(CONNECTION_3G, network_connection.connection_type());
44 }
45 
TEST_F(NetworkConnectionTest,ConnectionEthnernet)46 TEST_F(NetworkConnectionTest, ConnectionEthnernet) {
47   notifier_->SetConnectionType(CONNECTION_ETHERNET);
48 
49   NetworkConnection network_connection;
50   EXPECT_EQ(CONNECTION_ETHERNET, network_connection.connection_type());
51 }
52 
TEST_F(NetworkConnectionTest,ConnectionWifi)53 TEST_F(NetworkConnectionTest, ConnectionWifi) {
54   notifier_->SetConnectionType(CONNECTION_WIFI);
55 
56   NetworkConnection network_connection;
57   EXPECT_EQ(CONNECTION_WIFI, network_connection.connection_type());
58 }
59 
TEST_F(NetworkConnectionTest,ConnectionChange)60 TEST_F(NetworkConnectionTest, ConnectionChange) {
61   notifier_->SetConnectionType(CONNECTION_2G);
62 
63   NetworkConnection network_connection;
64 
65   notifier_->SetConnectionType(CONNECTION_3G);
66   NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
67   // Spin the message loop so the notification is delivered.
68   base::RunLoop().RunUntilIdle();
69   EXPECT_EQ(CONNECTION_3G, network_connection.connection_type());
70 
71   NetworkChangeNotifier::NotifyObserversOfConnectionTypeChangeForTests(
72       CONNECTION_ETHERNET);
73   // Spin the message loop so the notification is delivered.
74   base::RunLoop().RunUntilIdle();
75   EXPECT_EQ(CONNECTION_ETHERNET, network_connection.connection_type());
76 
77   NetworkChangeNotifier::NotifyObserversOfConnectionTypeChangeForTests(
78       CONNECTION_WIFI);
79   // Spin the message loop so the notification is delivered.
80   base::RunLoop().RunUntilIdle();
81   EXPECT_EQ(CONNECTION_WIFI, network_connection.connection_type());
82 }
83 
84 }  // namespace net::test
85