blob: 844f69f71dad7d72328ab95ef2378413a38ee467 [file] [log] [blame]
// Copyright (c) 2011, 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 Future<S> fold<S>(S initialValue, S combine(S previous, T element))
/// Reduces a sequence of values by repeatedly applying combine.
/// @description Checks that the result is correct.
/// @author kaigorodov
library fold_A01_t01;
import "dart:async";
import "../../../Utils/expect.dart";
void check<T,S>(Stream<T> s, S initialValue, S combine(S previous, T element),
S expected) {
AsyncExpect.value(expected, s.fold(initialValue, combine));
}
void test(CreateStreamFunction create) {
check(create([1, 2, 3, 4]), 0,
(int previous, int element) => previous + element, 10);
check(create([1, 2, 3, 4]), 1,
(int previous, int element) => previous * element, 24);
}