namespace Flaro.Api.Tests;
/// Eine Uhr, die man weiterstellt, statt zu warten.
///
///
/// Weil manche Regeln an der verstrichenen Zeit hängen. Das
/// Sehprotokoll deckelt den Zuwachs auf die Zeit zwischen zwei Meldungen —
/// zwei Minuten Film lassen sich nicht in fünf Millisekunden sehen, und das
/// ist richtig so. Prüfen lässt es sich damit nur, wenn der Test die Zeit
/// vergehen lassen kann, ohne sie zu verbringen.
///
/// Nur vorwärts: eine Uhr, die zurückläuft, prüft nichts, was vorkommt.
///
public sealed class Stelluhr(DateTimeOffset start) : TimeProvider
{
private DateTimeOffset _jetzt = start;
public override DateTimeOffset GetUtcNow() => _jetzt;
/// Lässt Zeit vergehen.
public void Weiter(TimeSpan spanne)
{
if (spanne < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(spanne));
_jetzt += spanne;
}
}