Index: chromeos/login/login_state_unittest.cc |
diff --git a/chromeos/login/login_state_unittest.cc b/chromeos/login/login_state_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..51b3de5b3bd01b88c9938ac6f94e52a154a6b7c5 |
--- /dev/null |
+++ b/chromeos/login/login_state_unittest.cc |
@@ -0,0 +1,82 @@ |
+// 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 "chromeos/login/login_state.h" |
+ |
+#include "base/message_loop.h" |
+#include "chromeos/dbus/dbus_thread_manager.h" |
+#include "chromeos/dbus/session_manager_client.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace chromeos { |
+ |
+class LoginStateTest : public testing::Test, |
+ public LoginState::Observer { |
+ public: |
+ LoginStateTest() |
+ : login_state_(LoginState::LOGGED_IN_UNKNOWN), |
+ session_started_(false) { |
+ } |
+ virtual ~LoginStateTest() { |
+ } |
+ |
+ // testing::Test |
+ virtual void SetUp() OVERRIDE { |
+ // Initialize DBusThreadManager with a stub implementation. |
+ DBusThreadManager::InitializeWithStub(); |
+ LoginState::Initialize(); |
+ LoginState::Get()->AddObserver(this); |
+ } |
+ |
+ virtual void TearDown() OVERRIDE { |
+ LoginState::Get()->RemoveObserver(this); |
+ LoginState::Shutdown(); |
+ DBusThreadManager::Shutdown(); |
+ } |
+ |
+ // LoginState::Observer |
+ virtual void LoginStateChanged(LoginState::State state) OVERRIDE { |
+ login_state_ = state; |
+ session_started_ = LoginState::Get()->IsSessionStarted(); |
+ } |
+ |
+ protected: |
+ MessageLoopForUI message_loop_; |
+ LoginState::State login_state_; |
+ bool session_started_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(LoginStateTest); |
+}; |
+ |
+TEST_F(LoginStateTest, TestLoginState) { |
+ EXPECT_EQ(LoginState::LOGGED_IN_UNKNOWN, login_state_); |
+ EXPECT_EQ(LoginState::LOGGED_IN_OOBE, LoginState::Get()->GetLoginState()); |
+ LoginState::Get()->SetLoginState(LoginState::LOGGED_IN_USER); |
+ EXPECT_EQ(LoginState::LOGGED_IN_USER, LoginState::Get()->GetLoginState()); |
+ EXPECT_TRUE(LoginState::Get()->IsUserLoggedIn()); |
+ message_loop_.RunUntilIdle(); |
+ EXPECT_EQ(LoginState::LOGGED_IN_USER, login_state_); |
+ // Lock the screen. |
+ DBusThreadManager::Get()->GetSessionManagerClient()->RequestLockScreen(); |
+ message_loop_.RunUntilIdle(); |
+ EXPECT_EQ(LoginState::LOGGED_IN_LOCKED, LoginState::Get()->GetLoginState()); |
+ EXPECT_EQ(LoginState::LOGGED_IN_LOCKED, login_state_); |
+ // UnLock the screen. |
+ DBusThreadManager::Get()->GetSessionManagerClient()->RequestUnlockScreen(); |
+ message_loop_.RunUntilIdle(); |
+ EXPECT_EQ(LoginState::LOGGED_IN_USER, LoginState::Get()->GetLoginState()); |
+ EXPECT_EQ(LoginState::LOGGED_IN_USER, login_state_); |
+} |
+ |
+TEST_F(LoginStateTest, TestSessionStarted) { |
+ EXPECT_FALSE(LoginState::Get()->IsSessionStarted()); |
+ EXPECT_FALSE(session_started_); |
+ LoginState::Get()->SetSessionStarted(true); |
+ message_loop_.RunUntilIdle(); |
+ EXPECT_TRUE(LoginState::Get()->IsSessionStarted()); |
+ EXPECT_TRUE(session_started_); |
+} |
+ |
+} // namespace |