Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Unified Diff: chromeos/network/network_state_handler_unittest.cc

Issue 2945643002: [CrOS Tether] Sort Tether network lists. (Closed)
Patch Set: Cleanup - now ready for review. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/network/network_state_handler_unittest.cc
diff --git a/chromeos/network/network_state_handler_unittest.cc b/chromeos/network/network_state_handler_unittest.cc
index e6c467c07b8a882bb6828566f816e73655e6668f..ecd130d5e8112e5916154c9da75e7e1e95560312 100644
--- a/chromeos/network/network_state_handler_unittest.cc
+++ b/chromeos/network/network_state_handler_unittest.cc
@@ -6,6 +6,7 @@
#include <stddef.h>
+#include <algorithm>
#include <map>
#include <memory>
#include <set>
@@ -33,6 +34,8 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
+namespace chromeos {
+
namespace {
void ErrorCallbackFunction(const std::string& error_name,
@@ -199,9 +202,33 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver {
DISALLOW_COPY_AND_ASSIGN(TestObserver);
};
-} // namespace
+class TestTetherNetworkListSorter
+ : public NetworkStateHandler::TetherNetworkListSorter {
+ public:
+ TestTetherNetworkListSorter() {}
+ ~TestTetherNetworkListSorter() {}
+
+ // NetworkStateHandler::TetherNetworkListSorter:
+ void SortTetherNetworkList(
+ NetworkStateHandler::ManagedStateList* tether_networks) const override {
+ std::sort(tether_networks->begin(), tether_networks->end(),
+ [](const std::unique_ptr<ManagedState>& first,
+ const std::unique_ptr<ManagedState>& second) {
+ const NetworkState* first_network =
+ static_cast<const NetworkState*>(first.get());
+ const NetworkState* second_network =
+ static_cast<const NetworkState*>(second.get());
+
+ // Sort by reverse-alphabetical order of GUIDs.
+ return first_network->guid() >= second_network->guid();
+ });
+ }
-namespace chromeos {
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestTetherNetworkListSorter);
+};
+
+} // namespace
class NetworkStateHandlerTest : public testing::Test {
public:
@@ -463,6 +490,55 @@ TEST_F(NetworkStateHandlerTest, GetTetherNetworkList) {
EXPECT_EQ(1u, tether_networks.size());
}
+TEST_F(NetworkStateHandlerTest, SortTetherNetworkList) {
+ network_state_handler_->SetTetherTechnologyState(
+ NetworkStateHandler::TECHNOLOGY_ENABLED);
+
+ TestTetherNetworkListSorter sorter;
+ network_state_handler_->SetTetherNetworkListSorter(&sorter);
+
+ network_state_handler_->AddTetherNetworkState(
+ kTetherGuid1, kTetherName1, kTetherCarrier1, kTetherBatteryPercentage1,
+ kTetherSignalStrength1, kTetherHasConnectedToHost1);
+ network_state_handler_->AddTetherNetworkState(
+ kTetherGuid2, kTetherName2, kTetherCarrier2, kTetherBatteryPercentage2,
+ kTetherSignalStrength2, kTetherHasConnectedToHost2);
+
+ // Note: GetVisibleNetworkListByType() sorts before outputting networks.
+ NetworkStateHandler::NetworkStateList tether_networks;
+ network_state_handler_->GetVisibleNetworkListByType(
+ NetworkTypePattern::Tether(), &tether_networks);
+
+ // The list should have been reversed due to reverse-alphabetical sorting.
+ EXPECT_EQ(2u, tether_networks.size());
+ EXPECT_EQ(kTetherGuid2, tether_networks[0]->guid());
+ EXPECT_EQ(kTetherGuid1, tether_networks[1]->guid());
+}
+
+TEST_F(NetworkStateHandlerTest, SortTetherNetworkList_NoSortingDelegate) {
+ network_state_handler_->SetTetherTechnologyState(
+ NetworkStateHandler::TECHNOLOGY_ENABLED);
+
+ // Do not set a TetherNetworkListSorter.
+
+ network_state_handler_->AddTetherNetworkState(
+ kTetherGuid1, kTetherName1, kTetherCarrier1, kTetherBatteryPercentage1,
+ kTetherSignalStrength1, kTetherHasConnectedToHost1);
+ network_state_handler_->AddTetherNetworkState(
+ kTetherGuid2, kTetherName2, kTetherCarrier2, kTetherBatteryPercentage2,
+ kTetherSignalStrength2, kTetherHasConnectedToHost2);
+
+ // Note: GetVisibleNetworkListByType() sorts before outputting networks.
+ NetworkStateHandler::NetworkStateList tether_networks;
+ network_state_handler_->GetVisibleNetworkListByType(
+ NetworkTypePattern::Tether(), &tether_networks);
+
+ // The list should be in the original order.
+ EXPECT_EQ(2u, tether_networks.size());
+ EXPECT_EQ(kTetherGuid1, tether_networks[0]->guid());
+ EXPECT_EQ(kTetherGuid2, tether_networks[1]->guid());
+}
+
TEST_F(NetworkStateHandlerTest, NetworkListChanged) {
size_t stub_network_count = test_observer_->network_count();
// Set up two additional visible networks.
« chromeos/network/network_state_handler.cc ('K') | « chromeos/network/network_state_handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698