예제 #1
0
        public void Increment_Increments()
        {
            var counter = new InterlockingLongCounter();

            counter.Increment();
            Assert.Equal(1, counter.Get());
        }
예제 #2
0
        public void Increment_Increments()
        {
            // Arrange

            var counter = new InterlockingLongCounter();

            // Act

            counter.Increment();

            // Assert

            Assert.Equal(1, counter.Get());
        }
예제 #3
0
        public void Stress_Increment_RetainsAccuracy()
        {
            const int iterations = 100000;
            var       counter    = new InterlockingLongCounter();
            var       tasks      = new List <Task>();

            for (var i = 0; i < iterations; i++)
            {
                var task = Task.Run(() => counter.Increment());
                tasks.Add(task);
            }

            Task.WaitAll(tasks.ToArray());
            Assert.Equal(iterations, counter.Get());
        }