public void Handles_string_as_key_case_insensitive() { var arguments = new Arguments(); var key = "foo"; var value = new object(); arguments.Add(key, value); Assert.IsTrue(arguments.Contains(key.ToLower())); Assert.IsTrue(arguments.Contains(key.ToUpper())); }
protected override IDictionary GetArguments(MethodInfo method, object[] arguments) { var parameters = method.GetParameters(); var arg = new Arguments(); for (var i = 0; i < parameters.Length; i++) { if (arg.Contains(parameters[i].ParameterType)) { if (IsFunc(method.DeclaringType)) { throw new ArgumentException( string.Format("Factory delegate {0} has duplicated arguments of type {1}. " + "Using generic purpose delegates with duplicated argument types is unsupported, because then it is not possible to match arguments properly. " + "Use some custom delegate with meaningful argument names or interface based factory instead.", method.DeclaringType, parameters[i].ParameterType)); } // else we just ignore it. It will likely be matched by name so we don't want to throw prematurely. We could log this though. } else { arg.Add(parameters[i].ParameterType, arguments[i]); } arg.Add(parameters[i].Name, arguments[i]); } return arg; }
public void Handles_string_as_key() { var arguments = new Arguments(); var key = "Foo"; var value = new object(); arguments.Add(key, value); Assert.AreEqual(1, arguments.Count); Assert.IsTrue(arguments.Contains(key)); Assert.AreSame(value, arguments[key]); }