public void ResetCounter()
        {
            using (var timeProvider = TestTimeProvider.SetDefault())
            {
                var counter = new ResetCounter();
                counter.GetOrAdd(1).Increment();
                counter.GetOrAdd(2).Increment();
                counter.GetOrAdd(1).Increment();

                counter.Update();
                Assert.AreEqual(3, counter.Current);
                Assert.AreEqual(3, counter.Today);
                Assert.AreEqual(3, counter.Total);

                counter.Update();
                Assert.AreEqual(0, counter.Current);
                Assert.AreEqual(3, counter.Today);
                Assert.AreEqual(3, counter.Total);

                counter.Update();
                Assert.AreEqual(0, counter.Current);
                Assert.AreEqual(3, counter.Today);
                Assert.AreEqual(3, counter.Total);

                // New Day
                timeProvider.Now += TimeSpan.FromDays(1);

                counter.Update();
                Assert.AreEqual(0, counter.Current);
                Assert.AreEqual(0, counter.Today);
                Assert.AreEqual(3, counter.Total);

                counter.GetOrAdd(1).Increment();

                counter.Update();
                Assert.AreEqual(1, counter.Current);
                Assert.AreEqual(1, counter.Today);
                Assert.AreEqual(4, counter.Total);

                // New counter value created on the fly
                counter.GetOrAdd(256).Increment();
                counter.GetOrAdd(256).Increment();

                counter.Update();
                Assert.AreEqual(2, counter.Current);
                Assert.AreEqual(3, counter.Today);
                Assert.AreEqual(6, counter.Total);
            }
        }
Beispiel #2
0
 /// <summary>
 /// public constructor
 /// </summary>
 public Reset()
 {
     Body = new ResetCounter();
 }