blob: a63438dbcc36b35cea0dd880f79a0d8489dec3e2 [file] [log] [blame]
// 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