void TestTimeSource(TimeSource source, DateTime expected, DateTimeKind kind) { Assert.IsType(typeof(FastLocalTimeSource), TimeSource.Current); TimeSource.Current = source; Assert.Same(source, TimeSource.Current); var evt = new LogEventInfo(LogLevel.Info, "logger", "msg"); Assert.Equal(kind, evt.TimeStamp.Kind); Assert.True((expected - evt.TimeStamp).Duration() < TimeSpan.FromSeconds(5)); Assert.True((source.Time - source.FromSystemTime(DateTime.UtcNow)).Duration() < TimeSpan.FromSeconds(5)); LogEventInfo evt2; do { evt2 = new LogEventInfo(LogLevel.Info, "logger", "msg"); } while (evt.TimeStamp == evt2.TimeStamp); Assert.Equal(kind, evt2.TimeStamp.Kind); Assert.True(evt2.TimeStamp > evt.TimeStamp); Assert.True(evt2.TimeStamp - evt.TimeStamp <= TimeSpan.FromSeconds(1)); }