using StellaOps.AirGap.Time.Models; using StellaOps.AirGap.Time.Services; namespace StellaOps.AirGap.Time.Tests; public class StalenessCalculatorTests { [Fact] public void UnknownWhenNoAnchor() { var calc = new StalenessCalculator(); var result = calc.Evaluate(TimeAnchor.Unknown, StalenessBudget.Default, DateTimeOffset.UnixEpoch); Assert.False(result.IsWarning); Assert.False(result.IsBreach); } [Fact] public void BreachWhenBeyondBudget() { var anchor = new TimeAnchor(DateTimeOffset.UnixEpoch, "source", "fmt", "fp", "digest"); var budget = new StalenessBudget(10, 20); var calc = new StalenessCalculator(); var result = calc.Evaluate(anchor, budget, DateTimeOffset.UnixEpoch.AddSeconds(25)); Assert.True(result.IsBreach); Assert.True(result.IsWarning); Assert.Equal(25, result.AgeSeconds); } [Fact] public void WarningWhenBetweenWarningAndBreach() { var anchor = new TimeAnchor(DateTimeOffset.UnixEpoch, "source", "fmt", "fp", "digest"); var budget = new StalenessBudget(10, 20); var calc = new StalenessCalculator(); var result = calc.Evaluate(anchor, budget, DateTimeOffset.UnixEpoch.AddSeconds(15)); Assert.True(result.IsWarning); Assert.False(result.IsBreach); } }