| // Copyright (c) 2012 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 <algorithm> |
| #include <vector> |
| |
| #include "base/logging.h" |
| #include "base/string16.h" |
| #include "base/time.h" |
| #include "chrome/browser/chromeos/oom_priority_manager.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace chromeos { |
| |
| typedef testing::Test OomPriorityManagerTest; |
| |
| namespace { |
| enum TestIndicies { |
| kSelected, |
| kPinned, |
| kApp, |
| kRecent, |
| kOld, |
| kReallyOld, |
| kOldButPinned |
| }; |
| } // namespace |
| |
| // Tests the sorting comparator so that we know it's producing the |
| // desired order. |
| TEST_F(OomPriorityManagerTest, Comparator) { |
| chromeos::OomPriorityManager::TabStatsList test_list; |
| const base::TimeTicks now = base::TimeTicks::Now(); |
| |
| // Add kSelected last to verify we are sorting the array. |
| |
| { |
| OomPriorityManager::TabStats stats; |
| stats.is_pinned = true; |
| stats.renderer_handle = kPinned; |
| test_list.push_back(stats); |
| } |
| |
| { |
| OomPriorityManager::TabStats stats; |
| stats.is_app = true; |
| stats.renderer_handle = kApp; |
| test_list.push_back(stats); |
| } |
| |
| { |
| OomPriorityManager::TabStats stats; |
| stats.last_selected = now - base::TimeDelta::FromSeconds(10); |
| stats.renderer_handle = kRecent; |
| test_list.push_back(stats); |
| } |
| |
| { |
| OomPriorityManager::TabStats stats; |
| stats.last_selected = now - base::TimeDelta::FromMinutes(15); |
| stats.renderer_handle = kOld; |
| test_list.push_back(stats); |
| } |
| |
| { |
| OomPriorityManager::TabStats stats; |
| stats.last_selected = now - base::TimeDelta::FromDays(365); |
| stats.renderer_handle = kReallyOld; |
| test_list.push_back(stats); |
| } |
| |
| { |
| OomPriorityManager::TabStats stats; |
| stats.is_pinned = true; |
| stats.last_selected = now - base::TimeDelta::FromDays(365); |
| stats.renderer_handle = kOldButPinned; |
| test_list.push_back(stats); |
| } |
| |
| // This entry sorts to the front, so by adding it last we verify that |
| // we are actually sorting the array. |
| { |
| OomPriorityManager::TabStats stats; |
| stats.is_selected = true; |
| stats.renderer_handle = kSelected; |
| test_list.push_back(stats); |
| } |
| |
| std::sort(test_list.begin(), |
| test_list.end(), |
| OomPriorityManager::CompareTabStats); |
| |
| EXPECT_EQ(kSelected, test_list[0].renderer_handle); |
| EXPECT_EQ(kPinned, test_list[1].renderer_handle); |
| EXPECT_EQ(kOldButPinned, test_list[2].renderer_handle); |
| EXPECT_EQ(kApp, test_list[3].renderer_handle); |
| EXPECT_EQ(kRecent, test_list[4].renderer_handle); |
| EXPECT_EQ(kOld, test_list[5].renderer_handle); |
| EXPECT_EQ(kReallyOld, test_list[6].renderer_handle); |
| } |
| |
| } // namespace chromeos |