blob: eeeb21bcb37dd210627de83154ddcc972dac4625 [file] [log] [blame]
// 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 Iterable<E> takeWhile(bool test(E value))
/// Returns a lazy iterable of the leading elements satisfying test.
/// @description Checks that an iterable of the leading elements satisfying test
/// is returned.
/// @author ngl@unipro.ru
import "dart:typed_data";
import "../../../Utils/expect.dart";
Float64x2 f64x2(v) => new Float64x2.splat(v);
check(List<Float64x2> list, bool test(Float64x2 e)) {
var l = new Float64x2List.fromList(list);
var res = l.takeWhile(test);
var it = res.iterator;
var counter1 = 0;
while (it.moveNext()) {
Expect.equals(l[counter1].x, res.elementAt(counter1).x);
Expect.equals(l[counter1].y, res.elementAt(counter1).y);
counter1++;
}
var counter2 = 0;
Expect.equals(counter1, res.length);
for (int i = counter1; i < l.length; ++i) {
counter2++;
}
Expect.equals(counter1 + counter2, l.length);
}
main() {
List<Float64x2> list = [
f64x2(1.0), f64x2(2.0), f64x2(3.0), f64x2(4.0), f64x2(5.0), f64x2(6.0)
];
check(list, (e) => e.x == 1.0);
check(list, (e) => true);
check(list, (e) => false);
check(list, (e) => e.x < 3.0);
check(list, (e) => e.x == 3.0);
check(list, (e) => e.x > 3.0);
}