| // Copyright (c) 2017, 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 E reduce(E combine(E value, E element)) |
| /// Otherwise this method starts with the first element from the iterator, and |
| /// then combines it with the remaining elements in iteration order. |
| /// @description Checks that elements are combined in iteration order. |
| /// @author iarkh@unipro.ru |
| |
| import "../../../Utils/expect.dart"; |
| import "dart:collection"; |
| import "LinkedList.lib.dart"; |
| |
| check(List<String> a, combine, String expected) { |
| LinkedList<MyLinkedListEntry<String>> llist = toLinkedList(a); |
| MyLinkedListEntry<String> combine2( |
| MyLinkedListEntry<String> value, MyLinkedListEntry<String> element) => |
| new MyLinkedListEntry<String>(combine(value.value, element.value)); |
| String actual = llist.reduce(combine2).value; |
| Expect.equals(expected, actual); |
| } |
| |
| main() { |
| check(["1", "2", "-3"], (value, element) => value + element, "12-3"); |
| check(["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"], |
| (value, element) => value + element, "abcdefghijklmn"); |
| check(["test", " ", "me", " ", "now", "!"], |
| (value, element) => value + element, "test me now!"); |
| } |