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

Side by Side Diff: samples/tests/samples/src/lib/view/ViewTest.dart

Issue 10253022: test rename overhaul: step 13 - samples (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 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
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 #library('view_tests');
6
7 #import('dart:html');
8 #import('../../../../../ui_lib/base/base.dart');
9 #import('../../../../../ui_lib/view/view.dart');
10 #import('../../../../../../lib/unittest/unittest.dart');
11 #import('../../../../../../lib/unittest/html_config.dart');
12
13 void main() {
14 useHtmlConfiguration();
15 test('does not render immediately', () {
16 final view = new TestView();
17 expect(view.isRendered).isFalse();
18
19 view.addToDocument(document.body);
20 expect(view.isRendered).isTrue();
21 });
22
23 group('addToDocument()', () {
24 test('causes view to render', () {
25 final view = new TestView();
26 view.addToDocument(document.body);
27 expect(view.isRendered).isTrue();
28 });
29
30 test('calls afterRender()', () {
31 var result = '';
32 final view = new TestView();
33 view.renderFn = () {
34 result += 'render';
35 return new Element.html('<div class="test"></div>');
36 };
37
38 view.afterRenderFn = (node) { result += 'after'; };
39
40
41 view.addToDocument(document.body);
42 expect(result).equals('renderafter');
43 });
44
45 test('calls enterDocument()', () {
46 final view = new TestView();
47 bool entered = false;
48 view.enterDocumentFn = () { entered = true; };
49
50 view.addToDocument(document.body);
51 expect(entered).isTrue();
52 });
53 });
54
55 group('afterRender()', () {
56 test('passes rendered node', () {
57 final rendered = new Element.html('<div class="node"></div>');
58 final view = new TestView();
59 view.renderFn = () => rendered;
60 view.afterRenderFn = (node) { expect(node).equals(rendered); };
61
62 view.addToDocument(document.body);
63 });
64 });
65
66 group('childViewAdded()', () {
67 test('calls enterDocument() if parent is in document', () {
68 final parent = new TestView();
69 parent.addToDocument(document.body);
70
71 bool entered = false;
72 final child = new TestView();
73 child.enterDocumentFn = () { entered = true; };
74
75 // Add the child.
76 parent.childViews = [child];
77 parent.childViewAdded(child);
78
79 expect(entered).isTrue();
80 });
81
82 test('does not call enterDocument() if parent is not in document', () {
83 final parent = new TestView();
84
85 bool entered = false;
86 final child = new TestView();
87 child.enterDocumentFn = () { entered = true; };
88
89 // Add the child.
90 parent.childViews = [child];
91 parent.childViewAdded(child);
92
93 expect(entered).isFalse();
94 });
95
96 test('calls enterDocument() each time added', () {
97 final parent = new TestView();
98 parent.addToDocument(document.body);
99
100 var entered = 0;
101 final child = new TestView();
102 child.enterDocumentFn = () { entered++; };
103
104 // Add the child.
105 parent.childViews = [child];
106 parent.childViewAdded(child);
107 parent.childViewRemoved(child);
108 parent.childViewAdded(child);
109 parent.childViewRemoved(child);
110 parent.childViewAdded(child);
111 parent.childViewRemoved(child);
112
113 expect(entered).equals(3);
114 });
115 });
116
117 group('childViewRemoved()', () {
118 test('calls exitDocument() if parent is in document', () {
119 final parent = new TestView();
120 parent.addToDocument(document.body);
121
122 bool exited = false;
123 final child = new TestView();
124 child.exitDocumentFn = () { exited = true; };
125
126 // Remove the child.
127 parent.childViews = [];
128 parent.childViewRemoved(child);
129
130 expect(exited).isTrue();
131 });
132
133 test('does not call exitDocument() if parent is not in document', () {
134 final parent = new TestView();
135
136 bool exited = false;
137 final child = new TestView();
138 child.exitDocumentFn = () { exited = true; };
139
140 // Remove the child.
141 parent.childViews = [];
142 parent.childViewRemoved(child);
143
144 expect(exited).isFalse();
145 });
146
147 test('calls exitDocument() each time removed', () {
148 final parent = new TestView();
149 parent.addToDocument(document.body);
150
151 var exited = 0;
152 final child = new TestView();
153 child.exitDocumentFn = () { exited++; };
154
155 // Add the child.
156 parent.childViews = [child];
157 parent.childViewAdded(child);
158 parent.childViewRemoved(child);
159 parent.childViewAdded(child);
160 parent.childViewRemoved(child);
161 parent.childViewAdded(child);
162 parent.childViewRemoved(child);
163
164 expect(exited).equals(3);
165 });
166 });
167
168 group('enterDocument()', () {
169 test('children are called before parents', () {
170 var result = '';
171
172 final parent = new TestView();
173 parent.enterDocumentFn = () { result += 'parent'; };
174
175 final child = new TestView();
176 child.enterDocumentFn = () { result += 'child'; };
177
178 parent.childViews = [child];
179
180 parent.addToDocument(document.body);
181 expect(result).equals('childparent');
182 });
183 });
184 }
185
186 class TestView extends View {
187 Function renderFn;
188 Function afterRenderFn;
189 Function enterDocumentFn;
190 Function exitDocumentFn;
191 List<View> childViews;
192
193 TestView() : super(), childViews = [] {
194 // Default behavior.
195 renderFn = () => new Element.html('<div class="test"></div>');
196 afterRenderFn = (node) {};
197 enterDocumentFn = () {};
198 exitDocumentFn = () {};
199 }
200
201 Element render() => renderFn();
202 void afterRender(Element node) { afterRenderFn(node); }
203 void enterDocument() { enterDocumentFn(); }
204 void exitDocument() { exitDocumentFn(); }
205 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698