Example #1
0
 public IArgumentSpecification Create(object argument, IParameterInfo parameterInfo, ISuppliedArgumentSpecifications suppliedArgumentSpecifications)
 {
     if (_defaultChecker.IsDefault(argument, parameterInfo.ParameterType))
     {
         if (suppliedArgumentSpecifications.IsNextFor(argument, parameterInfo.ParameterType))
         {
             var argumentSpecification = suppliedArgumentSpecifications.Dequeue();
             if (suppliedArgumentSpecifications.DequeueRemaining().Count() == 0)
             {
                 return(argumentSpecification);
             }
         }
         else if (!suppliedArgumentSpecifications.AnyFor(argument, parameterInfo.ParameterType))
         {
             if (suppliedArgumentSpecifications.DequeueRemaining().Count() == 0)
             {
                 return(_argumentEqualsSpecificationFactory.Create(argument, parameterInfo.ParameterType));
             }
         }
     }
     else
     {
         var paramterInfosFromParamsArray = _parameterInfosFromParamsArrayFactory.Create(argument, parameterInfo.ParameterType);
         var suppliedArgumentSpecificationsFromParamsArray = _suppliedArgumentSpecificationsFactory.Create(suppliedArgumentSpecifications.DequeueRemaining());
         var arrayArgumentSpecifications = _arrayArgumentSpecificationsFactory.Create(argument, paramterInfosFromParamsArray, suppliedArgumentSpecificationsFromParamsArray);
         return(_arrayContentsArgumentSpecificationFactory.Create(arrayArgumentSpecifications, parameterInfo.ParameterType));
     }
     throw new AmbiguousArgumentsException();
 }
 public IArgumentSpecification Create(object argument, IParameterInfo parameterInfo, ISuppliedArgumentSpecifications suppliedArgumentSpecifications)
 {
     if (_defaultChecker.IsDefault(argument, parameterInfo.ParameterType))
     {
         if (suppliedArgumentSpecifications.IsNextFor(argument, parameterInfo.ParameterType))
         {
             var argumentSpecification = suppliedArgumentSpecifications.Dequeue();
             if (suppliedArgumentSpecifications.DequeueRemaining().Count() == 0)
             {
                 return argumentSpecification;
             }
         }
         else if (!suppliedArgumentSpecifications.AnyFor(argument, parameterInfo.ParameterType))
         {
             if (suppliedArgumentSpecifications.DequeueRemaining().Count() == 0)
             {
                 return _argumentEqualsSpecificationFactory.Create(argument, parameterInfo.ParameterType);
             }
         }
     }
     else
     {
         var paramterInfosFromParamsArray = _parameterInfosFromParamsArrayFactory.Create(argument, parameterInfo.ParameterType);
         var suppliedArgumentSpecificationsFromParamsArray = _suppliedArgumentSpecificationsFactory.Create(suppliedArgumentSpecifications.DequeueRemaining());
         var arrayArgumentSpecifications = _arrayArgumentSpecificationsFactory.Create(argument, paramterInfosFromParamsArray, suppliedArgumentSpecificationsFromParamsArray);
         return _arrayContentsArgumentSpecificationFactory.Create(arrayArgumentSpecifications, parameterInfo.ParameterType);
     }
     throw new AmbiguousArgumentsException();
 }
Example #3
0
 public void Should_create_supplied_argument_specifications_with_correct_specifications()
 {
     Assert.That(_result.DequeueRemaining(), Is.EquivalentTo(_argumentSpecifications));
 }