| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 #library('ElementTest'); | |
| 6 #import('../../lib/unittest/unittest.dart'); | |
| 7 #import('../../lib/unittest/html_config.dart'); | |
| 8 #import('dart:html'); | |
| 9 | |
| 10 main() { | |
| 11 useHtmlConfiguration(); | |
| 12 | |
| 13 Element makeElement() => new Element.tag('div'); | |
| 14 | |
| 15 Element makeElementWithChildren() => | |
| 16 new Element.html("<div><br/><img/><input/></div>"); | |
| 17 | |
| 18 Element makeElementWithClasses() => | |
| 19 new Element.html('<div class="foo bar baz"></div>'); | |
| 20 | |
| 21 Set<String> makeClassSet() => makeElementWithClasses().classes; | |
| 22 | |
| 23 Set<String> extractClasses(Element el) { | |
| 24 final match = new RegExp('class="([^"]+)"').firstMatch(el.outerHTML); | |
| 25 return new Set.from(match[1].split(' ')); | |
| 26 } | |
| 27 | |
| 28 test('affects the "class" attribute', () { | |
| 29 final el = makeElementWithClasses(); | |
| 30 el.classes.add('qux'); | |
| 31 Expect.setEquals(['foo', 'bar', 'baz', 'qux'], extractClasses(el)); | |
| 32 }); | |
| 33 | |
| 34 test('is affected by the "class" attribute', () { | |
| 35 final el = makeElementWithClasses(); | |
| 36 el.attributes['class'] = 'foo qux'; | |
| 37 Expect.setEquals(['foo', 'qux'], el.classes); | |
| 38 }); | |
| 39 | |
| 40 test('classes=', () { | |
| 41 final el = makeElementWithClasses(); | |
| 42 el.classes = ['foo', 'qux']; | |
| 43 Expect.setEquals(['foo', 'qux'], el.classes); | |
| 44 Expect.setEquals(['foo', 'qux'], extractClasses(el)); | |
| 45 }); | |
| 46 | |
| 47 test('toString', () { | |
| 48 Expect.setEquals(['foo', 'bar', 'baz'], | |
| 49 makeClassSet().toString().split(' ')); | |
| 50 Expect.equals('', makeElement().classes.toString()); | |
| 51 }); | |
| 52 | |
| 53 test('forEach', () { | |
| 54 final classes = <String>[]; | |
| 55 // TODO: Change to this when Issue 3484 is fixed. | |
| 56 // makeClassSet().forEach(classes.add); | |
| 57 makeClassSet().forEach((c) => classes.add(c)); | |
| 58 Expect.setEquals(['foo', 'bar', 'baz'], classes); | |
| 59 }); | |
| 60 | |
| 61 test('iterator', () { | |
| 62 final classes = <String>[]; | |
| 63 for (var el in makeClassSet()) { | |
| 64 classes.add(el); | |
| 65 } | |
| 66 Expect.setEquals(['foo', 'bar', 'baz'], classes); | |
| 67 }); | |
| 68 | |
| 69 test('map', () { | |
| 70 Expect.setEquals(['FOO', 'BAR', 'BAZ'], | |
| 71 makeClassSet().map((c) => c.toUpperCase())); | |
| 72 }); | |
| 73 | |
| 74 test('filter', () { | |
| 75 Expect.setEquals(['bar', 'baz'], | |
| 76 makeClassSet().filter((c) => c.contains('a'))); | |
| 77 }); | |
| 78 | |
| 79 test('every', () { | |
| 80 Expect.isTrue(makeClassSet().every((c) => c is String)); | |
| 81 Expect.isFalse( | |
| 82 makeClassSet().every((c) => c.contains('a'))); | |
| 83 }); | |
| 84 | |
| 85 test('some', () { | |
| 86 Expect.isTrue( | |
| 87 makeClassSet().some((c) => c.contains('a'))); | |
| 88 Expect.isFalse(makeClassSet().some((c) => c is num)); | |
| 89 }); | |
| 90 | |
| 91 test('isEmpty', () { | |
| 92 Expect.isFalse(makeClassSet().isEmpty()); | |
| 93 Expect.isTrue(makeElement().classes.isEmpty()); | |
| 94 }); | |
| 95 | |
| 96 test('length', () { | |
| 97 Expect.equals(3, makeClassSet().length); | |
| 98 Expect.equals(0, makeElement().classes.length); | |
| 99 }); | |
| 100 | |
| 101 test('contains', () { | |
| 102 Expect.isTrue(makeClassSet().contains('foo')); | |
| 103 Expect.isFalse(makeClassSet().contains('qux')); | |
| 104 }); | |
| 105 | |
| 106 test('add', () { | |
| 107 final classes = makeClassSet(); | |
| 108 classes.add('qux'); | |
| 109 Expect.setEquals(['foo', 'bar', 'baz', 'qux'], classes); | |
| 110 | |
| 111 classes.add('qux'); | |
| 112 final list = new List.from(classes); | |
| 113 list.sort((a, b) => a.compareTo(b)); | |
| 114 Expect.listEquals(['bar', 'baz', 'foo', 'qux'], list, | |
| 115 "The class set shouldn't have duplicate elements."); | |
| 116 }); | |
| 117 | |
| 118 test('remove', () { | |
| 119 final classes = makeClassSet(); | |
| 120 classes.remove('bar'); | |
| 121 Expect.setEquals(['foo', 'baz'], classes); | |
| 122 classes.remove('qux'); | |
| 123 Expect.setEquals(['foo', 'baz'], classes); | |
| 124 }); | |
| 125 | |
| 126 test('addAll', () { | |
| 127 final classes = makeClassSet(); | |
| 128 classes.addAll(['bar', 'qux', 'bip']); | |
| 129 Expect.setEquals(['foo', 'bar', 'baz', 'qux', 'bip'], classes); | |
| 130 }); | |
| 131 | |
| 132 test('removeAll', () { | |
| 133 final classes = makeClassSet(); | |
| 134 classes.removeAll(['bar', 'baz', 'qux']); | |
| 135 Expect.setEquals(['foo'], classes); | |
| 136 }); | |
| 137 | |
| 138 test('isSubsetOf', () { | |
| 139 final classes = makeClassSet(); | |
| 140 Expect.isTrue(classes.isSubsetOf(['foo', 'bar', 'baz'])); | |
| 141 Expect.isTrue(classes.isSubsetOf(['foo', 'bar', 'baz', 'qux'])); | |
| 142 Expect.isFalse(classes.isSubsetOf(['foo', 'bar', 'qux'])); | |
| 143 }); | |
| 144 | |
| 145 test('containsAll', () { | |
| 146 final classes = makeClassSet(); | |
| 147 Expect.isTrue(classes.containsAll(['foo', 'baz'])); | |
| 148 Expect.isFalse(classes.containsAll(['foo', 'qux'])); | |
| 149 }); | |
| 150 | |
| 151 test('intersection', () { | |
| 152 final classes = makeClassSet(); | |
| 153 Expect.setEquals(['foo', 'baz'], | |
| 154 classes.intersection(['foo', 'qux', 'baz'])); | |
| 155 }); | |
| 156 | |
| 157 test('clear', () { | |
| 158 final classes = makeClassSet(); | |
| 159 classes.clear(); | |
| 160 Expect.setEquals([], classes); | |
| 161 }); | |
| 162 } | |
| OLD | NEW |