| // Copyright 2014 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| /// A class for making time based operations testable. | |
| class SystemClock { | |
| /// A const constructor to allow subclasses to be const. | |
| const SystemClock(); | |
| /// Create a clock with a fixed current time. | |
| const factory SystemClock.fixed(DateTime time) = _FixedTimeClock; | |
| /// Retrieve the current time. | |
| DateTime now() => DateTime.now(); | |
| /// Compute the time a given duration ago. | |
| DateTime ago(Duration duration) { | |
| return now().subtract(duration); | |
| } | |
| } | |
| class _FixedTimeClock extends SystemClock { | |
| const _FixedTimeClock(this._fixedTime); | |
| final DateTime _fixedTime; | |
| @override | |
| DateTime now() => _fixedTime; | |
| } |