Exemplo n.º 1
0
        public void DecrementIfGreaterThan_ShouldDoNothingIfTheConditionFailes()
        {
            int value = 0;

            Assert.That(InterlockedExtensions.DecrementIfGreaterThan(ref value, 0) is null);
            Assert.That(value, Is.EqualTo(0));
        }
Exemplo n.º 2
0
        public void DecrementIfGreaterThan_ShouldWorkParallelly()
        {
            int value = 5000;

            Task[] tasks = Enumerable
                           .Repeat(0, 5)
                           .Select(_ => Task.Run(Decrement))
                           .ToArray();

            Assert.DoesNotThrowAsync(() => Task.WhenAll(tasks));

            Assert.That(value, Is.EqualTo(0));

            void Decrement()
            {
                for (int i = 0; i < 1000; i++)
                {
                    InterlockedExtensions.DecrementIfGreaterThan(ref value, -1);
                }
            }
        }