// Copyright (c) 2013, 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 previousValue, E element))
/// Reduces a collection to a single value by iteratively combining
/// elements of the collection using the provided function.
/// @description Checks that the returned value is correct.
/// @author msyabro

import "../../../Utils/expect.dart";

check(string, expected) {
  var runes = new Runes(string);
  var res = runes.reduce((prev, cur) => prev + cur);
  Expect.equals(expected, res);
}

checkConst(string, expected) {
  var runes = new Runes(string);
  var res = runes.reduce((prev, cur) => 1);
  Expect.equals(expected, res);
}

main() {
  check('\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a', 55);
  check('word', 444);

  checkConst('~~~', 1);
}
