Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Side by Side Diff: tests/lib/async/timer_test.dart

Issue 12855003: Add safetymargin for timer tests in browsers. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library timer_test; 5 library timer_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import '../../../pkg/unittest/lib/unittest.dart'; 8 import '../../../pkg/unittest/lib/unittest.dart';
9 9
10 const int STARTTIMEOUT = 1050; 10 const int STARTTIMEOUT = 1050;
11 const int DECREASE = 200; 11 const int DECREASE = 200;
12 const int ITERATIONS = 5; 12 const int ITERATIONS = 5;
13 13
14 int startTime; 14 int startTime;
15 int timeout; 15 int timeout;
16 int iteration; 16 int iteration;
17 17
18 // Easy way to know if the test is compiled by dart2js.
19 bool get isCompiledByDart2Js => identical(1, 1.0);
20
18 void timeoutHandler() { 21 void timeoutHandler() {
19 int endTime = (new DateTime.now()).millisecondsSinceEpoch; 22 int endTime = (new DateTime.now()).millisecondsSinceEpoch;
20 expect(endTime - startTime, greaterThanOrEqualTo(timeout)); 23 // Some browsers (Firefox and IE so far) can trigger too early. Add a safety
24 // margin.
25 int safetyMargin = isCompiledByDart2Js ? 100 : 0;
26 expect(endTime - startTime + safetyMargin, greaterThanOrEqualTo(timeout));
21 if (iteration < ITERATIONS) { 27 if (iteration < ITERATIONS) {
22 iteration++; 28 iteration++;
23 timeout = timeout - DECREASE; 29 timeout = timeout - DECREASE;
24 Duration duration = new Duration(milliseconds: timeout); 30 Duration duration = new Duration(milliseconds: timeout);
25 startTime = (new DateTime.now()).millisecondsSinceEpoch; 31 startTime = (new DateTime.now()).millisecondsSinceEpoch;
26 new Timer(duration, expectAsync0(timeoutHandler)); 32 new Timer(duration, expectAsync0(timeoutHandler));
27 } 33 }
28 } 34 }
29 35
30 main() { 36 main() {
31 test("timeout test", () { 37 test("timeout test", () {
32 iteration = 0; 38 iteration = 0;
33 timeout = STARTTIMEOUT; 39 timeout = STARTTIMEOUT;
34 Duration duration = new Duration(milliseconds: timeout); 40 Duration duration = new Duration(milliseconds: timeout);
35 startTime = (new DateTime.now()).millisecondsSinceEpoch; 41 startTime = (new DateTime.now()).millisecondsSinceEpoch;
36 new Timer(duration, expectAsync0(timeoutHandler)); 42 new Timer(duration, expectAsync0(timeoutHandler));
37 }); 43 });
38 } 44 }
OLDNEW
« tests/lib/async/multiple_timer_test.dart ('K') | « tests/lib/async/multiple_timer_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698