| /* |
| * 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 |
| * T fold <T>(T initialValue, T combine(T previousValue, E element)) |
| * Reduces a collection to a single value by iteratively combining each element |
| * of the collection with an existing value |
| * Uses initialValue as the initial value, then iterates through the elements |
| * and updates the value with each element using the combine function, as if by: |
| * |
| * var value = initialValue; |
| * for (E element in this) { |
| * value = combine(value, element); |
| * } |
| * return value; |
| * Example of calculating the sum of an iterable: |
| * iterable.fold(0, (prev, element) => prev + element); |
| * @description Checks that fold is called for each element of this Iterable |
| * @author sgrekhov@unipro.ru |
| */ |
| library fold_A01_t02; |
| import "../../../Utils/expect.dart"; |
| |
| num combine(num previousValue, element) => ++previousValue; |
| |
| check(Iterable a) { |
| num actual = a.fold(0, combine); |
| Expect.equals(a.length, actual); |
| } |
| |
| test(Iterable create([Iterable content])) { |
| check(create([])); |
| check(create([1])); |
| check(create([0, 0, 0])); |
| check(create([1, 2, 3, 4, 5, 6, 7, 8])); |
| } |