public void When_EqualStartAndEnd_ZeroRates() { var reading = new ParticleReading { Alpha = 1, Beta = 2, Gamma = 3 }; var t1 = new DateTime(2018, 6, 1, 12, 0, 0); var t2 = t1; var mockClock = new Mock <ITimeProvider>(MockBehavior.Strict); mockClock.SetupSequence(x => x.Now).Returns(t1).Returns(t2).Returns(t2); var p = new RadiationCounter(mockClock.Object); p.TakeReading(reading); p.TakeReading(reading); p.TakeReading(reading); var s1 = p.CalcSample(); mockClock.Verify(); mockClock.VerifyGet(x => x.Now, Times.Exactly(3)); // First reading covered 2 seconds Assert.AreEqual(3, s1.Samples); Assert.AreEqual(0.0, s1.Alpha, DblDelta); Assert.AreEqual(0.0, s1.Beta, DblDelta); Assert.AreEqual(0.0, s1.Gamma, DblDelta); }
public void When_NoReadings_CorrectZeroRates() { var t1 = new DateTime(2018, 6, 1, 12, 0, 0); var t2 = t1.AddSeconds(2.0); var t3 = t2; var t4 = t3.AddSeconds(4.0); var mockClock = new Mock <ITimeProvider>(MockBehavior.Strict); mockClock.SetupSequence(x => x.Now).Returns(t1).Returns(t2).Returns(t3).Returns(t4).Returns(t4); var p = new RadiationCounter(mockClock.Object); var s1 = p.CalcSample(); var s2 = p.CalcSample(); mockClock.Verify(); mockClock.VerifyGet(x => x.Now, Times.Exactly(5)); // First reading covered 2 seconds Assert.AreEqual(0, s1.Samples); Assert.AreEqual(0.0, s1.Alpha, DblDelta); Assert.AreEqual(0.0, s1.Beta, DblDelta); Assert.AreEqual(0.0, s1.Gamma, DblDelta); // Second reading covered 4 seconds Assert.AreEqual(0, s2.Samples); Assert.AreEqual(0.0, s2.Alpha, DblDelta); Assert.AreEqual(0.0, s2.Beta, DblDelta); Assert.AreEqual(0.0, s2.Gamma, DblDelta); }