display_error_observer_chromeos_unittest.cc revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ash/display/display_error_observer_chromeos.h"
6
7#include "ash/shell.h"
8#include "ash/test/ash_test_base.h"
9#include "grit/ash_strings.h"
10#include "ui/aura/window.h"
11#include "ui/base/l10n/l10n_util.h"
12#include "ui/views/controls/label.h"
13#include "ui/views/view.h"
14#include "ui/views/widget/widget.h"
15
16namespace ash {
17
18class DisplayErrorObserverTest : public test::AshTestBase {
19 protected:
20  DisplayErrorObserverTest() {
21  }
22
23  virtual ~DisplayErrorObserverTest() {
24  }
25
26  virtual void SetUp() OVERRIDE {
27    test::AshTestBase::SetUp();
28    observer_.reset(new DisplayErrorObserver());
29  }
30
31 protected:
32  DisplayErrorObserver* observer() { return observer_.get(); }
33
34  base::string16 GetMessageContents() {
35    return observer_->GetTitleOfDisplayErrorNotificationForTest();
36  }
37
38 private:
39  scoped_ptr<DisplayErrorObserver> observer_;
40
41  DISALLOW_COPY_AND_ASSIGN(DisplayErrorObserverTest);
42};
43
44TEST_F(DisplayErrorObserverTest, Normal) {
45  if (!SupportsMultipleDisplays())
46    return;
47
48  UpdateDisplay("200x200,300x300");
49  observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR);
50  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING),
51            GetMessageContents());
52}
53
54TEST_F(DisplayErrorObserverTest, CallTwice) {
55  if (!SupportsMultipleDisplays())
56    return;
57
58  UpdateDisplay("200x200,300x300");
59  observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR);
60  base::string16 message = GetMessageContents();
61  EXPECT_FALSE(message.empty());
62
63  observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR);
64  base::string16 message2 = GetMessageContents();
65  EXPECT_FALSE(message2.empty());
66  EXPECT_EQ(message, message2);
67}
68
69TEST_F(DisplayErrorObserverTest, CallWithDifferentState) {
70  if (!SupportsMultipleDisplays())
71    return;
72
73  UpdateDisplay("200x200,300x300");
74  observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR);
75  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING),
76            GetMessageContents());
77
78  observer()->OnDisplayModeChangeFailed(
79      ui::MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED);
80  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_NON_MIRRORING),
81            GetMessageContents());
82}
83
84}  // namespace ash
85