display_error_observer_chromeos_unittest.cc revision 3551c9c881056c480085172ff9840cab31610854
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 {
17namespace internal {
18
19class DisplayErrorObserverTest : public test::AshTestBase {
20 protected:
21  DisplayErrorObserverTest() {
22  }
23
24  virtual ~DisplayErrorObserverTest() {
25  }
26
27  virtual void SetUp() OVERRIDE {
28    test::AshTestBase::SetUp();
29    observer_.reset(new DisplayErrorObserver());
30  }
31
32 protected:
33  DisplayErrorObserver* observer() { return observer_.get(); }
34
35  base::string16 GetMessageContents() {
36    return observer_->GetTitleOfDisplayErrorNotificationForTest();
37  }
38
39 private:
40  scoped_ptr<DisplayErrorObserver> observer_;
41
42  DISALLOW_COPY_AND_ASSIGN(DisplayErrorObserverTest);
43};
44
45TEST_F(DisplayErrorObserverTest, Normal) {
46  if (!SupportsMultipleDisplays())
47    return;
48
49  UpdateDisplay("200x200,300x300");
50  observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR);
51  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING),
52            GetMessageContents());
53}
54
55TEST_F(DisplayErrorObserverTest, CallTwice) {
56  if (!SupportsMultipleDisplays())
57    return;
58
59  UpdateDisplay("200x200,300x300");
60  observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR);
61  base::string16 message = GetMessageContents();
62  EXPECT_FALSE(message.empty());
63
64  observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR);
65  base::string16 message2 = GetMessageContents();
66  EXPECT_FALSE(message2.empty());
67  EXPECT_EQ(message, message2);
68}
69
70TEST_F(DisplayErrorObserverTest, CallWithDifferentState) {
71  if (!SupportsMultipleDisplays())
72    return;
73
74  UpdateDisplay("200x200,300x300");
75  observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_MIRROR);
76  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING),
77            GetMessageContents());
78
79  observer()->OnDisplayModeChangeFailed(chromeos::STATE_DUAL_EXTENDED);
80  EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_NON_MIRRORING),
81            GetMessageContents());
82}
83
84}  // namespace internal
85}  // namespace ash
86