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