commit | f27c58b2c9657d3138dfb9a77c2fa3802812d7fc | [log] [tgz] |
---|---|---|
author | Natalie Weizenbaum <nweiz@google.com> | Tue Mar 06 15:26:35 2018 -0800 |
committer | Natalie Weizenbaum <nweiz@google.com> | Tue Mar 06 15:26:35 2018 -0800 |
tree | 33ece590d7eb4832bf048a6612cf8c807c2dae46 | |
parent | def5c7476e080e0c43550176e5825c1334121227 [diff] |
Move the implementation of Clock to its own file
This package provides a Clock
class which encapsulates the notion of the “current time” and provides easy access to points relative to the current time. Different Clock
s can have a different notion of the current time, and the default top-level clock
's notion can be swapped out to reliably test timing-dependent code.
For example, you can use clock
in your libraries like this:
// run_with_timing.dart import 'package:clock/clock.dart'; /// Runs [callback] and prints how long it took. T runWithTiming<T>(T callback()) { var stopwatch = clock.getStopwatch()..start(); var result = callback(); print("It took ${stopwatch.elapsed}!"); return result; }
...and then test your code using the fake_async
package, which automatically overrides the current clock:
// run_with_timing_test.dart import 'run_with_timing.dart'; import 'package:fake_async/fake_async.dart'; import 'package:test/test.dart'; void main() { test("runWithTiming() prints the elapsed time", () { new FakeAsync().run((async) { expect(() { runWithTiming(() { async.elapse(new Duration(seconds: 10)); }); }, prints("It took 0:00:10.000000!")); }); }); }