Пример #1
0
        public void ApplyAsyncSequenceOfReferenceTypeTaskReturnValuesArrangement()
        {
            // Given
            var value1    = new object();
            var value2    = new object();
            var value3    = new object();
            var signature = typeof(IFooGenericTaskReferenceTypeParameterless)
                            .GetMethod(nameof(IFooGenericTaskReferenceTypeParameterless.MethodWithoutParameterAsync)) ?? throw new InvalidOperationException();
            var asyncFeature = new AsyncGenericTaskInvocation <object?>();
            var invocation   = new Invocation(signature, asyncFeature);
            var arrangment   = new ReturnValueSequenceArrangement <Task <object?> >(signature, new List <Task <object?> >(new[]
            {
                Task.FromResult <object?>(value1),
                Task.FromResult <object?>(value2),
                Task.FromResult <object?>(value3)
            }));

            // When
            var feature = invocation.GetFeature <IAsyncInvocation <Task <object?> > >();

            arrangment.ApplyTo(invocation);
            var first = feature.AsyncReturnValue;

            arrangment.ApplyTo(invocation);
            var second = feature.AsyncReturnValue;

            arrangment.ApplyTo(invocation);
            var third = feature.AsyncReturnValue;

            arrangment.ApplyTo(invocation);
            var fourth = feature.AsyncReturnValue;

            // Then
            Assert.NotNull(first);
            Assert.IsAssignableFrom <Task <object?> >(first);
            Assert.Equal(value1, first.Result);
            Assert.NotNull(second);
            Assert.IsAssignableFrom <Task <object?> >(second);
            Assert.Equal(value2, second.Result);
            Assert.NotNull(third);
            Assert.IsAssignableFrom <Task <object?> >(third);
            Assert.Equal(value3, third.Result);
            Assert.NotNull(fourth);
            Assert.IsAssignableFrom <Task <object?> >(fourth);
            Assert.Equal(value3, fourth.Result);
        }
Пример #2
0
        public void ApplyAsyncSequenceOfValueTypeReturnValuesArrangement()
        {
            // Given
            var signature = typeof(IFooGenericTaskValueTypeParameterless)
                            .GetMethod(nameof(IFooGenericTaskValueTypeParameterless.MethodWithoutParameterAsync)) ?? throw new InvalidOperationException();
            var asyncFeature = new AsyncGenericTaskInvocation <int>();
            var invocation   = new Invocation(signature, asyncFeature);
            var arrangment   = new ReturnValueSequenceArrangement <int>(signature, new List <int>(new[] { 13, 42, 65 }));

            // When
            var feature = invocation.GetFeature <IAsyncInvocation <Task <int> > >();

            arrangment.ApplyTo(invocation);
            var first = feature.AsyncReturnValue;

            arrangment.ApplyTo(invocation);
            var second = feature.AsyncReturnValue;

            arrangment.ApplyTo(invocation);
            var third = feature.AsyncReturnValue;

            arrangment.ApplyTo(invocation);
            var fourth = feature.AsyncReturnValue;

            // Then
            Assert.NotNull(first);
            Assert.IsAssignableFrom <Task <int> >(first);
            Assert.Equal(13, first.Result);
            Assert.NotNull(second);
            Assert.IsAssignableFrom <Task <int> >(second);
            Assert.Equal(42, second.Result);
            Assert.NotNull(third);
            Assert.IsAssignableFrom <Task <int> >(third);
            Assert.Equal(65, third.Result);
            Assert.NotNull(fourth);
            Assert.IsAssignableFrom <Task <int> >(fourth);
            Assert.Equal(65, fourth.Result);
        }
        public void ApplyAsyncValueTypeTaskReturnValueArrangement()
        {
            // Given
            var signature = typeof(IFooGenericTaskValueTypeParameterless)
                            .GetMethod(nameof(IFooGenericTaskValueTypeParameterless.MethodWithoutParameterAsync)) ?? throw new InvalidOperationException();
            var asyncFeature = new AsyncGenericTaskInvocation <int>();
            var invocation   = new Invocation(signature, asyncFeature);
            var arrangment   = new ReturnValueArrangement <Task <int> >(signature, Task.FromResult(42));

            // When
            arrangment.ApplyTo(invocation);

            // Then
            Assert.True(invocation.HasFeature <IAsyncInvocation <Task <int> > >());
            var feature = invocation.GetFeature <IAsyncInvocation <Task <int> > >();

            Assert.IsAssignableFrom <Task <int> >(feature.AsyncReturnValue);

            Assert.True(invocation.HasFeature <IReturnValue <int> >());
            var returnValueFeature = invocation.GetFeature <IReturnValue <int> >();

            Assert.Equal(42, returnValueFeature.ReturnValue);
        }