summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornkostylev@google.com <nkostylev@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-24 19:52:05 +0000
committernkostylev@google.com <nkostylev@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-24 19:52:05 +0000
commit7c79d2454c5a26b9c6723008aecb32fa871edd14 (patch)
treefeb9fd525ff718b6024d968874f56933cacda27c
parent484b2908dab59f530a1b9ab2894d44757352cf26 (diff)
downloadchromium_src-7c79d2454c5a26b9c6723008aecb32fa871edd14.zip
chromium_src-7c79d2454c5a26b9c6723008aecb32fa871edd14.tar.gz
chromium_src-7c79d2454c5a26b9c6723008aecb32fa871edd14.tar.bz2
Create trivial test for OOBE network selection screen.
Create base class for Chromium OS tests mocking CrosLibrary. Fix CrosLibrary mocks. TEST=out/Debug/browser_tests --gtest_filter=NetworkScreenTest* Review URL: http://codereview.chromium.org/1279002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42517 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/cros/cros_in_process_browser_test.cc135
-rw-r--r--chrome/browser/chromeos/cros/cros_in_process_browser_test.h57
-rw-r--r--chrome/browser/chromeos/cros/mock_language_library.h4
-rw-r--r--chrome/browser/chromeos/cros/mock_login_library.h1
-rw-r--r--chrome/browser/chromeos/cros/mock_network_library.h1
-rw-r--r--chrome/browser/chromeos/cros/mock_power_library.h12
-rw-r--r--chrome/browser/chromeos/login/network_screen_browsertest.cc86
-rw-r--r--chrome/chrome_tests.gypi4
8 files changed, 294 insertions, 6 deletions
diff --git a/chrome/browser/chromeos/cros/cros_in_process_browser_test.cc b/chrome/browser/chromeos/cros/cros_in_process_browser_test.cc
new file mode 100644
index 0000000..8364232
--- /dev/null
+++ b/chrome/browser/chromeos/cros/cros_in_process_browser_test.cc
@@ -0,0 +1,135 @@
+// Copyright (c) 2010 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/chromeos/cros/cros_in_process_browser_test.h"
+
+#include "base/message_loop.h"
+#include "base/ref_counted.h"
+#include "base/time.h"
+#include "chrome/browser/browser.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/login/wizard_screen.h"
+#include "chrome/test/in_process_browser_test.h"
+#include "chrome/test/ui_test_utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace chromeos {
+using ::testing::AnyNumber;
+using ::testing::InvokeWithoutArgs;
+using ::testing::Return;
+using ::testing::ReturnRef;
+using ::testing::_;
+
+CrosInProcessBrowserTest::CrosInProcessBrowserTest() {
+}
+
+CrosInProcessBrowserTest::~CrosInProcessBrowserTest() {
+}
+
+void CrosInProcessBrowserTest::SetUpInProcessBrowserTestFixture() {
+ chromeos::CrosLibrary::TestApi* test_api =
+ chromeos::CrosLibrary::Get()->GetTestApi();
+
+ loader_ = new MockLibraryLoader();
+ EXPECT_CALL(*loader_, Load(_))
+ .Times(AnyNumber())
+ .WillRepeatedly(Return(true));
+
+ test_api->SetLibraryLoader(loader_);
+
+ // Create minimal mocks for status bar.
+ mock_language_library_ = new MockLanguageLibrary();
+ test_api->SetLanguageLibrary(mock_language_library_);
+ EXPECT_CALL(*mock_language_library_, AddObserver(_))
+ .Times(AnyNumber());
+ EXPECT_CALL(*mock_language_library_, GetActiveLanguages())
+ .Times(AnyNumber())
+ .WillRepeatedly(Return(CreateFallbackInputLanguageList()));
+ EXPECT_CALL(*mock_language_library_, current_ime_properties())
+ .Times(AnyNumber())
+ .WillRepeatedly((ReturnRef(ime_properties_)));
+ EXPECT_CALL(*mock_language_library_, current_language())
+ .Times(AnyNumber())
+ .WillRepeatedly((ReturnRef(language_)));
+ EXPECT_CALL(*mock_language_library_, RemoveObserver(_))
+ .Times(AnyNumber());
+
+ mock_network_library_ = new MockNetworkLibrary();
+ test_api->SetNetworkLibrary(mock_network_library_);
+ EXPECT_CALL(*mock_network_library_, AddObserver(_))
+ .Times(AnyNumber());
+ EXPECT_CALL(*mock_network_library_, wifi_connecting())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_network_library_, wifi_connected())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_network_library_, cellular_connecting())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_network_library_, cellular_connected())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_network_library_, ethernet_connected())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_network_library_, Connected())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_network_library_, Connecting())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ /*EXPECT_CALL(*mock_network_library_, wifi_networks())
+ .Times(AnyNumber())
+ .WillRepeatedly((ReturnRef(wifi_networks_)));
+ EXPECT_CALL(*mock_network_library_, cellular_networks())
+ .Times(AnyNumber())
+ .WillRepeatedly((ReturnRef(cellular_networks_)));*/
+ EXPECT_CALL(*mock_network_library_, RemoveObserver(_))
+ .Times(AnyNumber());
+
+ mock_power_library_ = new MockPowerLibrary();
+ test_api->SetPowerLibrary(mock_power_library_);
+ EXPECT_CALL(*mock_power_library_, AddObserver(_))
+ .Times(AnyNumber());
+ EXPECT_CALL(*mock_power_library_, battery_fully_charged())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_power_library_, battery_is_present())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(true)));
+ EXPECT_CALL(*mock_power_library_, battery_percentage())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(42.0)));
+ EXPECT_CALL(*mock_power_library_, line_power_on())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_power_library_, battery_time_to_empty())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(base::TimeDelta::FromMinutes(42))));
+ EXPECT_CALL(*mock_power_library_, RemoveObserver(_))
+ .Times(AnyNumber());
+
+ mock_synaptics_library_ = new MockSynapticsLibrary();
+ test_api->SetSynapticsLibrary(mock_synaptics_library_);
+ EXPECT_CALL(*mock_synaptics_library_, SetBoolParameter(_, _))
+ .Times(AnyNumber());
+ EXPECT_CALL(*mock_synaptics_library_, SetRangeParameter(_, _))
+ .Times(AnyNumber());
+}
+
+void CrosInProcessBrowserTest::TearDownInProcessBrowserTestFixture() {
+ // Prevent bogus gMock leak check from firing.
+ chromeos::CrosLibrary::TestApi* test_api =
+ chromeos::CrosLibrary::Get()->GetTestApi();
+ test_api->SetLibraryLoader(NULL);
+ test_api->SetLanguageLibrary(NULL);
+ test_api->SetNetworkLibrary(NULL);
+ test_api->SetPowerLibrary(NULL);
+ test_api->SetSynapticsLibrary(NULL);
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/cros/cros_in_process_browser_test.h b/chrome/browser/chromeos/cros/cros_in_process_browser_test.h
new file mode 100644
index 0000000..c367f20
--- /dev/null
+++ b/chrome/browser/chromeos/cros/cros_in_process_browser_test.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2010 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/test/in_process_browser_test.h"
+
+#include "chrome/browser/chromeos/cros/mock_language_library.h"
+#include "chrome/browser/chromeos/cros/mock_library_loader.h"
+#include "chrome/browser/chromeos/cros/mock_network_library.h"
+#include "chrome/browser/chromeos/cros/mock_power_library.h"
+#include "chrome/browser/chromeos/cros/mock_synaptics_library.h"
+#include "third_party/cros/chromeos_language.h"
+
+namespace chromeos {
+
+// Base class for Chromium OS tests wanting to bring up a browser in the
+// unit test process and mock some parts of CrosLibrary. Once you mock part of
+// CrosLibrary it will be considered as successfully loaded and libraries
+// that compose CrosLibrary will be created. The issue here is that you do
+// need to specify minimum set of mocks for you test to succeed.
+// CrosInProcessBrowserTest creates minimum set of mocks that is used
+// by status bar elements (network, input language, power).
+// See comments for InProcessBrowserTest base class too.
+class CrosInProcessBrowserTest : public InProcessBrowserTest {
+ public:
+ CrosInProcessBrowserTest();
+ virtual ~CrosInProcessBrowserTest();
+
+ protected:
+ // These functions are overriden from InProcessBrowserTest.
+ // Called before your individual test fixture method is run, but after most
+ // of the overhead initialization has occured.
+ // This method set ups basic mocks that are used by status bar items and
+ // setups corresponding expectations for method calls.
+ // If your test needs to initialize other mocks override this method
+ // and add call to base version. To change method calls expectations just
+ // provide new macros. Most recent expectation will be used.
+ virtual void SetUpInProcessBrowserTestFixture();
+
+ // Overriden for things you would normally override TearDown for.
+ virtual void TearDownInProcessBrowserTestFixture();
+
+ // Mocks, destroyed by CrosLibrary class.
+ MockLanguageLibrary* mock_language_library_;
+ MockLibraryLoader* loader_;
+ MockNetworkLibrary* mock_network_library_;
+ MockPowerLibrary* mock_power_library_;
+ MockSynapticsLibrary* mock_synaptics_library_;
+
+ ImePropertyList ime_properties_;
+ InputLanguage language_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(CrosInProcessBrowserTest);
+};
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/cros/mock_language_library.h b/chrome/browser/chromeos/cros/mock_language_library.h
index cd0419f..3052d6b 100644
--- a/chrome/browser/chromeos/cros/mock_language_library.h
+++ b/chrome/browser/chromeos/cros/mock_language_library.h
@@ -16,6 +16,10 @@ class MockLanguageLibrary : public LanguageLibrary {
public:
MockLanguageLibrary() {}
virtual ~MockLanguageLibrary() {}
+
+ MOCK_METHOD1(AddObserver, void(Observer*));
+ MOCK_METHOD1(RemoveObserver, void(Observer*));
+
MOCK_METHOD0(GetActiveLanguages, InputLanguageList*(void));
MOCK_METHOD0(GetSupportedLanguages, InputLanguageList*(void));
MOCK_METHOD2(ChangeLanguage, void(LanguageCategory, const std::string&));
diff --git a/chrome/browser/chromeos/cros/mock_login_library.h b/chrome/browser/chromeos/cros/mock_login_library.h
index a815ecf..51096bf 100644
--- a/chrome/browser/chromeos/cros/mock_login_library.h
+++ b/chrome/browser/chromeos/cros/mock_login_library.h
@@ -19,6 +19,7 @@ class MockLoginLibrary : public LoginLibrary {
MOCK_METHOD0(EmitLoginPromptReady, bool(void));
MOCK_METHOD2(StartSession, bool(const std::string&, const std::string&));
MOCK_METHOD1(StartSession, bool(const std::string&));
+ MOCK_METHOD1(StopSession, bool(const std::string&));
};
} // namespace chromeos
diff --git a/chrome/browser/chromeos/cros/mock_network_library.h b/chrome/browser/chromeos/cros/mock_network_library.h
index 2090281..9aa3555 100644
--- a/chrome/browser/chromeos/cros/mock_network_library.h
+++ b/chrome/browser/chromeos/cros/mock_network_library.h
@@ -38,6 +38,7 @@ class MockNetworkLibrary : public NetworkLibrary {
MOCK_CONST_METHOD0(wifi_networks, const WifiNetworkVector&(void));
MOCK_CONST_METHOD0(cellular_networks, const CellularNetworkVector&(void));
+ MOCK_METHOD0(RequestWifiScan, void(void));
MOCK_METHOD2(ConnectToWifiNetwork, void(WifiNetwork,
const string16&));
MOCK_METHOD2(ConnectToWifiNetwork, void(const string16&,
diff --git a/chrome/browser/chromeos/cros/mock_power_library.h b/chrome/browser/chromeos/cros/mock_power_library.h
index fb660f1..4b57538 100644
--- a/chrome/browser/chromeos/cros/mock_power_library.h
+++ b/chrome/browser/chromeos/cros/mock_power_library.h
@@ -17,12 +17,12 @@ class MockPowerLibrary : public PowerLibrary {
MOCK_METHOD1(AddObserver, void(Observer*));
MOCK_METHOD1(RemoveObserver, void(Observer*));
- MOCK_CONST_METHOD1(line_power_on, bool(void));
- MOCK_CONST_METHOD1(battery_fully_charged, bool(void));
- MOCK_CONST_METHOD1(battery_percentage, double(void));
- MOCK_CONST_METHOD1(battery_is_present, bool(void));
- MOCK_CONST_METHOD1(battery_time_to_empty, base::TimeDelta(void));
- MOCK_CONST_METHOD1(battery_time_to_full, base::TimeDelta(void));
+ MOCK_CONST_METHOD0(line_power_on, bool(void));
+ MOCK_CONST_METHOD0(battery_fully_charged, bool(void));
+ MOCK_CONST_METHOD0(battery_percentage, double(void));
+ MOCK_CONST_METHOD0(battery_is_present, bool(void));
+ MOCK_CONST_METHOD0(battery_time_to_empty, base::TimeDelta(void));
+ MOCK_CONST_METHOD0(battery_time_to_full, base::TimeDelta(void));
};
} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/network_screen_browsertest.cc b/chrome/browser/chromeos/login/network_screen_browsertest.cc
new file mode 100644
index 0000000..f0106c78
--- /dev/null
+++ b/chrome/browser/chromeos/login/network_screen_browsertest.cc
@@ -0,0 +1,86 @@
+// Copyright (c) 2010 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 "base/message_loop.h"
+#include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h"
+#include "chrome/browser/chromeos/cros/mock_login_library.h"
+#include "chrome/browser/chromeos/cros/mock_network_library.h"
+#include "chrome/browser/chromeos/cros/network_library.h"
+#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/login/wizard_screen.h"
+#include "chrome/common/chrome_switches.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace chromeos {
+using ::testing::AnyNumber;
+using ::testing::InvokeWithoutArgs;
+using ::testing::Return;
+using ::testing::ReturnRef;
+using ::testing::_;
+
+class NetworkScreenTest : public CrosInProcessBrowserTest {
+ public:
+ NetworkScreenTest() {
+ }
+
+ protected:
+ virtual void SetUpCommandLine(CommandLine* command_line) {
+ command_line->AppendSwitch(switches::kLoginManager);
+ command_line->AppendSwitchWithValue(switches::kLoginScreen, "network");
+ }
+
+ virtual void SetUpInProcessBrowserTestFixture() {
+ CrosInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
+ chromeos::CrosLibrary::TestApi* test_api =
+ chromeos::CrosLibrary::Get()->GetTestApi();
+
+ mock_login_library_ = new MockLoginLibrary();
+ test_api->SetLoginLibrary(mock_login_library_);
+ EXPECT_CALL(*mock_login_library_, EmitLoginPromptReady())
+ .Times(1);
+
+ EXPECT_CALL(*mock_network_library_, ethernet_connecting())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(false)));
+ EXPECT_CALL(*mock_network_library_, wifi_networks())
+ .Times(AnyNumber())
+ .WillRepeatedly((ReturnRef(wifi_networks_)));
+ EXPECT_CALL(*mock_network_library_, cellular_networks())
+ .Times(AnyNumber())
+ .WillRepeatedly((ReturnRef(cellular_networks_)));
+ }
+
+ virtual void TearDownInProcessBrowserTestFixture() {
+ CrosInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
+ chromeos::CrosLibrary::TestApi* test_api =
+ chromeos::CrosLibrary::Get()->GetTestApi();
+ test_api-> SetLoginLibrary(NULL);
+ }
+
+ // Don't need to create separate browser window for OOBE wizard.
+ virtual Browser* CreateBrowser(Profile* profile) {
+ return NULL;
+ }
+
+ MockLoginLibrary* mock_login_library_;
+
+ CellularNetworkVector cellular_networks_;
+ WifiNetworkVector wifi_networks_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(NetworkScreenTest);
+};
+
+IN_PROC_BROWSER_TEST_F(NetworkScreenTest, TestInit) {
+ WizardController* controller = WizardController::default_controller();
+ ASSERT_TRUE(controller != NULL);
+ ASSERT_EQ(controller->GetNetworkScreen(), controller->current_screen());
+ // Close login manager windows.
+ MessageLoop::current()->DeleteSoon(FROM_HERE, controller);
+ // End the message loop to quit the test.
+ MessageLoop::current()->Quit();
+}
+
+} // namespace chromeos
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 22b74d2..b641527 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -1180,6 +1180,7 @@
'../base/base.gyp:test_support_base',
'../net/net.gyp:net_test_support',
'../skia/skia.gyp:skia',
+ '../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
'../third_party/icu/icu.gyp:icui18n',
'../third_party/icu/icu.gyp:icuuc',
@@ -1198,11 +1199,14 @@
'test/test_launcher/test_runner.h',
'test/test_launcher/run_all_unittests.cc',
'test/unit/chrome_test_suite.h',
+ 'browser/chromeos/cros/cros_in_process_browser_test.cc',
+ 'browser/chromeos/cros/cros_in_process_browser_test.h',
# Actual test sources
'browser/autocomplete/autocomplete_browsertest.cc',
'browser/browser_browsertest.cc',
'browser/browser_init_browsertest.cc',
'browser/browsing_data_local_storage_helper_unittest.cc',
+ 'browser/chromeos/login/network_screen_browsertest.cc',
'browser/chromeos/compact_navigation_bar_browsertest.cc',
'browser/chromeos/notifications/notification_browsertest.cc',
'browser/crash_recovery_browsertest.cc',