Example #1
0
        private void ApplyOutAndRefParametersValues(IInterceptedFakeObjectCall fakeObjectCall)
        {
            if (this.OutAndRefParametersValues == null)
            {
                return;
            }

            var indexes = GetIndexesOfOutAndRefParameters(fakeObjectCall);

            if (this.OutAndRefParametersValues.Count != indexes.Count)
            {
                throw new InvalidOperationException(ExceptionMessages.NumberOfOutAndRefParametersDoesNotMatchCall);
            }

            foreach (var argument in indexes.Zip(this.OutAndRefParametersValues))
            {
                if (this.DoEvaluateOutAndRefFuncs)
                {
                    Func <object> getter = argument.Item2 as Func <object>;

                    if (getter != null)
                    {
                        object value = getter();
                        fakeObjectCall.SetArgumentValue(argument.Item1, value);
                    }
                }
                else
                {
                    fakeObjectCall.SetArgumentValue(argument.Item1, argument.Item2);
                }
            }
        }
Example #2
0
 private static void ApplyOutputArguments(IInterceptedFakeObjectCall call, CallMetadata callToApply)
 {
     foreach (var outputArgument in GetIndicesAndValuesOfOutputParameters(call, callToApply.RecordedCall))
     {
         call.SetArgumentValue(outputArgument.Item1, outputArgument.Item2);
     }
 }
Example #3
0
        private void ApplyOutAndRefParametersValueProducer(IInterceptedFakeObjectCall fakeObjectCall)
        {
            if (this.OutAndRefParametersValueProducer == null)
            {
                return;
            }

            var indexes = GetIndexesOfOutAndRefParameters(fakeObjectCall);
            ICollection <object> values;

            try
            {
                values = this.OutAndRefParametersValueProducer(fakeObjectCall);
            }
            catch (Exception ex) when(!(ex is FakeConfigurationException))
            {
                throw new UserCallbackException(ExceptionMessages.UserCallbackThrewAnException("Out and ref parameter value producer"), ex);
            }

            if (values.Count != indexes.Count)
            {
                throw new InvalidOperationException(ExceptionMessages.NumberOfOutAndRefParametersDoesNotMatchCall);
            }

            foreach (var argument in indexes.Zip(values, (index, value) => new { Index = index, Value = value }))
            {
                fakeObjectCall.SetArgumentValue(argument.Index, argument.Value);
            }
        }
Example #4
0
 private static void ApplyOutputArguments(IInterceptedFakeObjectCall call, CallDataMetadata callToApply)
 {
     foreach (var outputArgument in call.Method.GetParameters()
              .Select((parameter, index) => new { Parameter = parameter, Index = index })
              .Where(argument => argument.Parameter.ParameterType.IsByRef)
              .Select(argument => argument.Index).Zip(callToApply.RecordedCall.OutputArguments, (index, outputArgument) => new { Index = index, Value = outputArgument }))
     {
         call.SetArgumentValue(outputArgument.Index, outputArgument.Value);
     }
 }
        private static void SetOutAndRefValues(IInterceptedFakeObjectCall fakeObjectCall, RecordedCall recordedCall)
        {
            int outOrRefIndex = 0;

            for (int parameterIndex = 0; parameterIndex < fakeObjectCall.Method.GetParameters().Length; parameterIndex++)
            {
                var parameter = fakeObjectCall.Method.GetParameters()[parameterIndex];
                if (parameter.ParameterType.IsByRef)
                {
                    fakeObjectCall.SetArgumentValue(parameterIndex, recordedCall.OutAndRefValues[outOrRefIndex++]);
                }
            }
        }
        private static void ApplyRecordedCall(RecordedCall recordedCall, IInterceptedFakeObjectCall fakeObjectCall)
        {
            fakeObjectCall.SetReturnValue(recordedCall.ReturnValue);

            int outAndRefIndex = 0;
            int parameterIndex = 0;

            foreach (var parameter in fakeObjectCall.Method.GetParameters())
            {
                if (parameter.ParameterType.IsByRef)
                {
                    fakeObjectCall.SetArgumentValue(parameterIndex, recordedCall.OutAndRefValues[outAndRefIndex++]);
                }

                ++parameterIndex;
            }
        }
