public void Combine_calculations_cross_verification() { // Assign TimeSpan[] samples1 = { TimeSpan.FromMilliseconds(310), TimeSpan.FromMilliseconds(300), TimeSpan.FromMilliseconds(350), TimeSpan.FromMilliseconds(330), }; TimeSpan[] samples2 = { TimeSpan.FromMilliseconds(315), TimeSpan.FromMilliseconds(290), TimeSpan.FromMilliseconds(325), }; var emptyStats = new TimeStats(); var stats1 = CreateStats(samples1); var stats2 = CreateStats(samples2); var common = CreateStats(samples1.Concat(samples2).ToArray()); // Act var combined = emptyStats + stats1 + stats2 + emptyStats; // Assert combined.ShouldBeEquivalentTo(common); }
public void Combine(TimeStats that) { if (that.SamplesCount == 0) { return; } if (this.SamplesCount == 0) { this.Max = that.Max; this.Min = that.Min; this.Avg = that.Avg; this.SamplesCount = that.SamplesCount; } else { var totalSamplesCount = this.SamplesCount + that.SamplesCount; this.Max = TimeSpan.FromTicks(Math.Max(this.Max.Ticks, that.Max.Ticks)); this.Min = TimeSpan.FromTicks(Math.Min(this.Min.Ticks, that.Min.Ticks)); this.Avg = TimeSpan.FromTicks((long) (this.Avg.Ticks * ((double)this.SamplesCount / totalSamplesCount) + that.Avg.Ticks * ((double)that.SamplesCount / totalSamplesCount)) ); this.SamplesCount = totalSamplesCount; } }
public static TimeStats operator +(TimeStats stats1, TimeStats stats2) { var combinedStats = new TimeStats(); combinedStats.Combine(stats1); combinedStats.Combine(stats2); return combinedStats; }
public static TimeStats operator+(TimeStats stats1, TimeStats stats2) { var combinedStats = new TimeStats(); combinedStats.Combine(stats1); combinedStats.Combine(stats2); return(combinedStats); }
static TimeStats CreateStats(params TimeSpan[] samples) { var stats = new TimeStats(); foreach (var sample in samples) { stats.AddSample(sample); } return stats; }
static TimeStats CreateStats(params TimeSpan[] samples) { var stats = new TimeStats(); foreach (var sample in samples) { stats.AddSample(sample); } return(stats); }