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

Side by Side Diff: mojo/services/public/cpp/view_manager/tests/view_tree_node_unittest.cc

Issue 274733004: Deletion/ownership (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/services/public/cpp/view_manager/view_tree_node.h" 5 #include "mojo/services/public/cpp/view_manager/view_tree_node.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" 8 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h"
9 #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h" 9 #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 11
12 namespace mojo { 12 namespace mojo {
13 namespace services { 13 namespace services {
14 namespace view_manager { 14 namespace view_manager {
15 15
16 // ViewTreeNode ---------------------------------------------------------------- 16 // ViewTreeNode ----------------------------------------------------------------
17 17
18 typedef testing::Test ViewTreeNodeTest; 18 typedef testing::Test ViewTreeNodeTest;
19 19
20 // Subclass with public ctor/dtor.
21 class TestViewTreeNode : public ViewTreeNode {
22 public:
23 TestViewTreeNode() {}
24 ~TestViewTreeNode() {}
25
26 private:
27 DISALLOW_COPY_AND_ASSIGN(TestViewTreeNode);
28 };
29
20 TEST_F(ViewTreeNodeTest, AddChild) { 30 TEST_F(ViewTreeNodeTest, AddChild) {
21 ViewTreeNode v1; 31 TestViewTreeNode v1;
22 ViewTreeNode* v11 = new ViewTreeNode; 32 TestViewTreeNode v11;
23 v1.AddChild(v11); 33 v1.AddChild(&v11);
24 EXPECT_EQ(1U, v1.children().size()); 34 EXPECT_EQ(1U, v1.children().size());
25 } 35 }
26 36
27 TEST_F(ViewTreeNodeTest, RemoveChild) { 37 TEST_F(ViewTreeNodeTest, RemoveChild) {
28 ViewTreeNode v1; 38 TestViewTreeNode v1;
29 ViewTreeNode* v11 = new ViewTreeNode; 39 TestViewTreeNode v11;
30 v1.AddChild(v11); 40 v1.AddChild(&v11);
31 EXPECT_EQ(1U, v1.children().size()); 41 EXPECT_EQ(1U, v1.children().size());
32 v1.RemoveChild(v11); 42 v1.RemoveChild(&v11);
33 EXPECT_EQ(0U, v1.children().size()); 43 EXPECT_EQ(0U, v1.children().size());
34 } 44 }
35 45
36 TEST_F(ViewTreeNodeTest, Reparent) { 46 TEST_F(ViewTreeNodeTest, Reparent) {
37 ViewTreeNode v1; 47 TestViewTreeNode v1;
38 ViewTreeNode v2; 48 TestViewTreeNode v2;
39 ViewTreeNode* v11 = new ViewTreeNode; 49 TestViewTreeNode v11;
40 v1.AddChild(v11); 50 v1.AddChild(&v11);
41 EXPECT_EQ(1U, v1.children().size()); 51 EXPECT_EQ(1U, v1.children().size());
42 v2.AddChild(v11); 52 v2.AddChild(&v11);
43 EXPECT_EQ(1U, v2.children().size()); 53 EXPECT_EQ(1U, v2.children().size());
44 EXPECT_EQ(0U, v1.children().size()); 54 EXPECT_EQ(0U, v1.children().size());
45 } 55 }
46 56
47 TEST_F(ViewTreeNodeTest, Contains) { 57 TEST_F(ViewTreeNodeTest, Contains) {
48 ViewTreeNode v1; 58 TestViewTreeNode v1;
49 59
50 // Direct descendant. 60 // Direct descendant.
51 ViewTreeNode* v11 = new ViewTreeNode; 61 TestViewTreeNode v11;
52 v1.AddChild(v11); 62 v1.AddChild(&v11);
53 EXPECT_TRUE(v1.Contains(v11)); 63 EXPECT_TRUE(v1.Contains(&v11));
54 64
55 // Indirect descendant. 65 // Indirect descendant.
56 ViewTreeNode* v111 = new ViewTreeNode; 66 TestViewTreeNode v111;
57 v11->AddChild(v111); 67 v11.AddChild(&v111);
58 EXPECT_TRUE(v1.Contains(v111)); 68 EXPECT_TRUE(v1.Contains(&v111));
59 } 69 }
60 70
61 TEST_F(ViewTreeNodeTest, GetChildById) { 71 TEST_F(ViewTreeNodeTest, GetChildById) {
62 ViewTreeNode v1; 72 TestViewTreeNode v1;
63 ViewTreeNodePrivate(&v1).set_id(1); 73 ViewTreeNodePrivate(&v1).set_id(1);
64 ViewTreeNode v11; 74 TestViewTreeNode v11;
65 ViewTreeNodePrivate(&v11).set_id(11); 75 ViewTreeNodePrivate(&v11).set_id(11);
66 v1.AddChild(&v11); 76 v1.AddChild(&v11);
67 ViewTreeNode v111; 77 TestViewTreeNode v111;
68 ViewTreeNodePrivate(&v111).set_id(111); 78 ViewTreeNodePrivate(&v111).set_id(111);
69 v11.AddChild(&v111); 79 v11.AddChild(&v111);
70 80
71 // Find direct & indirect descendents. 81 // Find direct & indirect descendents.
72 EXPECT_EQ(&v11, v1.GetChildById(v11.id())); 82 EXPECT_EQ(&v11, v1.GetChildById(v11.id()));
73 EXPECT_EQ(&v111, v1.GetChildById(v111.id())); 83 EXPECT_EQ(&v111, v1.GetChildById(v111.id()));
74 } 84 }
75 85
76 // ViewTreeNodeObserver -------------------------------------------------------- 86 // ViewTreeNodeObserver --------------------------------------------------------
77 87
(...skipping 30 matching lines...) Expand all
108 } 118 }
109 119
110 ViewTreeNode* observee_; 120 ViewTreeNode* observee_;
111 std::vector<TreeChangeParams> received_params_; 121 std::vector<TreeChangeParams> received_params_;
112 122
113 DISALLOW_COPY_AND_ASSIGN(TreeChangeObserver); 123 DISALLOW_COPY_AND_ASSIGN(TreeChangeObserver);
114 }; 124 };
115 125
116 // Adds/Removes v11 to v1. 126 // Adds/Removes v11 to v1.
117 TEST_F(ViewTreeNodeObserverTest, TreeChange_SimpleAddRemove) { 127 TEST_F(ViewTreeNodeObserverTest, TreeChange_SimpleAddRemove) {
118 ViewTreeNode v1; 128 TestViewTreeNode v1;
119 TreeChangeObserver o1(&v1); 129 TreeChangeObserver o1(&v1);
120 EXPECT_TRUE(o1.received_params().empty()); 130 EXPECT_TRUE(o1.received_params().empty());
121 131
122 ViewTreeNode v11; 132 TestViewTreeNode v11;
123 v11.set_owned_by_parent(false);
124 TreeChangeObserver o11(&v11); 133 TreeChangeObserver o11(&v11);
125 EXPECT_TRUE(o11.received_params().empty()); 134 EXPECT_TRUE(o11.received_params().empty());
126 135
127 // Add. 136 // Add.
128 137
129 v1.AddChild(&v11); 138 v1.AddChild(&v11);
130 139
131 EXPECT_EQ(1U, o1.received_params().size()); 140 EXPECT_EQ(1U, o1.received_params().size());
132 ViewTreeNodeObserver::TreeChangeParams p1; 141 ViewTreeNodeObserver::TreeChangeParams p1;
133 p1.target = &v11; 142 p1.target = &v11;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 } 180 }
172 181
173 // Creates these two trees: 182 // Creates these two trees:
174 // v1 183 // v1
175 // +- v11 184 // +- v11
176 // v111 185 // v111
177 // +- v1111 186 // +- v1111
178 // +- v1112 187 // +- v1112
179 // Then adds/removes v111 from v11. 188 // Then adds/removes v111 from v11.
180 TEST_F(ViewTreeNodeObserverTest, TreeChange_NestedAddRemove) { 189 TEST_F(ViewTreeNodeObserverTest, TreeChange_NestedAddRemove) {
181 ViewTreeNode v1, v11, v111, v1111, v1112; 190 TestViewTreeNode v1, v11, v111, v1111, v1112;
182 191
183 // Root tree. 192 // Root tree.
184 v11.set_owned_by_parent(false);
185 v1.AddChild(&v11); 193 v1.AddChild(&v11);
186 194
187 // Tree to be attached. 195 // Tree to be attached.
188 v111.set_owned_by_parent(false);
189 v1111.set_owned_by_parent(false);
190 v111.AddChild(&v1111); 196 v111.AddChild(&v1111);
191 v1112.set_owned_by_parent(false);
192 v111.AddChild(&v1112); 197 v111.AddChild(&v1112);
193 198
194 TreeChangeObserver o1(&v1), o11(&v11), o111(&v111), o1111(&v1111), 199 TreeChangeObserver o1(&v1), o11(&v11), o111(&v111), o1111(&v1111),
195 o1112(&v1112); 200 o1112(&v1112);
196 ViewTreeNodeObserver::TreeChangeParams p1, p11, p111, p1111, p1112; 201 ViewTreeNodeObserver::TreeChangeParams p1, p11, p111, p1111, p1112;
197 202
198 // Add. 203 // Add.
199 204
200 v11.AddChild(&v111); 205 v11.AddChild(&v111);
201 206
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 EXPECT_EQ(2U, o1112.received_params().size()); 287 EXPECT_EQ(2U, o1112.received_params().size());
283 p1112 = p111; 288 p1112 = p111;
284 p1112.receiver = &v1112; 289 p1112.receiver = &v1112;
285 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 290 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING;
286 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front())); 291 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front()));
287 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 292 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED;
288 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back())); 293 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back()));
289 } 294 }
290 295
291 TEST_F(ViewTreeNodeObserverTest, TreeChange_Reparent) { 296 TEST_F(ViewTreeNodeObserverTest, TreeChange_Reparent) {
292 ViewTreeNode v1, v11, v12, v111; 297 TestViewTreeNode v1, v11, v12, v111;
293 v11.set_owned_by_parent(false);
294 v111.set_owned_by_parent(false);
295 v12.set_owned_by_parent(false);
296 v1.AddChild(&v11); 298 v1.AddChild(&v11);
297 v1.AddChild(&v12); 299 v1.AddChild(&v12);
298 v11.AddChild(&v111); 300 v11.AddChild(&v111);
299 301
300 TreeChangeObserver o1(&v1), o11(&v11), o12(&v12), o111(&v111); 302 TreeChangeObserver o1(&v1), o11(&v11), o12(&v12), o111(&v111);
301 303
302 // Reparent. 304 // Reparent.
303 v12.AddChild(&v111); 305 v12.AddChild(&v111);
304 306
305 // v1 (root) should see both changing and changed notifications. 307 // v1 (root) should see both changing and changed notifications.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 p111.receiver = &v111; 339 p111.receiver = &v111;
338 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 340 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING;
339 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 341 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
340 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 342 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED;
341 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 343 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
342 } 344 }
343 345
344 } // namespace view_manager 346 } // namespace view_manager
345 } // namespace services 347 } // namespace services
346 } // namespace mojo 348 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698