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

Side by Side Diff: pkg/mdv/test/custom_element_bindings_test.dart

Issue 26734004: use symbol literals instead of const ctor in packages (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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 | « no previous file | pkg/mdv/test/element_bindings_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library custom_element_bindings_test; 5 library custom_element_bindings_test;
6 6
7 import 'dart:html'; 7 import 'dart:html';
8 import 'package:mdv/mdv.dart' as mdv; 8 import 'package:mdv/mdv.dart' as mdv;
9 import 'package:unittest/html_config.dart'; 9 import 'package:unittest/html_config.dart';
10 import 'package:unittest/unittest.dart'; 10 import 'package:unittest/unittest.dart';
11 import 'mdv_test_utils.dart'; 11 import 'mdv_test_utils.dart';
12 12
13 main() { 13 main() {
14 mdv.initialize(); 14 mdv.initialize();
15 useHtmlConfiguration(); 15 useHtmlConfiguration();
16 group('Custom Element Bindings', customElementBindingsTest); 16 group('Custom Element Bindings', customElementBindingsTest);
17 } 17 }
18 18
19 sym(x) => new Symbol(x);
20
21 customElementBindingsTest() { 19 customElementBindingsTest() {
22 var testDiv; 20 var testDiv;
23 21
24 setUp(() { 22 setUp(() {
25 document.body.append(testDiv = new DivElement()); 23 document.body.append(testDiv = new DivElement());
26 }); 24 });
27 25
28 tearDown(() { 26 tearDown(() {
29 testDiv.remove(); 27 testDiv.remove();
30 testDiv = null; 28 testDiv = null;
(...skipping 15 matching lines...) Expand all
46 observeTest('override bind/unbind/unbindAll', () { 44 observeTest('override bind/unbind/unbindAll', () {
47 var element = new MyCustomElement(); 45 var element = new MyCustomElement();
48 var model = toSymbolMap({'a': new Point(123, 444), 'b': new Monster(100)}); 46 var model = toSymbolMap({'a': new Point(123, 444), 'b': new Monster(100)});
49 47
50 element.bind('my-point', model, 'a'); 48 element.bind('my-point', model, 'a');
51 element.bind('scary-monster', model, 'b'); 49 element.bind('scary-monster', model, 'b');
52 50
53 expect(element.attributes, isNot(contains('my-point'))); 51 expect(element.attributes, isNot(contains('my-point')));
54 expect(element.attributes, isNot(contains('scary-monster'))); 52 expect(element.attributes, isNot(contains('scary-monster')));
55 53
56 expect(element.myPoint, model[sym('a')]); 54 expect(element.myPoint, model[#a]);
57 expect(element.scaryMonster, model[sym('b')]); 55 expect(element.scaryMonster, model[#b]);
58 56
59 model[sym('a')] = null; 57 model[#a] = null;
60 performMicrotaskCheckpoint(); 58 performMicrotaskCheckpoint();
61 expect(element.myPoint, null); 59 expect(element.myPoint, null);
62 element.unbind('my-point'); 60 element.unbind('my-point');
63 61
64 model[sym('a')] = new Point(1, 2); 62 model[#a] = new Point(1, 2);
65 model[sym('b')] = new Monster(200); 63 model[#b] = new Monster(200);
66 performMicrotaskCheckpoint(); 64 performMicrotaskCheckpoint();
67 expect(element.scaryMonster, model[sym('b')]); 65 expect(element.scaryMonster, model[#b]);
68 expect(element.myPoint, null, reason: 'a was unbound'); 66 expect(element.myPoint, null, reason: 'a was unbound');
69 67
70 element.unbindAll(); 68 element.unbindAll();
71 model[sym('b')] = null; 69 model[#b] = null;
72 performMicrotaskCheckpoint(); 70 performMicrotaskCheckpoint();
73 expect(element.scaryMonster.health, 200); 71 expect(element.scaryMonster.health, 200);
74 }); 72 });
75 73
76 observeTest('override attribute setter', () { 74 observeTest('override attribute setter', () {
77 var element = new WithAttrsCustomElement().real; 75 var element = new WithAttrsCustomElement().real;
78 var model = toSymbolMap({'a': 1, 'b': 2}); 76 var model = toSymbolMap({'a': 1, 'b': 2});
79 element.bind('hidden?', model, 'a'); 77 element.bind('hidden?', model, 'a');
80 element.bind('id', model, 'b'); 78 element.bind('id', model, 'b');
81 79
82 expect(element.attributes, contains('hidden')); 80 expect(element.attributes, contains('hidden'));
83 expect(element.attributes['hidden'], ''); 81 expect(element.attributes['hidden'], '');
84 expect(element.id, '2'); 82 expect(element.id, '2');
85 83
86 model[sym('a')] = null; 84 model[#a] = null;
87 performMicrotaskCheckpoint(); 85 performMicrotaskCheckpoint();
88 expect(element.attributes, isNot(contains('hidden')), 86 expect(element.attributes, isNot(contains('hidden')),
89 reason: 'null is false-y'); 87 reason: 'null is false-y');
90 88
91 model[sym('a')] = false; 89 model[#a] = false;
92 performMicrotaskCheckpoint(); 90 performMicrotaskCheckpoint();
93 expect(element.attributes, isNot(contains('hidden'))); 91 expect(element.attributes, isNot(contains('hidden')));
94 92
95 model[sym('a')] = 'foo'; 93 model[#a] = 'foo';
96 // TODO(jmesserly): this is here to force an ordering between the two 94 // TODO(jmesserly): this is here to force an ordering between the two
97 // changes. Otherwise the order depends on what order StreamController 95 // changes. Otherwise the order depends on what order StreamController
98 // chooses to fire the two listeners in. 96 // chooses to fire the two listeners in.
99 performMicrotaskCheckpoint(); 97 performMicrotaskCheckpoint();
100 98
101 model[sym('b')] = 'x'; 99 model[#b] = 'x';
102 performMicrotaskCheckpoint(); 100 performMicrotaskCheckpoint();
103 expect(element.attributes, contains('hidden')); 101 expect(element.attributes, contains('hidden'));
104 expect(element.attributes['hidden'], ''); 102 expect(element.attributes['hidden'], '');
105 expect(element.id, 'x'); 103 expect(element.id, 'x');
106 104
107 expect(element.xtag.attributes.log, [ 105 expect(element.xtag.attributes.log, [
108 ['remove', 'hidden?'], 106 ['remove', 'hidden?'],
109 ['[]=', 'hidden', ''], 107 ['[]=', 'hidden', ''],
110 ['[]=', 'id', '2'], 108 ['[]=', 'id', '2'],
111 ['remove', 'hidden'], 109 ['remove', 'hidden'],
(...skipping 20 matching lines...) Expand all
132 mdv.instanceCreated.add(callback); 130 mdv.instanceCreated.add(callback);
133 131
134 div.query('template').model = model; 132 div.query('template').model = model;
135 performMicrotaskCheckpoint(); 133 performMicrotaskCheckpoint();
136 134
137 var element = div.nodes[1]; 135 var element = div.nodes[1];
138 136
139 expect(element.xtag is MyCustomElement, true, 137 expect(element.xtag is MyCustomElement, true,
140 reason: '${element.xtag} should be a MyCustomElement'); 138 reason: '${element.xtag} should be a MyCustomElement');
141 139
142 expect(element.xtag.myPoint, model[sym('a')]); 140 expect(element.xtag.myPoint, model[#a]);
143 expect(element.xtag.scaryMonster, model[sym('b')]); 141 expect(element.xtag.scaryMonster, model[#b]);
144 142
145 expect(element.attributes, isNot(contains('my-point'))); 143 expect(element.attributes, isNot(contains('my-point')));
146 expect(element.attributes, isNot(contains('scary-monster'))); 144 expect(element.attributes, isNot(contains('scary-monster')));
147 145
148 model[sym('a')] = null; 146 model[#a] = null;
149 performMicrotaskCheckpoint(); 147 performMicrotaskCheckpoint();
150 expect(element.xtag.myPoint, null); 148 expect(element.xtag.myPoint, null);
151 149
152 div.query('template').model = null; 150 div.query('template').model = null;
153 performMicrotaskCheckpoint(); 151 performMicrotaskCheckpoint();
154 152
155 expect(element.parentNode, null, reason: 'element was detached'); 153 expect(element.parentNode, null, reason: 'element was detached');
156 154
157 model[sym('a')] = new Point(1, 2); 155 model[#a] = new Point(1, 2);
158 model[sym('b')] = new Monster(200); 156 model[#b] = new Monster(200);
159 performMicrotaskCheckpoint(); 157 performMicrotaskCheckpoint();
160 158
161 expect(element.xtag.myPoint, null, reason: 'model was unbound'); 159 expect(element.xtag.myPoint, null, reason: 'model was unbound');
162 expect(element.xtag.scaryMonster.health, 100, reason: 'model was unbound'); 160 expect(element.xtag.scaryMonster.health, 100, reason: 'model was unbound');
163 161
164 mdv.instanceCreated.remove(callback); 162 mdv.instanceCreated.remove(callback);
165 }); 163 });
166 164
167 } 165 }
168 166
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 bool get isEmpty => _map.isEmpty; 271 bool get isEmpty => _map.isEmpty;
274 bool get isNotEmpty => _map.isNotEmpty; 272 bool get isNotEmpty => _map.isNotEmpty;
275 } 273 }
276 274
277 /** 275 /**
278 * Sanitizer which does nothing. 276 * Sanitizer which does nothing.
279 */ 277 */
280 class NullTreeSanitizer implements NodeTreeSanitizer { 278 class NullTreeSanitizer implements NodeTreeSanitizer {
281 void sanitizeTree(Node node) {} 279 void sanitizeTree(Node node) {}
282 } 280 }
OLDNEW
« no previous file with comments | « no previous file | pkg/mdv/test/element_bindings_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698