Chromium Code Reviews| 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 |