| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 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 | 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 ElementTest; | 5 library ElementTest; |
| 6 import '../../pkg/unittest/lib/unittest.dart'; | 6 import '../../pkg/unittest/lib/unittest.dart'; |
| 7 import '../../pkg/unittest/lib/html_config.dart'; | 7 import '../../pkg/unittest/lib/html_individual_config.dart'; |
| 8 import 'dart:html'; | 8 import 'dart:html'; |
| 9 | 9 |
| 10 expectLargeRect(ClientRect rect) { | 10 expectLargeRect(ClientRect rect) { |
| 11 expect(rect.top, 0); | 11 expect(rect.top, 0); |
| 12 expect(rect.left, 0); | 12 expect(rect.left, 0); |
| 13 expect(rect.width, greaterThan(100)); | 13 expect(rect.width, greaterThan(100)); |
| 14 expect(rect.height, greaterThan(100)); | 14 expect(rect.height, greaterThan(100)); |
| 15 expect(rect.bottom, rect.top + rect.height); | 15 expect(rect.bottom, rect.top + rect.height); |
| 16 expect(rect.right, rect.left + rect.width); | 16 expect(rect.right, rect.left + rect.width); |
| 17 } | 17 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 46 | 46 |
| 47 void testConstructorHelper(String tag, String htmlSnippet, | 47 void testConstructorHelper(String tag, String htmlSnippet, |
| 48 String expectedText, Function isExpectedClass) { | 48 String expectedText, Function isExpectedClass) { |
| 49 expect(isExpectedClass(new Element.tag(tag)), isTrue); | 49 expect(isExpectedClass(new Element.tag(tag)), isTrue); |
| 50 final elementFromSnippet = new Element.html(htmlSnippet); | 50 final elementFromSnippet = new Element.html(htmlSnippet); |
| 51 expect(isExpectedClass(elementFromSnippet), isTrue); | 51 expect(isExpectedClass(elementFromSnippet), isTrue); |
| 52 expect(elementFromSnippet.text, expectedText); | 52 expect(elementFromSnippet.text, expectedText); |
| 53 } | 53 } |
| 54 | 54 |
| 55 main() { | 55 main() { |
| 56 useHtmlConfiguration(); | 56 useHtmlIndividualConfiguration(); |
| 57 | 57 |
| 58 var isHRElement = predicate((x) => x is HRElement, 'is a HRElement'); | 58 var isHRElement = predicate((x) => x is HRElement, 'is a HRElement'); |
| 59 var isBRElement = predicate((x) => x is BRElement, 'is a BRElement'); | 59 var isBRElement = predicate((x) => x is BRElement, 'is a BRElement'); |
| 60 var isInputElement = | 60 var isInputElement = |
| 61 predicate((x) => x is InputElement, 'is an InputElement'); | 61 predicate((x) => x is InputElement, 'is an InputElement'); |
| 62 var isImageElement = | 62 var isImageElement = |
| 63 predicate((x) => x is ImageElement, 'is an ImageElement'); | 63 predicate((x) => x is ImageElement, 'is an ImageElement'); |
| 64 var isSpanElement = predicate((x) => x is SpanElement, 'is a SpanElement'); | 64 var isSpanElement = predicate((x) => x is SpanElement, 'is a SpanElement'); |
| 65 var isAnchorElement = | 65 var isAnchorElement = |
| 66 predicate((x) => x is AnchorElement, 'is an AnchorElement'); | 66 predicate((x) => x is AnchorElement, 'is an AnchorElement'); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 expect(element.clientHeight, greaterThan(100)); | 118 expect(element.clientHeight, greaterThan(100)); |
| 119 expect(element.offsetWidth, greaterThan(100)); | 119 expect(element.offsetWidth, greaterThan(100)); |
| 120 expect(element.offsetHeight, greaterThan(100)); | 120 expect(element.offsetHeight, greaterThan(100)); |
| 121 expect(element.scrollWidth, greaterThan(100)); | 121 expect(element.scrollWidth, greaterThan(100)); |
| 122 expect(element.scrollHeight, greaterThan(100)); | 122 expect(element.scrollHeight, greaterThan(100)); |
| 123 expect(element.getBoundingClientRect().left, 8); | 123 expect(element.getBoundingClientRect().left, 8); |
| 124 expect(element.getBoundingClientRect().top, 8); | 124 expect(element.getBoundingClientRect().top, 8); |
| 125 container.remove(); | 125 container.remove(); |
| 126 }); | 126 }); |
| 127 | 127 |
| 128 group('additionalConstructors', () { |
| 129 test('blockquote', () => testConstructorHelper('blockquote', |
| 130 '<blockquote>foo</blockquote>', 'foo', |
| 131 (element) => element is QuoteElement)); |
| 132 test('body', () => testConstructorHelper('body', |
| 133 '<body><div>foo</div></body>', 'foo', |
| 134 (element) => element is BodyElement)); |
| 135 test('head', () => testConstructorHelper('head', |
| 136 '<head><script>foo;</script></head>', 'foo;', |
| 137 (element) => element is HeadElement)); |
| 138 test('optgroup', () => testConstructorHelper('optgroup', |
| 139 '<optgroup>foo</optgroup>', 'foo', |
| 140 (element) => element is OptGroupElement)); |
| 141 test('option', () => testConstructorHelper('option', |
| 142 '<option>foo</option>', 'foo', |
| 143 (element) => element is OptionElement)); |
| 144 test('output', () => testConstructorHelper('output', |
| 145 '<output>foo</output>', 'foo', |
| 146 (element) => element is OutputElement)); |
| 147 test('progress', () => testConstructorHelper('progress', |
| 148 '<progress>foo</progress>', 'foo', |
| 149 (element) => element is ProgressElement)); |
| 150 test('caption', () => testConstructorHelper('caption', |
| 151 '<caption>foo</caption>', 'foo', |
| 152 (element) => element is TableCaptionElement)); |
| 153 test('td', () => testConstructorHelper('td', '<td>foo</td>', 'foo', |
| 154 (element) => element is TableCellElement)); |
| 155 test('colgroup', () => testConstructorHelper('colgroup', |
| 156 '<colgroup></colgroup>', '', |
| 157 (element) => element is TableColElement)); |
| 158 test('col', () => testConstructorHelper('col', '<col></col>', '', |
| 159 (element) => element is TableColElement)); |
| 160 test('tr', () => testConstructorHelper('tr', |
| 161 '<tr><td>foo</td></tr>', 'foo', |
| 162 (element) => element is TableRowElement)); |
| 163 test('tbody', () => testConstructorHelper('tbody', |
| 164 '<tbody><tr><td>foo</td></tr></tbody>', 'foo', |
| 165 (element) => element is TableSectionElement)); |
| 166 test('tfoot', () => testConstructorHelper('tfoot', |
| 167 '<tfoot><tr><td>foo</td></tr></tfoot>', 'foo', |
| 168 (element) => element is TableSectionElement)); |
| 169 test('thead', () => testConstructorHelper('thead', |
| 170 '<thead><tr><td>foo</td></tr></thead>', 'foo', |
| 171 (element) => element is TableSectionElement)); |
| 172 }); |
| 173 |
| 128 group('constructors', () { | 174 group('constructors', () { |
| 129 test('error', () { | 175 test('error', () { |
| 130 expect(() => new Element.html('<br/><br/>'), throwsArgumentError); | 176 expect(() => new Element.html('<br/><br/>'), throwsArgumentError); |
| 131 }); | 177 }); |
| 132 | 178 |
| 133 test('.html has no parent', () => | 179 test('.html has no parent', () => |
| 134 expect(new Element.html('<br/>').parent, isNull)); | 180 expect(new Element.html('<br/>').parent, isNull)); |
| 135 | 181 |
| 136 test('a', () => testConstructorHelper('a', '<a>foo</a>', 'foo', | 182 test('a', () => testConstructorHelper('a', '<a>foo</a>', 'foo', |
| 137 (element) => element is AnchorElement)); | 183 (element) => element is AnchorElement)); |
| 138 test('area', () => testConstructorHelper('area', '<area>foo</area>', '', | 184 test('area', () => testConstructorHelper('area', '<area>foo</area>', '', |
| 139 (element) => element is AreaElement)); | 185 (element) => element is AreaElement)); |
| 140 // TODO(jacobr): audio tags cause tests to segfault when using dartium. | 186 // TODO(jacobr): audio tags cause tests to segfault when using dartium. |
| 141 // b/5522106. | 187 // b/5522106. |
| 142 // test('audio', () => testConstructorHelper('audio', | 188 // test('audio', () => testConstructorHelper('audio', |
| 143 // '<audio>foo</audio>', 'foo', | 189 // '<audio>foo</audio>', 'foo', |
| 144 // (element) => element is AudioElement)); | 190 // (element) => element is AudioElement)); |
| 145 test('br', () => testConstructorHelper('br', '<br>', '', | 191 test('br', () => testConstructorHelper('br', '<br>', '', |
| 146 (element) => element is BRElement)); | 192 (element) => element is BRElement)); |
| 147 test('base', () => testConstructorHelper('base', '<base>foo</base>', '', | 193 test('base', () => testConstructorHelper('base', '<base>foo</base>', '', |
| 148 (element) => element is BaseElement)); | 194 (element) => element is BaseElement)); |
| 149 test('blockquote', () => testConstructorHelper('blockquote', | |
| 150 '<blockquote>foo</blockquote>', 'foo', | |
| 151 (element) => element is QuoteElement)); | |
| 152 test('body', () => testConstructorHelper('body', | |
| 153 '<body><div>foo</div></body>', 'foo', | |
| 154 (element) => element is BodyElement)); | |
| 155 test('button', () => testConstructorHelper('button', | 195 test('button', () => testConstructorHelper('button', |
| 156 '<button>foo</button>', 'foo', | 196 '<button>foo</button>', 'foo', |
| 157 (element) => element is ButtonElement)); | 197 (element) => element is ButtonElement)); |
| 158 test('canvas', () => testConstructorHelper('canvas', | 198 test('canvas', () => testConstructorHelper('canvas', |
| 159 '<canvas>foo</canvas>', 'foo', | 199 '<canvas>foo</canvas>', 'foo', |
| 160 (element) => element is CanvasElement)); | 200 (element) => element is CanvasElement)); |
| 161 test('dl', () => testConstructorHelper('dl', '<dl>foo</dl>', 'foo', | 201 test('dl', () => testConstructorHelper('dl', '<dl>foo</dl>', 'foo', |
| 162 (element) => element is DListElement)); | 202 (element) => element is DListElement)); |
| 163 // TODO(jacobr): WebKit doesn't yet support the DataList class. | 203 // TODO(jacobr): WebKit doesn't yet support the DataList class. |
| 164 // test('datalist', () => testConstructorHelper('datalist', | 204 // test('datalist', () => testConstructorHelper('datalist', |
| 165 // '<datalist>foo</datalist>', 'foo', | 205 // '<datalist>foo</datalist>', 'foo', |
| 166 // (element) => element is DataListElement)); | 206 // (element) => element is DataListElement)); |
| 167 test('div', () => testConstructorHelper('div', '<div>foo</div>', 'foo', | 207 test('div', () => testConstructorHelper('div', '<div>foo</div>', 'foo', |
| 168 (element) => element is DivElement)); | 208 (element) => element is DivElement)); |
| 169 test('fieldset', () => testConstructorHelper('fieldset', | 209 test('fieldset', () => testConstructorHelper('fieldset', |
| 170 '<fieldset>foo</fieldset>', 'foo', | 210 '<fieldset>foo</fieldset>', 'foo', |
| 171 (element) => element is FieldSetElement)); | 211 (element) => element is FieldSetElement)); |
| 172 test('font', () => testConstructorHelper('font', '<font>foo</font>', 'foo', | 212 test('font', () => testConstructorHelper('font', '<font>foo</font>', 'foo', |
| 173 (element) => element is FontElement)); | 213 (element) => element is FontElement)); |
| 174 test('form', () => testConstructorHelper('form', '<form>foo</form>', 'foo', | 214 test('form', () => testConstructorHelper('form', '<form>foo</form>', 'foo', |
| 175 (element) => element is FormElement)); | 215 (element) => element is FormElement)); |
| 176 test('hr', () => testConstructorHelper('hr', '<hr>', '', | 216 test('hr', () => testConstructorHelper('hr', '<hr>', '', |
| 177 (element) => element is HRElement)); | 217 (element) => element is HRElement)); |
| 178 test('head', () => testConstructorHelper('head', | |
| 179 '<head><script>foo;</script></head>', 'foo;', | |
| 180 (element) => element is HeadElement)); | |
| 181 test('h1', () => testConstructorHelper('h1', '<h1>foo</h1>', 'foo', | 218 test('h1', () => testConstructorHelper('h1', '<h1>foo</h1>', 'foo', |
| 182 (element) => element is HeadingElement)); | 219 (element) => element is HeadingElement)); |
| 183 test('h2', () => testConstructorHelper('h2', '<h2>foo</h2>', 'foo', | 220 test('h2', () => testConstructorHelper('h2', '<h2>foo</h2>', 'foo', |
| 184 (element) => element is HeadingElement)); | 221 (element) => element is HeadingElement)); |
| 185 test('h3', () => testConstructorHelper('h3', '<h3>foo</h3>', 'foo', | 222 test('h3', () => testConstructorHelper('h3', '<h3>foo</h3>', 'foo', |
| 186 (element) => element is HeadingElement)); | 223 (element) => element is HeadingElement)); |
| 187 test('h4', () => testConstructorHelper('h4', '<h4>foo</h4>', 'foo', | 224 test('h4', () => testConstructorHelper('h4', '<h4>foo</h4>', 'foo', |
| 188 (element) => element is HeadingElement)); | 225 (element) => element is HeadingElement)); |
| 189 test('h5', () => testConstructorHelper('h5', '<h5>foo</h5>', 'foo', | 226 test('h5', () => testConstructorHelper('h5', '<h5>foo</h5>', 'foo', |
| 190 (element) => element is HeadingElement)); | 227 (element) => element is HeadingElement)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 212 test('menu', () => testConstructorHelper('menu', '<menu>foo</menu>', 'foo', | 249 test('menu', () => testConstructorHelper('menu', '<menu>foo</menu>', 'foo', |
| 213 (element) => element is MenuElement)); | 250 (element) => element is MenuElement)); |
| 214 test('meta', () => testConstructorHelper('meta', '<meta>', '', | 251 test('meta', () => testConstructorHelper('meta', '<meta>', '', |
| 215 (element) => element is MetaElement)); | 252 (element) => element is MetaElement)); |
| 216 test('del', () => testConstructorHelper('del', '<del>foo</del>', 'foo', | 253 test('del', () => testConstructorHelper('del', '<del>foo</del>', 'foo', |
| 217 (element) => element is ModElement)); | 254 (element) => element is ModElement)); |
| 218 test('ins', () => testConstructorHelper('ins', '<ins>foo</ins>', 'foo', | 255 test('ins', () => testConstructorHelper('ins', '<ins>foo</ins>', 'foo', |
| 219 (element) => element is ModElement)); | 256 (element) => element is ModElement)); |
| 220 test('ol', () => testConstructorHelper('ol', '<ol>foo</ol>', 'foo', | 257 test('ol', () => testConstructorHelper('ol', '<ol>foo</ol>', 'foo', |
| 221 (element) => element is OListElement)); | 258 (element) => element is OListElement)); |
| 222 test('optgroup', () => testConstructorHelper('optgroup', | |
| 223 '<optgroup>foo</optgroup>', 'foo', | |
| 224 (element) => element is OptGroupElement)); | |
| 225 test('option', () => testConstructorHelper('option', | |
| 226 '<option>foo</option>', 'foo', | |
| 227 (element) => element is OptionElement)); | |
| 228 test('output', () => testConstructorHelper('output', | |
| 229 '<output>foo</output>', 'foo', | |
| 230 (element) => element is OutputElement)); | |
| 231 test('p', () => testConstructorHelper('p', '<p>foo</p>', 'foo', | 259 test('p', () => testConstructorHelper('p', '<p>foo</p>', 'foo', |
| 232 (element) => element is ParagraphElement)); | 260 (element) => element is ParagraphElement)); |
| 233 test('param', () => testConstructorHelper('param', '<param>', '', | 261 test('param', () => testConstructorHelper('param', '<param>', '', |
| 234 (element) => element is ParamElement)); | 262 (element) => element is ParamElement)); |
| 235 test('pre', () => testConstructorHelper('pre', '<pre>foo</pre>', 'foo', | 263 test('pre', () => testConstructorHelper('pre', '<pre>foo</pre>', 'foo', |
| 236 (element) => element is PreElement)); | 264 (element) => element is PreElement)); |
| 237 test('progress', () => testConstructorHelper('progress', | |
| 238 '<progress>foo</progress>', 'foo', | |
| 239 (element) => element is ProgressElement)); | |
| 240 test('q', () => testConstructorHelper('q', '<q>foo</q>', 'foo', | 265 test('q', () => testConstructorHelper('q', '<q>foo</q>', 'foo', |
| 241 (element) => element is QuoteElement)); | 266 (element) => element is QuoteElement)); |
| 242 test('script', () => testConstructorHelper('script', | 267 test('script', () => testConstructorHelper('script', |
| 243 '<script>foo</script>', 'foo', | 268 '<script>foo</script>', 'foo', |
| 244 (element) => element is ScriptElement)); | 269 (element) => element is ScriptElement)); |
| 245 test('select', () => testConstructorHelper('select', | 270 test('select', () => testConstructorHelper('select', |
| 246 '<select>foo</select>', 'foo', | 271 '<select>foo</select>', 'foo', |
| 247 (element) => element is SelectElement)); | 272 (element) => element is SelectElement)); |
| 248 // TODO(jacobr): audio tags cause tests to segfault when using dartium. | 273 // TODO(jacobr): audio tags cause tests to segfault when using dartium. |
| 249 // b/5522106. | 274 // b/5522106. |
| 250 // test('source', () => testConstructorHelper('source', '<source>', '', | 275 // test('source', () => testConstructorHelper('source', '<source>', '', |
| 251 // (element) => element is SourceElement)); | 276 // (element) => element is SourceElement)); |
| 252 test('span', () => testConstructorHelper('span', '<span>foo</span>', 'foo', | 277 test('span', () => testConstructorHelper('span', '<span>foo</span>', 'foo', |
| 253 (element) => element is SpanElement)); | 278 (element) => element is SpanElement)); |
| 254 test('style', () => testConstructorHelper('style', | 279 test('style', () => testConstructorHelper('style', |
| 255 '<style>foo</style>', 'foo', | 280 '<style>foo</style>', 'foo', |
| 256 (element) => element is StyleElement)); | 281 (element) => element is StyleElement)); |
| 257 test('caption', () => testConstructorHelper('caption', | |
| 258 '<caption>foo</caption>', 'foo', | |
| 259 (element) => element is TableCaptionElement)); | |
| 260 test('td', () => testConstructorHelper('td', '<td>foo</td>', 'foo', | |
| 261 (element) => element is TableCellElement)); | |
| 262 test('colgroup', () => testConstructorHelper('colgroup', | |
| 263 '<colgroup></colgroup>', '', | |
| 264 (element) => element is TableColElement)); | |
| 265 test('col', () => testConstructorHelper('col', '<col></col>', '', | |
| 266 (element) => element is TableColElement)); | |
| 267 test('table', () => testConstructorHelper('table', | 282 test('table', () => testConstructorHelper('table', |
| 268 '<table><caption>foo</caption></table>', 'foo', | 283 '<table><caption>foo</caption></table>', 'foo', |
| 269 (element) => element is TableElement)); | 284 (element) => element is TableElement)); |
| 270 test('tr', () => testConstructorHelper('tr', | |
| 271 '<tr><td>foo</td></tr>', 'foo', | |
| 272 (element) => element is TableRowElement)); | |
| 273 test('tbody', () => testConstructorHelper('tbody', | |
| 274 '<tbody><tr><td>foo</td></tr></tbody>', 'foo', | |
| 275 (element) => element is TableSectionElement)); | |
| 276 test('tfoot', () => testConstructorHelper('tfoot', | |
| 277 '<tfoot><tr><td>foo</td></tr></tfoot>', 'foo', | |
| 278 (element) => element is TableSectionElement)); | |
| 279 test('thead', () => testConstructorHelper('thead', | |
| 280 '<thead><tr><td>foo</td></tr></thead>', 'foo', | |
| 281 (element) => element is TableSectionElement)); | |
| 282 test('textarea', () => testConstructorHelper('textarea', | 285 test('textarea', () => testConstructorHelper('textarea', |
| 283 '<textarea>foo</textarea>', 'foo', | 286 '<textarea>foo</textarea>', 'foo', |
| 284 (element) => element is TextAreaElement)); | 287 (element) => element is TextAreaElement)); |
| 285 test('title', () => testConstructorHelper('title', | 288 test('title', () => testConstructorHelper('title', |
| 286 '<title>foo</title>', 'foo', | 289 '<title>foo</title>', 'foo', |
| 287 (element) => element is TitleElement)); | 290 (element) => element is TitleElement)); |
| 288 // TODO(jacobr): audio tags cause tests to segfault when using dartium. | 291 // TODO(jacobr): audio tags cause tests to segfault when using dartium. |
| 289 // b/5522106. | 292 // b/5522106. |
| 290 // test('track', () => testConstructorHelper('track', '<track>', '', | 293 // test('track', () => testConstructorHelper('track', '<track>', '', |
| 291 // (element) => element is TrackElement)); | 294 // (element) => element is TrackElement)); |
| 292 test('ul', () => testConstructorHelper('ul', '<ul>foo</ul>', 'foo', | 295 test('ul', () => testConstructorHelper('ul', '<ul>foo</ul>', 'foo', |
| 293 (element) => element is UListElement)); | 296 (element) => element is UListElement)); |
| 294 // TODO(jacobr): video tags cause tests to segfault when using dartium. | 297 // TODO(jacobr): video tags cause tests to segfault when using dartium. |
| 295 // b/5522106. | 298 // b/5522106. |
| 296 // test('video', () => testConstructorHelper('video', | 299 // test('video', () => testConstructorHelper('video', |
| 297 // '<video>foo</video>', 'foo', | 300 // '<video>foo</video>', 'foo', |
| 298 // (element) => element is VideoElement)); | 301 // (element) => element is VideoElement)); |
| 299 // TODO(jacobr): this test is broken until Dartium fixes b/5521083 | 302 // TODO(jacobr): this test is broken until Dartium fixes b/5521083 |
| 300 // test('someunknown', () => testConstructorHelper('someunknown', | 303 // test('someunknown', () => testConstructorHelper('someunknown', |
| 301 // '<someunknown>foo</someunknown>', 'foo', | 304 // '<someunknown>foo</someunknown>', 'foo', |
| 302 // (element) => element is UnknownElement)); | 305 // (element) => element is UnknownElement)); |
| 303 }); | 306 }); |
| 307 |
| 308 group('eventListening', () { |
| 309 test('eventListeners', () { |
| 310 final element = new Element.tag('div'); |
| 311 final on = element.on; |
| 304 | 312 |
| 305 test('eventListeners', () { | 313 testEventHelper(on.abort, 'abort', |
| 306 final element = new Element.tag('div'); | 314 (listener) => Testing.addEventListener( |
| 307 final on = element.on; | 315 element, 'abort', listener, true)); |
| 308 | 316 testEventHelper(on.beforeCopy, 'beforecopy', |
| 309 testEventHelper(on.abort, 'abort', | 317 (listener) => Testing.addEventListener( |
| 310 (listener) => Testing.addEventListener( | 318 element, 'beforecopy', listener, true)); |
| 311 element, 'abort', listener, true)); | 319 testEventHelper(on.beforeCut, 'beforecut', |
| 312 testEventHelper(on.beforeCopy, 'beforecopy', | 320 (listener) => Testing.addEventListener( |
| 313 (listener) => Testing.addEventListener( | 321 element, 'beforecut', listener, true)); |
| 314 element, 'beforecopy', listener, true)); | 322 testEventHelper(on.beforePaste, 'beforepaste', |
| 315 testEventHelper(on.beforeCut, 'beforecut', | 323 (listener) => Testing.addEventListener( |
| 316 (listener) => Testing.addEventListener( | 324 element, 'beforepaste', listener, true)); |
| 317 element, 'beforecut', listener, true)); | 325 testEventHelper(on.blur, 'blur', |
| 318 testEventHelper(on.beforePaste, 'beforepaste', | 326 (listener) => Testing.addEventListener( |
| 319 (listener) => Testing.addEventListener( | 327 element, 'blur', listener, true)); |
| 320 element, 'beforepaste', listener, true)); | 328 testEventHelper(on.change, 'change', |
| 321 testEventHelper(on.blur, 'blur', | 329 (listener) => Testing.addEventListener( |
| 322 (listener) => Testing.addEventListener( | 330 element, 'change', listener, true)); |
| 323 element, 'blur', listener, true)); | 331 testEventHelper(on.click, 'click', |
| 324 testEventHelper(on.change, 'change', | 332 (listener) => Testing.addEventListener( |
| 325 (listener) => Testing.addEventListener( | 333 element, 'click', listener, true)); |
| 326 element, 'change', listener, true)); | 334 testEventHelper(on.contextMenu, 'contextmenu', |
| 327 testEventHelper(on.click, 'click', | 335 (listener) => Testing.addEventListener( |
| 328 (listener) => Testing.addEventListener( | 336 element, 'contextmenu', listener, true)); |
| 329 element, 'click', listener, true)); | 337 testEventHelper(on.copy, 'copy', |
| 330 testEventHelper(on.contextMenu, 'contextmenu', | 338 (listener) => Testing.addEventListener( |
| 331 (listener) => Testing.addEventListener( | 339 element, 'copy', listener, true)); |
| 332 element, 'contextmenu', listener, true)); | 340 testEventHelper(on.cut, 'cut', |
| 333 testEventHelper(on.copy, 'copy', | 341 (listener) => Testing.addEventListener( |
| 334 (listener) => Testing.addEventListener( | 342 element, 'cut', listener, true)); |
| 335 element, 'copy', listener, true)); | 343 testEventHelper(on.doubleClick, 'dblclick', |
| 336 testEventHelper(on.cut, 'cut', | 344 (listener) => Testing.addEventListener( |
| 337 (listener) => Testing.addEventListener( | 345 element, 'dblclick', listener, true)); |
| 338 element, 'cut', listener, true)); | 346 testEventHelper(on.drag, 'drag', |
| 339 testEventHelper(on.doubleClick, 'dblclick', | 347 (listener) => Testing.addEventListener( |
| 340 (listener) => Testing.addEventListener( | 348 element, 'drag', listener, true)); |
| 341 element, 'dblclick', listener, true)); | 349 testEventHelper(on.dragEnd, 'dragend', |
| 342 testEventHelper(on.drag, 'drag', | 350 (listener) => Testing.addEventListener( |
| 343 (listener) => Testing.addEventListener( | 351 element, 'dragend', listener, true)); |
| 344 element, 'drag', listener, true)); | 352 testEventHelper(on.dragEnter, 'dragenter', |
| 345 testEventHelper(on.dragEnd, 'dragend', | 353 (listener) => Testing.addEventListener( |
| 346 (listener) => Testing.addEventListener( | 354 element, 'dragenter', listener, true)); |
| 347 element, 'dragend', listener, true)); | 355 testEventHelper(on.dragLeave, 'dragleave', |
| 348 testEventHelper(on.dragEnter, 'dragenter', | 356 (listener) => Testing.addEventListener( |
| 349 (listener) => Testing.addEventListener( | 357 element, 'dragleave', listener, true)); |
| 350 element, 'dragenter', listener, true)); | 358 testEventHelper(on.dragOver, 'dragover', |
| 351 testEventHelper(on.dragLeave, 'dragleave', | 359 (listener) => Testing.addEventListener( |
| 352 (listener) => Testing.addEventListener( | 360 element, 'dragover', listener, true)); |
| 353 element, 'dragleave', listener, true)); | 361 testEventHelper(on.dragStart, 'dragstart', |
| 354 testEventHelper(on.dragOver, 'dragover', | 362 (listener) => Testing.addEventListener( |
| 355 (listener) => Testing.addEventListener( | 363 element, 'dragstart', listener, true)); |
| 356 element, 'dragover', listener, true)); | 364 testEventHelper(on.drop, 'drop', |
| 357 testEventHelper(on.dragStart, 'dragstart', | 365 (listener) => Testing.addEventListener( |
| 358 (listener) => Testing.addEventListener( | 366 element, 'drop', listener, true)); |
| 359 element, 'dragstart', listener, true)); | 367 testEventHelper(on.error, 'error', |
| 360 testEventHelper(on.drop, 'drop', | 368 (listener) => Testing.addEventListener( |
| 361 (listener) => Testing.addEventListener( | 369 element, 'error', listener, true)); |
| 362 element, 'drop', listener, true)); | 370 testEventHelper(on.focus, 'focus', |
| 363 testEventHelper(on.error, 'error', | 371 (listener) => Testing.addEventListener( |
| 364 (listener) => Testing.addEventListener( | 372 element, 'focus', listener, true)); |
| 365 element, 'error', listener, true)); | 373 testEventHelper(on.input, 'input', |
| 366 testEventHelper(on.focus, 'focus', | 374 (listener) => Testing.addEventListener( |
| 367 (listener) => Testing.addEventListener( | 375 element, 'input', listener, true)); |
| 368 element, 'focus', listener, true)); | 376 testEventHelper(on.invalid, 'invalid', |
| 369 testEventHelper(on.input, 'input', | 377 (listener) => Testing.addEventListener( |
| 370 (listener) => Testing.addEventListener( | 378 element, 'invalid', listener, true)); |
| 371 element, 'input', listener, true)); | 379 testEventHelper(on.keyDown, 'keydown', |
| 372 testEventHelper(on.invalid, 'invalid', | 380 (listener) => Testing.addEventListener( |
| 373 (listener) => Testing.addEventListener( | 381 element, 'keydown', listener, true)); |
| 374 element, 'invalid', listener, true)); | 382 testEventHelper(on.keyPress, 'keypress', |
| 375 testEventHelper(on.keyDown, 'keydown', | 383 (listener) => Testing.addEventListener( |
| 376 (listener) => Testing.addEventListener( | 384 element, 'keypress', listener, true)); |
| 377 element, 'keydown', listener, true)); | 385 testEventHelper(on.keyUp, 'keyup', |
| 378 testEventHelper(on.keyPress, 'keypress', | 386 (listener) => Testing.addEventListener( |
| 379 (listener) => Testing.addEventListener( | 387 element, 'keyup', listener, true)); |
| 380 element, 'keypress', listener, true)); | 388 testEventHelper(on.load, 'load', |
| 381 testEventHelper(on.keyUp, 'keyup', | 389 (listener) => Testing.addEventListener( |
| 382 (listener) => Testing.addEventListener( | 390 element, 'load', listener, true)); |
| 383 element, 'keyup', listener, true)); | 391 testEventHelper(on.mouseDown, 'mousedown', |
| 384 testEventHelper(on.load, 'load', | 392 (listener) => Testing.addEventListener( |
| 385 (listener) => Testing.addEventListener( | 393 element, 'mousedown', listener, true)); |
| 386 element, 'load', listener, true)); | 394 testEventHelper(on.mouseMove, 'mousemove', |
| 387 testEventHelper(on.mouseDown, 'mousedown', | 395 (listener) => Testing.addEventListener( |
| 388 (listener) => Testing.addEventListener( | 396 element, 'mousemove', listener, true)); |
| 389 element, 'mousedown', listener, true)); | 397 testEventHelper(on.mouseOut, 'mouseout', |
| 390 testEventHelper(on.mouseMove, 'mousemove', | 398 (listener) => Testing.addEventListener( |
| 391 (listener) => Testing.addEventListener( | 399 element, 'mouseout', listener, true)); |
| 392 element, 'mousemove', listener, true)); | 400 testEventHelper(on.mouseOver, 'mouseover', |
| 393 testEventHelper(on.mouseOut, 'mouseout', | 401 (listener) => Testing.addEventListener( |
| 394 (listener) => Testing.addEventListener( | 402 element, 'mouseover', listener, true)); |
| 395 element, 'mouseout', listener, true)); | 403 testEventHelper(on.mouseUp, 'mouseup', |
| 396 testEventHelper(on.mouseOver, 'mouseover', | 404 (listener) => Testing.addEventListener( |
| 397 (listener) => Testing.addEventListener( | 405 element, 'mouseup', listener, true)); |
| 398 element, 'mouseover', listener, true)); | 406 // Browsers have different events that they use, so fire all variants. |
| 399 testEventHelper(on.mouseUp, 'mouseup', | 407 testMultipleEventHelper(on.mouseWheel, |
| 400 (listener) => Testing.addEventListener( | 408 ['mousewheel', 'wheel', 'DOMMouseScroll'], |
| 401 element, 'mouseup', listener, true)); | 409 (listener) => Testing.addEventListener( |
| 402 // Browsers have different events that they use, so fire all variants. | 410 element, 'mousewheel', listener, true)); |
| 403 testMultipleEventHelper(on.mouseWheel, | 411 testEventHelper(on.paste, 'paste', |
| 404 ['mousewheel', 'wheel', 'DOMMouseScroll'], | 412 (listener) => Testing.addEventListener( |
| 405 (listener) => Testing.addEventListener( | 413 element, 'paste', listener, true)); |
| 406 element, 'mousewheel', listener, true)); | 414 testEventHelper(on.reset, 'reset', |
| 407 testEventHelper(on.paste, 'paste', | 415 (listener) => Testing.addEventListener( |
| 408 (listener) => Testing.addEventListener( | 416 element, 'reset', listener, true)); |
| 409 element, 'paste', listener, true)); | 417 testEventHelper(on.scroll, 'scroll', |
| 410 testEventHelper(on.reset, 'reset', | 418 (listener) => Testing.addEventListener( |
| 411 (listener) => Testing.addEventListener( | 419 element, 'scroll', listener, true)); |
| 412 element, 'reset', listener, true)); | 420 testEventHelper(on.search, 'search', |
| 413 testEventHelper(on.scroll, 'scroll', | 421 (listener) => Testing.addEventListener( |
| 414 (listener) => Testing.addEventListener( | 422 element, 'search', listener, true)); |
| 415 element, 'scroll', listener, true)); | 423 testEventHelper(on.select, 'select', |
| 416 testEventHelper(on.search, 'search', | 424 (listener) => Testing.addEventListener( |
| 417 (listener) => Testing.addEventListener( | 425 element, 'select', listener, true)); |
| 418 element, 'search', listener, true)); | 426 testEventHelper(on.selectStart, 'selectstart', |
| 419 testEventHelper(on.select, 'select', | 427 (listener) => Testing.addEventListener( |
| 420 (listener) => Testing.addEventListener( | 428 element, 'selectstart', listener, true)); |
| 421 element, 'select', listener, true)); | 429 testEventHelper(on.submit, 'submit', |
| 422 testEventHelper(on.selectStart, 'selectstart', | 430 (listener) => Testing.addEventListener( |
| 423 (listener) => Testing.addEventListener( | 431 element, 'submit', listener, true)); |
| 424 element, 'selectstart', listener, true)); | 432 testEventHelper(on.touchCancel, 'touchcancel', |
| 425 testEventHelper(on.submit, 'submit', | 433 (listener) => Testing.addEventListener( |
| 426 (listener) => Testing.addEventListener( | 434 element, 'touchcancel', listener, true)); |
| 427 element, 'submit', listener, true)); | 435 testEventHelper(on.touchEnd, 'touchend', |
| 428 testEventHelper(on.touchCancel, 'touchcancel', | 436 (listener) => Testing.addEventListener( |
| 429 (listener) => Testing.addEventListener( | 437 element, 'touchend', listener, true)); |
| 430 element, 'touchcancel', listener, true)); | 438 testEventHelper(on.touchLeave, 'touchleave'); |
| 431 testEventHelper(on.touchEnd, 'touchend', | 439 testEventHelper(on.touchMove, 'touchmove', |
| 432 (listener) => Testing.addEventListener( | 440 (listener) => Testing.addEventListener( |
| 433 element, 'touchend', listener, true)); | 441 element, 'touchmove', listener, true)); |
| 434 testEventHelper(on.touchLeave, 'touchleave'); | 442 testEventHelper(on.touchStart, 'touchstart', |
| 435 testEventHelper(on.touchMove, 'touchmove', | 443 (listener) => Testing.addEventListener( |
| 436 (listener) => Testing.addEventListener( | 444 element, 'touchstart', listener, true)); |
| 437 element, 'touchmove', listener, true)); | 445 }); |
| 438 testEventHelper(on.touchStart, 'touchstart', | |
| 439 (listener) => Testing.addEventListener( | |
| 440 element, 'touchstart', listener, true)); | |
| 441 }); | 446 }); |
| 442 | 447 |
| 443 group('attributes', () { | 448 group('attributes', () { |
| 449 test('coercion', () { |
| 450 final element = new Element.tag('div'); |
| 451 element.attributes['foo'] = 42; |
| 452 element.attributes['bar'] = 3.1; |
| 453 expect(element.attributes['foo'], '42'); |
| 454 expect(element.attributes['bar'], '3.1'); |
| 455 }); |
| 444 test('manipulation', () { | 456 test('manipulation', () { |
| 445 final element = new Element.html( | 457 final element = new Element.html( |
| 446 '''<div class="foo" style="overflow: hidden" data-foo="bar" | 458 '''<div class="foo" style="overflow: hidden" data-foo="bar" |
| 447 data-foo2="bar2" dir="rtl"> | 459 data-foo2="bar2" dir="rtl"> |
| 448 </div>'''); | 460 </div>'''); |
| 449 final attributes = element.attributes; | 461 final attributes = element.attributes; |
| 450 expect(attributes['class'], 'foo'); | 462 expect(attributes['class'], 'foo'); |
| 451 expect(attributes['style'], 'overflow: hidden'); | 463 expect(attributes['style'], 'overflow: hidden'); |
| 452 expect(attributes['data-foo'], 'bar'); | 464 expect(attributes['data-foo'], 'bar'); |
| 453 expect(attributes['data-foo2'], 'bar2'); | 465 expect(attributes['data-foo2'], 'bar2'); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 466 expect(attributes.length, 4); | 478 expect(attributes.length, 4); |
| 467 expect(dataAttributes.length, 1); | 479 expect(dataAttributes.length, 1); |
| 468 attributes.remove('style'); | 480 attributes.remove('style'); |
| 469 expect(attributes.length, 3); | 481 expect(attributes.length, 3); |
| 470 dataAttributes['foo3'] = 'baz3'; | 482 dataAttributes['foo3'] = 'baz3'; |
| 471 expect(dataAttributes.length, 2); | 483 expect(dataAttributes.length, 2); |
| 472 expect(attributes.length, 4); | 484 expect(attributes.length, 4); |
| 473 attributes['style'] = 'width: 300px;'; | 485 attributes['style'] = 'width: 300px;'; |
| 474 expect(attributes.length, 5); | 486 expect(attributes.length, 5); |
| 475 }); | 487 }); |
| 476 | |
| 477 test('coercion', () { | |
| 478 final element = new Element.tag('div'); | |
| 479 element.attributes['foo'] = 42; | |
| 480 element.attributes['bar'] = 3.1; | |
| 481 expect(element.attributes['foo'], '42'); | |
| 482 expect(element.attributes['bar'], '3.1'); | |
| 483 }); | |
| 484 }); | 488 }); |
| 485 | 489 |
| 486 group('elements', () { | 490 group('elements', () { |
| 487 test('is a subset of nodes', () { | 491 test('is a subset of nodes', () { |
| 488 var el = new Element.html("<div>Foo<br/><img/></div>"); | 492 var el = new Element.html("<div>Foo<br/><img/></div>"); |
| 489 expect(el.nodes.length, 3); | 493 expect(el.nodes.length, 3); |
| 490 expect(el.elements.length, 2); | 494 expect(el.elements.length, 2); |
| 491 expect(el.nodes[1], el.elements[0]); | 495 expect(el.nodes[1], el.elements[0]); |
| 492 expect(el.nodes[2], el.elements[1]); | 496 expect(el.nodes[2], el.elements[1]); |
| 493 }); | 497 }); |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 }); | 756 }); |
| 753 | 757 |
| 754 test('getRange', () { | 758 test('getRange', () { |
| 755 var range = makeElList().getRange(1, 2); | 759 var range = makeElList().getRange(1, 2); |
| 756 expect(range, isElementList); | 760 expect(range, isElementList); |
| 757 expect(range[0], isImageElement); | 761 expect(range[0], isImageElement); |
| 758 expect(range[1], isInputElement); | 762 expect(range[1], isInputElement); |
| 759 }); | 763 }); |
| 760 }); | 764 }); |
| 761 } | 765 } |
| OLD | NEW |