public void When_ZeroCounts_Expect_CorrectPerSecondRates() { var t1 = new DateTime(2018, 6, 1, 12, 0, 0); var t2 = t1.AddSeconds(2.0); var mockClock = new Mock <ITimeProvider>(MockBehavior.Strict); mockClock.SetupSequence(x => x.Now).Returns(t1).Returns(t2); var p = new ParticleAccumulator(mockClock.Object); p.TakeReading(new ParticleReading { Alpha = 0, Beta = 0, Gamma = 0 }); p.TakeReading(new ParticleReading { Alpha = 0, Beta = 0, Gamma = 0 }); p.TakeReading(new ParticleReading { Alpha = 0, Beta = 0, Gamma = 0 }); var s = p.CalcSample(); mockClock.Verify(); mockClock.VerifyGet(x => x.Now, Times.Exactly(2)); Assert.AreEqual(3, s.Samples); Assert.AreEqual(0.0, s.Alpha, DblDelta); Assert.AreEqual(0.0, s.Beta, DblDelta); Assert.AreEqual(0.0, s.Gamma, DblDelta); }
public void When_MissingSomeReadings_Expect_DefaultToZero() { var t1 = new DateTime(2018, 6, 1, 12, 0, 0); var t2 = t1.AddSeconds(1.0); var mockClock = new Mock <ITimeProvider>(MockBehavior.Strict); mockClock.SetupSequence(x => x.Now).Returns(t1).Returns(t2); var reading = new ParticleReading { Alpha = 10, Beta = null, Gamma = null }; var p = new ParticleAccumulator(mockClock.Object); p.TakeReading(reading); var s = p.CalcSample(); Assert.Throws <InvalidOperationException>(() => p.CalcSample()); Assert.Throws <InvalidOperationException>(() => p.TakeReading(reading)); mockClock.Verify(); mockClock.VerifyGet(x => x.Now, Times.Exactly(2)); Assert.AreEqual(1, s.Samples); Assert.AreEqual(10.0, s.Alpha, DblDelta); Assert.AreEqual(0, s.Beta, DblDelta); Assert.AreEqual(0, s.Gamma, DblDelta); }