blob: a82c60e5a796114946b6d9e36a24cf7863ac167c [file] [log] [blame]
// 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 Iterable expand(Iterable f(E element))
* Expand each element of this Iterable into zero or more elements.
* The resulting Iterable will run through the elements returned
* by f for each element of this, in order.
* @description Checks that the returned [Iterable] contains correct elements
* and has the correct length.
* @author msyabro
*/
import "../../../Utils/expect.dart";
check(string) {
var runes = new Runes(string);
var res = runes.expand( (element) => [element*2]);
Expect.equals(runes.length, res.length);
for(int i = 0; i < runes.length; ++i) {
Expect.equals(runes.elementAt(i) * 2, res.elementAt(i));
}
res = runes.expand( (element) => [element, element + 1]);
Expect.equals(runes.length * 2, res.length);
for(int i = 0; i < runes.length; ++i) {
Expect.equals(runes.elementAt(i), res.elementAt(2*i));
Expect.equals(runes.elementAt(i) + 1, res.elementAt(2*i + 1));
}
res = runes.expand( (element) => [] );
Expect.equals(0, res.length);
}
main() {
check('');
check('a');
check('string string');
}