| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
| 6 import 'dart:collection'; | 6 import 'dart:collection'; |
| 7 import 'package:compiler/src/util/setlet.dart'; | 7 import 'package:compiler/src/util/setlet.dart'; |
| 8 | 8 |
| 9 main() { | 9 main() { |
| 10 for (int i = 1; i <= 32; i++) { | 10 for (int i = 1; i <= 32; i++) { |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 | 68 |
| 69 Expect.equals(size, setlet.length); | 69 Expect.equals(size, setlet.length); |
| 70 Expect.isTrue(setlet.contains(i)); | 70 Expect.isTrue(setlet.contains(i)); |
| 71 } | 71 } |
| 72 } | 72 } |
| 73 | 73 |
| 74 testAllLikeSet() { | 74 testAllLikeSet() { |
| 75 // For a variety of inputs and operations, test that Setlet behaves just like | 75 // For a variety of inputs and operations, test that Setlet behaves just like |
| 76 // Set. | 76 // Set. |
| 77 var samples = [ | 77 var samples = [ |
| 78 [], [1], [1, 2], [2, 1], [1, 3], [3, 1], [1, 2, 3], [3, 1, 2], | 78 [], |
| 79 [1, 2, 3, 4, 5, 6, 7], | 79 [1], |
| 80 [1, 2, 3, 4, 5, 6, 7, 8, 9], | 80 [1, 2], |
| 81 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], | 81 [2, 1], |
| 82 [1, 2, 3, 4, 5, 6, 7, 8, 9], | 82 [1, 3], |
| 83 [6, 7, 8, 9, 10, 11], | 83 [3, 1], |
| 84 [7, 8, 6, 5], | 84 [1, 2, 3], |
| 85 [3, 1, 2], |
| 86 [1, 2, 3, 4, 5, 6, 7], |
| 87 [1, 2, 3, 4, 5, 6, 7, 8, 9], |
| 88 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], |
| 89 [1, 2, 3, 4, 5, 6, 7, 8, 9], |
| 90 [6, 7, 8, 9, 10, 11], |
| 91 [7, 8, 6, 5], |
| 85 ]; | 92 ]; |
| 86 | 93 |
| 87 for (var a in samples) { | 94 for (var a in samples) { |
| 88 for (var b in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) { | 95 for (var b in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) { |
| 89 testSetXElement('add', (s, e) => s.add(e), a, b); | 96 testSetXElement('add', (s, e) => s.add(e), a, b); |
| 90 testSetXElement('remove', (s, e) => s.remove(e), a, b); | 97 testSetXElement('remove', (s, e) => s.remove(e), a, b); |
| 91 testSetXElement('contains', (s, e) => s.contains(e), a, b); | 98 testSetXElement('contains', (s, e) => s.contains(e), a, b); |
| 92 testSetXElement('lookup', (s, e) => s.lookup(e), a, b); | 99 testSetXElement('lookup', (s, e) => s.lookup(e), a, b); |
| 93 } | 100 } |
| 94 } | 101 } |
| 95 | 102 |
| 96 for (var a in samples) { | 103 for (var a in samples) { |
| 97 for (var b in samples) { | 104 for (var b in samples) { |
| 98 testSetXSet('addAll', (s, t) => s.addAll(t), a, b); | 105 testSetXSet('addAll', (s, t) => s.addAll(t), a, b); |
| 99 testSetXSet('removeAll', (s, t) => s.removeAll(t), a, b); | 106 testSetXSet('removeAll', (s, t) => s.removeAll(t), a, b); |
| 100 testSetXSet('retainAll', (s, t) => s.retainAll(t), a, b); | 107 testSetXSet('retainAll', (s, t) => s.retainAll(t), a, b); |
| 101 testSetXSet('containsAll', (s, t) => s.containsAll(t), a, b); | 108 testSetXSet('containsAll', (s, t) => s.containsAll(t), a, b); |
| 102 testSetXSet('union', (s, t) => s.union(t), a, b); | 109 testSetXSet('union', (s, t) => s.union(t), a, b); |
| 103 testSetXSet('intersection', (s, t) => s.intersection(t), a, b); | 110 testSetXSet('intersection', (s, t) => s.intersection(t), a, b); |
| 104 testSetXSet('difference', (s, t) => s.difference(t), a, b); | 111 testSetXSet('difference', (s, t) => s.difference(t), a, b); |
| 105 } | 112 } |
| 106 } | 113 } |
| 107 } | 114 } |
| 108 | 115 |
| 109 | |
| 110 testSetXElement(name, fn, a, b) { | 116 testSetXElement(name, fn, a, b) { |
| 111 var set1 = new LinkedHashSet.from(a); | 117 var set1 = new LinkedHashSet.from(a); |
| 112 var setlet1 = new Setlet.from(a); | 118 var setlet1 = new Setlet.from(a); |
| 113 | 119 |
| 114 var setResult = fn(set1, b); | 120 var setResult = fn(set1, b); |
| 115 var setletResult = fn(setlet1, b); | 121 var setletResult = fn(setlet1, b); |
| 116 | 122 |
| 117 var operationName = '$name $a $b'; | 123 var operationName = '$name $a $b'; |
| 118 checkResult(operationName, setResult, setletResult); | 124 checkResult(operationName, setResult, setletResult); |
| 119 checkModifications(operationName, set1, setlet1); | 125 checkModifications(operationName, set1, setlet1); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 130 | 136 |
| 131 var operationName = '$name $a $b'; | 137 var operationName = '$name $a $b'; |
| 132 checkResult(operationName, setResult, setletResult); | 138 checkResult(operationName, setResult, setletResult); |
| 133 checkModifications(operationName, set1, setlet1); | 139 checkModifications(operationName, set1, setlet1); |
| 134 } | 140 } |
| 135 | 141 |
| 136 checkResult(operationName, setResult, setletResult) { | 142 checkResult(operationName, setResult, setletResult) { |
| 137 if (setResult == null || setResult is bool || setResult is num) { | 143 if (setResult == null || setResult is bool || setResult is num) { |
| 138 Expect.equals(setResult, setletResult, '$operationName'); | 144 Expect.equals(setResult, setletResult, '$operationName'); |
| 139 } else if (setResult is Iterable) { | 145 } else if (setResult is Iterable) { |
| 140 Expect.isTrue(setletResult is Iterable, | 146 Expect.isTrue(setletResult is Iterable, '$operationName: returns Iterable'); |
| 141 '$operationName: returns Iterable'); | |
| 142 Expect.equals(setResult.isEmpty, setletResult.isEmpty, | 147 Expect.equals(setResult.isEmpty, setletResult.isEmpty, |
| 143 '$operationName: same isEmpty'); | 148 '$operationName: same isEmpty'); |
| 144 Expect.equals(setResult.length, setletResult.length, | 149 Expect.equals( |
| 145 '$operationName: same length'); | 150 setResult.length, setletResult.length, '$operationName: same length'); |
| 146 Expect.listEquals(setResult.toList(), setletResult.toList(), | 151 Expect.listEquals(setResult.toList(), setletResult.toList(), |
| 147 '$operationName: same toList() result'); | 152 '$operationName: same toList() result'); |
| 148 } else { | 153 } else { |
| 149 Expect.isFalse(true, '$operationName: unexpected result type'); | 154 Expect.isFalse(true, '$operationName: unexpected result type'); |
| 150 } | 155 } |
| 151 } | 156 } |
| 152 | 157 |
| 153 checkModifications(operationName, setReceiver, setletReceiver) { | 158 checkModifications(operationName, setReceiver, setletReceiver) { |
| 154 Expect.equals(setReceiver.length, setletReceiver.length, | 159 Expect.equals(setReceiver.length, setletReceiver.length, |
| 155 '$operationName: same post-operation receiver length'); | 160 '$operationName: same post-operation receiver length'); |
| 156 Expect.listEquals(setReceiver.toList(), setletReceiver.toList(), | 161 Expect.listEquals(setReceiver.toList(), setletReceiver.toList(), |
| 157 '$operationName: same post-operation receiver contents'); | 162 '$operationName: same post-operation receiver contents'); |
| 158 } | 163 } |
| OLD | NEW |