|  | // 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. | 
|  |  | 
|  | // @dart = 2.9 | 
|  |  | 
|  | // Test merging streams. | 
|  | library dart.test.stream_from_iterable; | 
|  |  | 
|  | import 'dart:async'; | 
|  |  | 
|  | import 'package:async_helper/async_minitest.dart'; | 
|  |  | 
|  | // The stopwatch is more precise than the Timer. | 
|  | // Some browsers (Firefox and IE so far) can trigger too early. So we add more | 
|  | // margin. We use identical(1, 1.0) as an easy way to know if the test is | 
|  | // compiled by dart2js. | 
|  | int get safetyMargin => identical(1, 1.0) ? 5 : 0; | 
|  |  | 
|  | main() { | 
|  | test("stream-periodic3", () { | 
|  | Stopwatch watch = new Stopwatch()..start(); | 
|  | Stream stream = | 
|  | new Stream.periodic(const Duration(milliseconds: 1), (x) => x); | 
|  | stream.take(10).listen((_) {}, onDone: expectAsync(() { | 
|  | int millis = watch.elapsedMilliseconds + safetyMargin; | 
|  | expect(millis, greaterThanOrEqualTo(10)); | 
|  | })); | 
|  | }); | 
|  | } |