/// <summary> /// If <paramref name="duration"/> is finite it is returned after it has been scaled using <see cref="Dilated(TimeSpan)"/>. /// If <paramref name="duration"/> is undefined, it returns the remaining time (if within a `within` block) or the properly dilated /// default from settings (key "akka.test.single-expect-default"). /// If <paramref name="duration"/> is infinite, an <see cref="ArgumentException"/> is thrown. /// <remarks>The returned value is always finite.</remarks> /// </summary> /// <param name="duration">The maximum.</param> /// <returns>A finite <see cref="TimeSpan"/> properly dilated</returns> /// <exception cref="System.ArgumentException">Thrown if <paramref name="duration"/> is infinite</exception> public TimeSpan RemainingOrDilated(TimeSpan? duration) { if(!duration.HasValue) return RemainingOrDefault; if(duration.IsInfinite()) throw new ArgumentException("max duration cannot be infinite"); return Dilated(duration.Value); }
/// <summary> /// Returns the smallest value. /// <remarks>Note! Part of internal API. Breaking changes may occur without notice. Use at own risk.</remarks> /// </summary> public static TimeSpan Min(this TimeSpan a, TimeSpan b) { if(b.IsInfinite()) return a; if(a.IsInfinite()) return b; return a < b ? a : b; }