blob: 9fac11a68b2cb22a91b4c69598eb1a8e1de01c60 [file] [log] [blame]
// 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 E firstWhere(bool test(E element), {E orElse()})
/// Returns the first element that satisfies the given predicate test.
/// Iterates through elements and returns the first to satsify test.
/// If no element satisfies test, the result of invoking the orElse function
/// is returned. If orElse is omitted, it defaults to throwing a StateError.
/// @description Checks that the first element that satisfies the given predicate
/// test is returned
/// @author sgrekhov@unipro.ru
library firstWhere_A04_t01;
import "../../../Utils/expect.dart";
class C {
int val;
C(this.val);
}
test(Iterable create([Iterable content]), {bool isSet: false}) {
C c1 = new C(42);
C c2 = new C(42);
Iterable a = create([c1, c2]);
C found = a.firstWhere((var value) {
if (value is C) {
return value.val == 42;
}
return false;
}, orElse: () => null);
if (isSet) {
// Set may be unordered so the first element that satisfies the test is
// unpredictable. Just test that something is returned
Expect.isNotNull(found);
} else {
if (found != null) {
Expect.identical(c1, found);
Expect.notEquals(c2, found);
}
}
}