diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-27 06:58:27 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-27 06:58:27 +0000 |
commit | 1222ccea51b22334002559b2f728d6b41a191a8d (patch) | |
tree | dbe92756627fc9a076fe48355793d5d36119c952 /chrome/browser | |
parent | f4261f0127d445bd60176228bcddbda8a52dcbd6 (diff) | |
download | chromium_src-1222ccea51b22334002559b2f728d6b41a191a8d.zip chromium_src-1222ccea51b22334002559b2f728d6b41a191a8d.tar.gz chromium_src-1222ccea51b22334002559b2f728d6b41a191a8d.tar.bz2 |
Add basic unit tests for TaskManager.
For now the tests are Windows-only, because the TaskManager isn't ported.
But they should make porting effort a bit safer.
TEST=Make sure that tests from unit_tests matching TaskManagerTest.* pass.
http://crbug.com/10844
Review URL: http://codereview.chromium.org/92071
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14590 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/task_manager.h | 4 | ||||
-rw-r--r-- | chrome/browser/task_manager_unittest.cc | 80 |
2 files changed, 84 insertions, 0 deletions
diff --git a/chrome/browser/task_manager.h b/chrome/browser/task_manager.h index 717dcf2..866246c 100644 --- a/chrome/browser/task_manager.h +++ b/chrome/browser/task_manager.h @@ -18,6 +18,7 @@ #include "chrome/views/controls/table/group_table_view.h" #include "chrome/views/window/dialog_delegate.h" #include "net/url_request/url_request_job_tracker.h" +#include "testing/gtest/include/gtest/gtest_prod.h" class MessageLoop; class ModelEntry; @@ -136,6 +137,9 @@ class TaskManager : public views::DialogDelegate { virtual views::View* GetContentsView(); private: + FRIEND_TEST(TaskManagerTest, Basic); + FRIEND_TEST(TaskManagerTest, Resources); + // Obtain an instance via GetInstance(). TaskManager(); friend DefaultSingletonTraits<TaskManager>; diff --git a/chrome/browser/task_manager_unittest.cc b/chrome/browser/task_manager_unittest.cc new file mode 100644 index 0000000..e72e98c --- /dev/null +++ b/chrome/browser/task_manager_unittest.cc @@ -0,0 +1,80 @@ +// Copyright (c) 2009 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 "chrome/browser/task_manager.h" + +#include <string> + +#include "chrome/views/controls/table/table_view.h" +#include "grit/chromium_strings.h" +#include "grit/generated_resources.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +class TestResource : public TaskManager::Resource { + public: + virtual std::wstring GetTitle() const { return L"test title"; } + virtual SkBitmap GetIcon() const { return SkBitmap(); } + virtual HANDLE GetProcess() const { return NULL; } + virtual bool SupportNetworkUsage() const { return false; } + virtual void SetSupportNetworkUsage() { NOTREACHED(); } +}; + +} // namespace + +class TaskManagerTest : public testing::Test, + public views::TableModelObserver { + public: + // TableModelObserver + virtual void OnModelChanged() {} + virtual void OnItemsChanged(int start, int length) {} + virtual void OnItemsAdded(int start, int length) {} + virtual void OnItemsRemoved(int start, int length) {} +}; + +TEST_F(TaskManagerTest, Basic) { + TaskManager task_manager; + TaskManagerTableModel* model = task_manager.table_model_; + EXPECT_FALSE(task_manager.BrowserProcessIsSelected()); + EXPECT_EQ(0, model->RowCount()); +} + +TEST_F(TaskManagerTest, Resources) { + TaskManager task_manager; + TaskManagerTableModel* model = task_manager.table_model_; + model->SetObserver(this); + + TestResource resource1, resource2; + + task_manager.AddResource(&resource1); + ASSERT_EQ(1, model->RowCount()); + EXPECT_STREQ(L"test title", + model->GetText(0, IDS_TASK_MANAGER_PAGE_COLUMN).c_str()); + EXPECT_STREQ(l10n_util::GetString(IDS_TASK_MANAGER_NA_CELL_TEXT).c_str(), + model->GetText(0, IDS_TASK_MANAGER_NET_COLUMN).c_str()); + EXPECT_STREQ(L"0", + model->GetText(0, IDS_TASK_MANAGER_CPU_COLUMN).c_str()); + + task_manager.AddResource(&resource2); // Will be in the same group. + ASSERT_EQ(2, model->RowCount()); + EXPECT_STREQ(L"test title", + model->GetText(1, IDS_TASK_MANAGER_PAGE_COLUMN).c_str()); + EXPECT_STREQ(l10n_util::GetString(IDS_TASK_MANAGER_NA_CELL_TEXT).c_str(), + model->GetText(1, IDS_TASK_MANAGER_NET_COLUMN).c_str()); + EXPECT_STREQ(L"", model->GetText(1, IDS_TASK_MANAGER_CPU_COLUMN).c_str()); + + task_manager.RemoveResource(&resource1); + // Now resource2 will be first in group. + ASSERT_EQ(1, model->RowCount()); + EXPECT_STREQ(L"test title", + model->GetText(0, IDS_TASK_MANAGER_PAGE_COLUMN).c_str()); + EXPECT_STREQ(l10n_util::GetString(IDS_TASK_MANAGER_NA_CELL_TEXT).c_str(), + model->GetText(0, IDS_TASK_MANAGER_NET_COLUMN).c_str()); + EXPECT_STREQ(L"0", + model->GetText(0, IDS_TASK_MANAGER_CPU_COLUMN).c_str()); + + task_manager.RemoveResource(&resource2); + EXPECT_EQ(0, model->RowCount()); +} |