| // 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 Stream<T> skipWhile(bool test(T element)) |
| /// Skip data events from this stream while they are matched by [test]. |
| /// ... |
| /// The test fails when called with a data event |
| /// if it returns a non-`true` value or if the call to `test` throws. |
| /// If the call throws, the error is emitted as an error event |
| /// on the returned stream instead of the data event, |
| /// otherwise the event that made `test` return non-true is emitted as the |
| /// first data event. |
| /// @description Checks that if [test] throws an error, then the error is |
| /// emitted as an error event on the returned stream and it is considered as |
| /// [test] failure. |
| /// @author a.semenov@unipro.ru |
| |
| library skipWhile_A04_t01; |
| import "../../../Utils/expect.dart"; |
| |
| void test(CreateStreamFunction create) { |
| AsyncExpect.data([], create([]).skipWhile((e) => throw "a")); |
| AsyncExpect.events([2, 3], ["b"], create([1, 2, 3]).skipWhile((e) => throw "b")); |
| AsyncExpect.events( |
| [2, 3], // expected data |
| ["c"], // expected errors |
| create([-1, -2, -3, 1, 2, 3]).skipWhile( |
| (element) { |
| if (element > 0) { |
| throw "c"; |
| }; |
| return true; |
| } |
| ) |
| ); |
| } |