Index: ash/display/display_error_dialog_unittest.cc |
diff --git a/ash/display/display_error_dialog_unittest.cc b/ash/display/display_error_dialog_unittest.cc |
index e4d21d503a58ccc295a46e41c7d03d43f0bd1a03..8611fc7211dca0df743d22c64c68c4d019129fed 100644 |
--- a/ash/display/display_error_dialog_unittest.cc |
+++ b/ash/display/display_error_dialog_unittest.cc |
@@ -6,39 +6,80 @@ |
#include "ash/shell.h" |
#include "ash/test/ash_test_base.h" |
+#include "grit/ash_strings.h" |
#include "ui/aura/window.h" |
+#include "ui/base/l10n/l10n_util.h" |
+#include "ui/views/controls/label.h" |
+#include "ui/views/view.h" |
#include "ui/views/widget/widget.h" |
namespace ash { |
namespace internal { |
+namespace { |
-typedef test::AshTestBase DisplayErrorDialogTest; |
+class DisplayErrorDialogTest : public test::AshTestBase { |
+ protected: |
+ virtual void SetUp() OVERRIDE { |
+ test::AshTestBase::SetUp(); |
+ observer_.reset(new DisplayErrorObserver()); |
+ } |
oshima
2013/02/14 00:01:50
It's probably better to keep the order of setup/te
Jun Mukai
2013/02/14 00:54:03
Done.
|
+ |
+ DisplayErrorObserver* observer() { return observer_.get(); } |
+ |
+ string16 GetMessageContents(DisplayErrorDialog* dialog) { |
+ views::Label* label = static_cast<views::Label*>( |
+ static_cast<views::View*>(dialog)->child_at(0)); |
+ return label->text(); |
+ } |
+ |
+ private: |
+ scoped_ptr<DisplayErrorObserver> observer_; |
+}; |
+ |
+} |
// The test cases in this file usually check if the showing dialog doesn't |
// cause any crashes, and the code doesn't cause any memory leaks. |
TEST_F(DisplayErrorDialogTest, Normal) { |
UpdateDisplay("200x200,300x300"); |
- DisplayErrorDialog::ShowDialog(); |
- DisplayErrorDialog* dialog = DisplayErrorDialog::GetInstanceForTest(); |
+ DisplayErrorDialog* dialog = |
+ DisplayErrorDialog::ShowDialog(chromeos::STATE_DUAL_MIRROR); |
EXPECT_TRUE(dialog); |
EXPECT_TRUE(dialog->GetWidget()->IsVisible()); |
+ EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING), |
+ GetMessageContents(dialog)); |
EXPECT_EQ(Shell::GetAllRootWindows()[1], |
dialog->GetWidget()->GetNativeView()->GetRootWindow()); |
} |
TEST_F(DisplayErrorDialogTest, CallTwice) { |
UpdateDisplay("200x200,300x300"); |
- DisplayErrorDialog::ShowDialog(); |
- DisplayErrorDialog* dialog = DisplayErrorDialog::GetInstanceForTest(); |
+ observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR); |
+ DisplayErrorDialog* dialog = observer()->dialog(); |
+ EXPECT_TRUE(dialog); |
+ |
+ observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR); |
+ EXPECT_EQ(dialog, observer()->dialog()); |
+} |
+ |
+TEST_F(DisplayErrorDialogTest, CallWithDifferentState) { |
+ UpdateDisplay("200x200,300x300"); |
+ observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR); |
+ DisplayErrorDialog* dialog = observer()->dialog(); |
EXPECT_TRUE(dialog); |
- DisplayErrorDialog::ShowDialog(); |
- EXPECT_EQ(dialog, DisplayErrorDialog::GetInstanceForTest()); |
+ EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING), |
+ GetMessageContents(dialog)); |
+ |
+ observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_PRIMARY_ONLY); |
+ EXPECT_EQ(dialog, observer()->dialog()); |
+ EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_EXTENDED), |
+ GetMessageContents(dialog)); |
} |
TEST_F(DisplayErrorDialogTest, SingleDisplay) { |
UpdateDisplay("200x200"); |
- DisplayErrorDialog::ShowDialog(); |
- DisplayErrorDialog* dialog = DisplayErrorDialog::GetInstanceForTest(); |
+ DisplayErrorDialog* dialog = |
+ DisplayErrorDialog::ShowDialog(chromeos::STATE_DUAL_MIRROR); |
EXPECT_TRUE(dialog); |
EXPECT_TRUE(dialog->GetWidget()->IsVisible()); |
EXPECT_EQ(Shell::GetInstance()->GetPrimaryRootWindow(), |
@@ -47,15 +88,14 @@ TEST_F(DisplayErrorDialogTest, SingleDisplay) { |
TEST_F(DisplayErrorDialogTest, DisplayDisconnected) { |
UpdateDisplay("200x200,300x300"); |
- DisplayErrorDialog::ShowDialog(); |
- DisplayErrorDialog* dialog = DisplayErrorDialog::GetInstanceForTest(); |
- EXPECT_TRUE(dialog); |
+ observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR); |
+ EXPECT_TRUE(observer()->dialog()); |
UpdateDisplay("200x200"); |
// Disconnection will close the dialog but we have to run all pending tasks |
// to make the effect of the close. |
RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(DisplayErrorDialog::GetInstanceForTest()); |
+ EXPECT_TRUE(observer()->dialog()); |
} |
} // namespace internal |