// 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 "net/base/network_change_notifier.h" #include "testing/gtest/include/gtest/gtest.h" namespace net { namespace test { class NetworkConnectionPeer { public: static NetworkChangeNotifier::ConnectionType connection_type( const NetworkConnection& network_connection) { return network_connection.connection_type_; } static void set_connection_type(NetworkConnection& network_connection, NetworkChangeNotifier::ConnectionType type) { network_connection.connection_type_ = type; } static const char* connection_description( const NetworkConnection& network_connection) { return network_connection.connection_description_; } static void set_connection_description(NetworkConnection& network_connection, const char* description) { network_connection.connection_description_ = description; } }; // Test NetworkConnection(). class NetworkConnectionTest : public testing::Test { protected: void CheckNetworkConnectionDescription() { NetworkChangeNotifier::ConnectionType type = NetworkChangeNotifier::GetConnectionType(); const char* description = network_connection_.GetDescription(); // Verify GetDescription() updated the cached data. EXPECT_EQ(NetworkConnectionPeer::connection_type(network_connection_), type); EXPECT_EQ( NetworkConnectionPeer::connection_description(network_connection_), description); if (type != NetworkChangeNotifier::CONNECTION_WIFI) EXPECT_EQ(description, NetworkChangeNotifier::ConnectionTypeToString(type)); else EXPECT_NE(nullptr, network_connection_.GetDescription()); } NetworkConnection network_connection_; }; TEST_F(NetworkConnectionTest, GetDescription) { const char* description = network_connection_.GetDescription(); // Set connection description to nullptr. NetworkConnectionPeer::set_connection_description(network_connection_, nullptr); CheckNetworkConnectionDescription(); // Set connection type to a junk value. NetworkConnectionPeer::set_connection_type( network_connection_, NetworkChangeNotifier::CONNECTION_LAST); CheckNetworkConnectionDescription(); EXPECT_EQ(description, network_connection_.GetDescription()); } TEST_F(NetworkConnectionTest, Clear) { CheckNetworkConnectionDescription(); network_connection_.Clear(); CheckNetworkConnectionDescription(); } } // namespace test } // namespace net