| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// @assertion SplayTreeMap.fromIterable(Iterable iterable, |
| /// {K key(element), V value(element), int compare(K key1, K key2), |
| /// bool isValidKey(potentialKey)}) |
| /// For each element of the [iterable] this constructor computes a key/value |
| /// pair, by applying [key] and [value] respectively. |
| /// @description Checks that for each element of the iterable this constructor |
| /// computes a key/value pair, by applying [key] and [value] respectively |
| /// @author sgrekhov@unipro.ru |
| |
| import "dart:collection"; |
| import "../../../Utils/expect.dart"; |
| |
| check(Iterable expectedKeys, Iterable expectedValues, Map m2) { |
| Expect.equals(expectedKeys.length, m2.length); |
| for (int i = 0; i < expectedKeys.length; i++) { |
| Expect.isTrue(m2.containsKey(expectedKeys.elementAt(i))); |
| Expect.equals(expectedValues.elementAt(i), m2[expectedKeys.elementAt(i)]); |
| } |
| } |
| |
| int getKey(var element) => element * 2; |
| String getValue(var element) => "value=" + element.toString(); |
| |
| main() { |
| SplayTreeMap map = new SplayTreeMap.fromIterable([], |
| key: getKey, value: getValue); |
| check([], [], map); |
| |
| map = new SplayTreeMap.fromIterable([1, 2, 3, 4], |
| key: getKey, value: getValue); |
| check([2, 4, 6, 8], ["value=1", "value=2", "value=3", "value=4"], map); |
| } |