Пример #1
0
        public async Task OnlyCallsMethodOncePerComplexObject()
        {
            var testCounter = new TestCounter();

            var complexObject1 = new ComplexObjectTest()
            {
                Age = new DateTime(2018, 5, 2),
                Name = "Devedse",
                Timer = 600
            };

            var complexObject2 = new ComplexObjectTest()
            {
                Age = new DateTime(2018, 5, 2),
                Name = "Devedse",
                Timer = 601
            };

            var lss = new LineStateSaver();
            await lss.Save(() => testCounter.ComplexCallAsync(complexObject1));
            await lss.Save(() => testCounter.ComplexCallAsync(complexObject1));
            await lss.Save(() => testCounter.ComplexCallAsync(complexObject2));
            await lss.Save(() => testCounter.ComplexCallAsync(complexObject1));
            await lss.Save(() => testCounter.ComplexCallAsync(complexObject1, complexObject2));
            await lss.Save(() => testCounter.ComplexUnrelatedCallAsync(complexObject2));

            Assert.Equal(2, testCounter.CallCount);
            Assert.Equal(1, testCounter.DoubleParametersCallCount);
            Assert.Equal(1, testCounter.ComplexUnrelatedCallCount);
        }