| 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 |