Example #7
0
        private void ApplyOutAndRefParametersValues(IInterceptedFakeObjectCall fakeObjectCall)
        {
            if (this.OutAndRefParametersValues == null)
            {
                return;
            }

            var indexes = GetIndexesOfOutAndRefParameters(fakeObjectCall);

            if (this.OutAndRefParametersValues.Count != indexes.Count)
            {
                throw new InvalidOperationException(ExceptionMessages.NumberOfOutAndRefParametersDoesNotMatchCall);
            }

            foreach (var argument in indexes.Zip(this.OutAndRefParametersValues))
            {
                fakeObjectCall.SetArgumentValue(argument.Item1, argument.Item2);
            }
        }
Example #8
0
        private void ApplyOutAndRefParametersValueProducer(IInterceptedFakeObjectCall fakeObjectCall)
        {
            if (this.OutAndRefParametersValueProducer == null)
            {
                return;
            }

            var indexes = GetIndexesOfOutAndRefParameters(fakeObjectCall);
            var values  = this.OutAndRefParametersValueProducer(fakeObjectCall);

            if (values.Count != indexes.Count)
            {
                throw new InvalidOperationException(ExceptionMessages.NumberOfOutAndRefParametersDoesNotMatchCall);
            }

            foreach (var argument in indexes.Zip(values, (index, value) => new { Index = index, Value = value }))
            {
                fakeObjectCall.SetArgumentValue(argument.Index, argument.Value);
            }
        }
 private static void ApplyOutputArguments(IInterceptedFakeObjectCall call, CallDataMetadata callToApply)
 {
     foreach (var outputArgument in call.Method.GetParameters()
         .Select((parameter, index) => new { Parameter = parameter, Index = index })
         .Where(argument => argument.Parameter.ParameterType.IsByRef)
         .Select(argument => argument.Index).Zip(callToApply.RecordedCall.OutputArguments, (index, outputArgument) => new { Index = index, Value = outputArgument }))
     {
         call.SetArgumentValue(outputArgument.Index, outputArgument.Value);
     }
 }
Example #10
0
        private void ApplyOutAndRefParametersValues(IInterceptedFakeObjectCall fakeObjectCall)
        {
            if (this.OutAndRefParametersValues == null)
            {
                return;
            }

            var indexes = GetIndexesOfOutAndRefParameters(fakeObjectCall);

            if (this.OutAndRefParametersValues.Count != indexes.Count)
            {
                throw new InvalidOperationException(ExceptionMessages.NumberOfOutAndRefParametersDoesNotMatchCall);
            }

            foreach (var argument in indexes.Zip(this.OutAndRefParametersValues))
            {
                fakeObjectCall.SetArgumentValue(argument.Item1, argument.Item2);
            }
        }
Example #11
0
        private void ApplyOutAndRefParametersValueProducer(IInterceptedFakeObjectCall fakeObjectCall)
        {
            if (this.OutAndRefParametersValueProducer == null)
            {
                return;
            }

            var indexes = GetIndexesOfOutAndRefParameters(fakeObjectCall);
            var values = this.OutAndRefParametersValueProducer(fakeObjectCall);
            if (values.Count != indexes.Count)
            {
                throw new InvalidOperationException(ExceptionMessages.NumberOfOutAndRefParametersDoesNotMatchCall);
            }

            foreach (var argument in indexes.Zip(values, (index, value) => new { Index = index, Value = value }))
            {
                fakeObjectCall.SetArgumentValue(argument.Index, argument.Value);
            }
        }
 private static void ApplyOutputArguments(IInterceptedFakeObjectCall call, CallDataMetadata callToApply)
 {
     foreach (var outputArgument in GetIndicesAndValuesOfOutputParameters(call, callToApply.RecordedCall))
     {
         call.SetArgumentValue(outputArgument.Item1, outputArgument.Item2);
     }
 }
        private void ApplyOutAndRefParametersValues(IInterceptedFakeObjectCall fakeObjectCall)
        {
            if (this.OutAndRefParametersValues == null)
            {
                return;
            }

            var indexes = GetIndexesOfOutAndRefParameters(fakeObjectCall);

            if (this.OutAndRefParametersValues.Count != indexes.Count)
            {
                throw new InvalidOperationException(ExceptionMessages.NumberOfOutAndRefParametersDoesNotMatchCall);
            }

            foreach (var argument in indexes.Zip(this.OutAndRefParametersValues))
            {
                if (this.DoEvaluateOutAndRefFuncs)
                {
                    Func<object> getter = argument.Item2 as Func<object>;

                    if (getter != null)
                    {
                        object value = getter();
                        fakeObjectCall.SetArgumentValue(argument.Item1, value);
                    }
                }
                else
                {
                    fakeObjectCall.SetArgumentValue(argument.Item1, argument.Item2);
                }
            }
        }