// 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.

// @dart = 2.9

/// @assertion Stream timeout(Duration timeLimit,
///                           {void onTimeout(EventSink sink)})
/// Creates a new stream with the same events as this stream.
///
/// If onTimeout is omitted, a timeout will just put a TimeoutException into the
/// error channel of the returned stream.
///
/// @description Check that if onTimeout is omitted, then [timeout] will just
/// put a TimeoutException into the error channel of the returned stream.
/// @author ngl@unipro.ru

library timeout_A03_t01;
import "dart:async";
import "../../../Utils/expect.dart";

void test(CreateStreamFunction create) {
  int count = 0;
  Stream s1 = create(["a", "b", "c"]);
  Stream s2 = s1.asyncMap((x) => new Future.delayed(durationMs(100), () => x));
  Stream s3 = s2.timeout(durationMs(10));
  List actual = [];
  asyncStart();
  s3.listen(
      (event) {
        actual.add(event);
      },
      onError: (error) {
        Expect.isTrue(error is TimeoutException);
        actual.add(count++);
      },
      onDone: () {
        Expect.listEquals([0, "a", 1, "b", 2, "c"], actual);
        asyncEnd();
      }
  );
}
