Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: ui/views/view_unittest.cc

Issue 6286013: V2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/view.cc ('k') | ui/views/views.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 <algorithm>
6
7 #include "gfx/canvas.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/views/view.h"
10 #include "ui/views/widget/widget.h"
11
12 namespace ui {
13
14 class ViewTest : public testing::Test {
15 public:
16 ViewTest() {}
17 virtual ~ViewTest() {}
18
19 private:
20 DISALLOW_COPY_AND_ASSIGN(ViewTest);
21 };
22
23 TEST_F(ViewTest, SizeAndDisposition) {
24 View v;
25 EXPECT_TRUE(v.bounds().IsEmpty());
26 EXPECT_TRUE(v.visible());
27
28 v.SetBoundsRect(gfx::Rect(10, 10, 200, 200));
29 EXPECT_EQ(200, v.width());
30
31 EXPECT_TRUE(v.GetPreferredSize().IsEmpty());
32 }
33
34 TEST_F(ViewTest, TreeOperations) {
35 View v;
36 EXPECT_EQ(NULL, v.GetWidget());
37 EXPECT_EQ(0, v.child_count());
38
39 View child1;
40 v.AddChildView(&child1);
41 EXPECT_EQ(1, v.child_count());
42 EXPECT_EQ(&v, child1.parent());
43
44 View child2;
45 v.AddChildViewAt(&child2, 0);
46 EXPECT_EQ(2, v.child_count());
47 EXPECT_EQ(child1.parent(), child2.parent());
48
49 v.RemoveChildView(&child2);
50 EXPECT_EQ(1, v.child_count());
51 EXPECT_EQ(NULL, child2.parent());
52
53 //v.RemoveAllChildViews(false);
54 //EXPECT_EQ(0, v.child_count());
55 }
56
57 class ObserverView : public View {
58 public:
59 ObserverView()
60 : view_added_(false),
61 view_removed_(false),
62 subject_view_(NULL) {}
63 virtual ~ObserverView() {}
64
65 void ResetTestState() {
66 view_added_ = false;
67 view_removed_ = false;
68 subject_view_ = NULL;
69 }
70
71 // Overridden from View:
72 virtual void OnViewAdded(View* parent, View* child) {
73 subject_view_ = child;
74 view_added_ = true;
75 view_removed_ = false;
76 }
77 virtual void OnViewRemoved(View* parent, View* child) {
78 subject_view_ = child;
79 view_removed_ = true;
80 view_added_ = false;
81 }
82
83 bool view_added() const { return view_added_; }
84 bool view_removed() const { return view_removed_; }
85 View* subject_view() const { return subject_view_; }
86
87 private:
88 bool view_added_;
89 bool view_removed_;
90 View* subject_view_;
91
92 DISALLOW_COPY_AND_ASSIGN(ObserverView);
93 };
94
95 class WidgetObserverView : public View {
96 public:
97 WidgetObserverView() : in_widget_(false) {}
98 virtual ~WidgetObserverView() {}
99
100 // Overridden from View:
101 virtual void OnViewAddedToWidget() {
102 in_widget_ = true;
103 }
104 virtual void OnViewRemovedFromWidget() {
105 in_widget_ = false;
106 }
107
108 bool in_widget() const { return in_widget_; }
109
110 private:
111 bool in_widget_;
112
113 DISALLOW_COPY_AND_ASSIGN(WidgetObserverView);
114 };
115
116 /*
117 TEST_F(ViewTest, HierarchyObserver) {
118 ObserverView ov;
119 Widget widget(&ov);
120 widget.InitWithNativeViewParent(NULL, gfx::Rect(20, 20, 400, 400));
121
122 // |ov|'s addition to the RootView's hierarchy should have caused these values
123 // to be set.
124 EXPECT_TRUE(ov.view_added());
125 EXPECT_FALSE(ov.view_removed());
126 EXPECT_EQ(&ov, ov.subject_view());
127
128 ov.ResetTestState();
129
130 // Direct descendants.
131 View v2;
132 ov.AddChildView(&v2);
133 EXPECT_TRUE(ov.view_added());
134 EXPECT_FALSE(ov.view_removed());
135 EXPECT_EQ(&v2, ov.subject_view());
136
137 ov.ResetTestState();
138
139 // Nested Views and Widget addition.
140 WidgetObserverView v3;
141 EXPECT_FALSE(v3.in_widget());
142 v2.AddChildView(&v3);
143 EXPECT_TRUE(v3.in_widget());
144 EXPECT_EQ(&widget, v3.GetWidget());
145 EXPECT_TRUE(ov.view_added());
146 EXPECT_FALSE(ov.view_removed());
147 EXPECT_EQ(&v3, ov.subject_view());
148
149 ov.ResetTestState();
150
151 // Removal and Widget removal.
152 ov.RemoveChildView(&v2);
153 EXPECT_FALSE(ov.view_added());
154 EXPECT_TRUE(ov.view_removed());
155 EXPECT_EQ(&v2, ov.subject_view());
156
157 EXPECT_FALSE(v3.in_widget());
158 EXPECT_EQ(NULL, v3.GetWidget());
159 }
160 */
161
162 TEST_F(ViewTest, Ids) {
163 const int kV1Id = 1;
164 const int kV2Id = 2;
165 const int kV3Id = 3;
166 const int kV4Id = 4;
167 const int kV5Id = 5;
168 const int kGroupId = 1;
169 View v1;
170 v1.set_id(kV1Id);
171 View v2;
172 v2.set_id(kV2Id);
173 View v3;
174 v3.set_id(kV3Id);
175 v3.set_group(kGroupId);
176 View v4;
177 v4.set_id(kV4Id);
178 v4.set_group(kGroupId);
179 v1.AddChildView(&v2);
180 v2.AddChildView(&v3);
181 v2.AddChildView(&v4);
182
183 EXPECT_EQ(&v4, v1.GetViewById(kV4Id));
184 EXPECT_EQ(&v1, v1.GetViewById(kV1Id));
185 EXPECT_EQ(NULL, v1.GetViewById(kV5Id)); // No V5 exists.
186
187 View::ViewVector vec;
188 v1.GetViewsWithGroup(kGroupId, &vec);
189 EXPECT_EQ(2, vec.size());
190 View::ViewVector::const_iterator it = find(vec.begin(), vec.end(), &v3);
191 EXPECT_NE(vec.end(), it);
192 it = find(vec.begin(), vec.end(), &v4);
193 EXPECT_NE(vec.end(), it);
194 }
195
196 TEST_F(ViewTest, EventHandlers) {
197
198 }
199
200 TEST_F(ViewTest, Painting) {
201
202 }
203
204 } // namespace ui
OLDNEW
« no previous file with comments | « ui/views/view.cc ('k') | ui/views/views.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698