| OLD | NEW | 
|---|
| 1 // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2015, 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; |  | 
| 6 import 'package:unittest/unittest.dart'; |  | 
| 7 import 'package:unittest/html_config.dart'; |  | 
| 8 import 'dart:collection'; | 5 import 'dart:collection'; | 
| 9 import 'dart:html'; | 6 import 'dart:html'; | 
| 10 import 'dart:svg' as svg; | 7 import 'dart:svg' as svg; | 
| 11 | 8 | 
|  | 9 import 'package:minitest/minitest.dart'; | 
|  | 10 | 
| 12 // Test for `querySelectorAll(xxx).classes.op()` where the query returns mixed | 11 // Test for `querySelectorAll(xxx).classes.op()` where the query returns mixed | 
| 13 // Html and Svg elements. | 12 // Html and Svg elements. | 
| 14 | 13 | 
| 15 Element makeElementsContainer() { | 14 Element makeElementsContainer() { | 
| 16   var e = new Element.html( | 15   var e = new Element.html( | 
| 17       '<ul class="yes foo">' | 16       '<ul class="yes foo">' | 
| 18       '<li class="yes quux qux">' | 17       '<li class="yes quux qux">' | 
| 19       '</ul>'); | 18       '</ul>'); | 
| 20   final svgContent = r""" | 19   final svgContent = r""" | 
| 21 <svg version="1.1"> | 20 <svg version="1.1"> | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
| 46 | 45 | 
| 47 /// Returns a canonical string for Set<String> and lists of Element's classes. | 46 /// Returns a canonical string for Set<String> and lists of Element's classes. | 
| 48 String view(var e) { | 47 String view(var e) { | 
| 49   if (e is Set) return '${e.toList()..sort()}'; | 48   if (e is Set) return '${e.toList()..sort()}'; | 
| 50   if (e is Element) return view(e.classes); | 49   if (e is Element) return view(e.classes); | 
| 51   if (e is Iterable) return '${e.map(view).toList()}'; | 50   if (e is Iterable) return '${e.map(view).toList()}'; | 
| 52   throw new ArgumentError('Cannot make canonical view string for: $e}'); | 51   throw new ArgumentError('Cannot make canonical view string for: $e}'); | 
| 53 } | 52 } | 
| 54 | 53 | 
| 55 main() { | 54 main() { | 
| 56   useHtmlConfiguration(); |  | 
| 57 |  | 
| 58   Set<String> extractClasses(Element el) { | 55   Set<String> extractClasses(Element el) { | 
| 59     final match = new RegExp('class="([^"]+)"').firstMatch(el.outerHtml); | 56     final match = new RegExp('class="([^"]+)"').firstMatch(el.outerHtml); | 
| 60     return new LinkedHashSet.from(match[1].split(' ')); | 57     return new LinkedHashSet.from(match[1].split(' ')); | 
| 61   } | 58   } | 
| 62 | 59 | 
| 63   tearDown(elementsTearDown); | 60   tearDown(elementsTearDown); | 
| 64 | 61 | 
| 65   test('list_view', () { | 62   test('list_view', () { | 
| 66     // Test that the 'view' helper function is behaving. | 63     // Test that the 'view' helper function is behaving. | 
| 67     var elements = elementsSetup(); | 64     var elements = elementsSetup(); | 
| 68     expect(view(elements.classes), '[classy, foo, quux, qux, yes]'); | 65     expect(view(elements.classes), '[classy, foo, quux, qux, yes]'); | 
| 69     expect(view(elements), | 66     expect(view(elements), | 
| 70         '[[foo, yes], [quux, qux, yes], [qux, yes], [classy, yes]]'); | 67         '[[foo, yes], [quux, qux, yes], [qux, yes], [classy, yes]]'); | 
| 71   }); | 68   }); | 
| 72 | 69 | 
| 73   test('listClasses=', () { | 70   test('listClasses=', () { | 
| 74     var elements =  elementsSetup(); | 71     var elements =  elementsSetup(); | 
| 75 | 72 | 
| 76     elements.classes = ['foo', 'qux']; | 73     elements.classes = ['foo', 'qux']; | 
| 77     expect(view(elements.classes), '[foo, qux]'); | 74     expect(view(elements.classes), '[foo, qux]'); | 
| 78     expect(view(elements), '[[foo, qux], [foo, qux], [foo, qux], [foo, qux]]'); | 75     expect(view(elements), '[[foo, qux], [foo, qux], [foo, qux], [foo, qux]]'); | 
| 79 | 76 | 
| 80     var elements2 = document.querySelectorAll('.qux'); | 77     var elements2 = document.querySelectorAll('.qux'); | 
| 81     expect(view(elements2.classes), '[foo, qux]'); | 78     expect(view(elements2.classes), '[foo, qux]'); | 
| 82     expect(view(elements2), '[[foo, qux], [foo, qux], [foo, qux], [foo, qux]]'); | 79     expect(view(elements2), '[[foo, qux], [foo, qux], [foo, qux], [foo, qux]]'); | 
| 83 | 80 | 
| 84     for (Element e in elements2) { | 81     for (Element e in elements2) { | 
| 85       expect(e.classes, orderedEquals(['foo', 'qux'])); | 82       expect(e.classes, equals(['foo', 'qux'])); | 
| 86       expect(extractClasses(e), orderedEquals(['foo', 'qux'])); | 83       expect(extractClasses(e), equals(['foo', 'qux'])); | 
| 87     } | 84     } | 
| 88 | 85 | 
| 89     elements.classes = []; | 86     elements.classes = []; | 
| 90     expect(view(elements2.classes), '[]'); | 87     expect(view(elements2.classes), '[]'); | 
| 91     expect(view(elements2), '[[], [], [], []]'); | 88     expect(view(elements2), '[[], [], [], []]'); | 
| 92   }); | 89   }); | 
| 93 | 90 | 
| 94   test('listMap', () { | 91   test('listMap', () { | 
| 95     var elements = elementsSetup(); | 92     var elements = elementsSetup(); | 
| 96     expect(elements.classes.map((c) => c.toUpperCase()).toList(), | 93     expect(elements.classes.map((c) => c.toUpperCase()).toList(), | 
| 97         unorderedEquals(['YES', 'FOO', 'QUX', 'QUUX', 'CLASSY'])); | 94         unorderedEquals(['YES', 'FOO', 'QUX', 'QUUX', 'CLASSY'])); | 
| 98   }); | 95   }); | 
| 99 | 96 | 
| 100   test('listContains', () { | 97   test('listContains', () { | 
| 101     var elements = elementsSetup(); | 98     var elements = elementsSetup(); | 
| 102     expect(elements.classes.contains('classy'), isTrue); | 99     expect(elements.classes.contains('classy'), isTrue); | 
| 103     expect(elements.classes.contains('troll'), isFalse); | 100     expect(elements.classes.contains('troll'), isFalse); | 
| 104   }); | 101   }); | 
| 105 | 102 | 
| 106 |  | 
| 107   test('listAdd', () { | 103   test('listAdd', () { | 
| 108     var elements =  elementsSetup(); | 104     var elements =  elementsSetup(); | 
| 109     var added = elements.classes.add('lassie'); | 105     var added = elements.classes.add('lassie'); | 
| 110     expect(added, isNull); | 106     expect(added, isNull); | 
| 111 | 107 | 
| 112     expect(view(elements.classes), '[classy, foo, lassie, quux, qux, yes]'); | 108     expect(view(elements.classes), '[classy, foo, lassie, quux, qux, yes]'); | 
| 113     expect(view(elements), | 109     expect(view(elements), | 
| 114         '[[foo, lassie, yes], [lassie, quux, qux, yes], ' | 110         '[[foo, lassie, yes], [lassie, quux, qux, yes], ' | 
| 115         '[lassie, qux, yes], [classy, lassie, yes]]'); | 111         '[lassie, qux, yes], [classy, lassie, yes]]'); | 
| 116   }); | 112   }); | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 191     expect(view(elements), | 187     expect(view(elements), | 
| 192         '[[], [quux, qux], [qux], []]'); | 188         '[[], [quux, qux], [qux], []]'); | 
| 193   }); | 189   }); | 
| 194 | 190 | 
| 195   test('listContainsAll', () { | 191   test('listContainsAll', () { | 
| 196     var elements = elementsSetup(); | 192     var elements = elementsSetup(); | 
| 197     expect(elements.classes.containsAll(['qux', 'mornin']), isFalse); | 193     expect(elements.classes.containsAll(['qux', 'mornin']), isFalse); | 
| 198     expect(elements.classes.containsAll(['qux', 'classy']), isTrue); | 194     expect(elements.classes.containsAll(['qux', 'classy']), isTrue); | 
| 199   }); | 195   }); | 
| 200 } | 196 } | 
| OLD | NEW | 
|---|