public void FromMethod_ref_parameter_nominal() { MethodName m = MethodName.FromMethodInfo(typeof(Array).GetTypeInfo().GetMethod("Resize")); Assert.Equal("System.Array.Resize<T>(T[]& array, System.Int32 newSize)", m.FullName); Assert.True(m.Parameters[0].ParameterType.IsByReference); }
public void ToString_GenericInstanceType_receiver_should_contain_generic_parameters() { var method = typeof(Comparison <int>).GetTypeInfo().GetMethod("Invoke"); Assert.Equal("System.Comparison<System.Int32>.Invoke(System.Int32 x, System.Int32 y)", MethodName.FromMethodInfo(method).ToString()); }
public void FromMethod_out_parameter_nominal() { MethodName m = MethodName.FromMethodInfo(typeof(char).GetTypeInfo().GetMethod("TryParse")); Assert.Equal("System.Char.TryParse(System.String s, System.Char& result)", m.FullName); Assert.True(m.Parameters[1].ParameterType.IsByReference); }
public void FromMethod_closed_generic_method_return_type() { var method = typeof(S <int>).GetTypeInfo().GetMethods().Where(t => t.IsStatic).Single(); MethodName m = MethodName.FromMethodInfo(method); Assert.Equal(method.Name, m.Name); Assert.Equal("From", m.Name); Assert.Equal("Int32", m.ReturnType.Name); }
public void Format_method_unspecified_parameters() { var mi = typeof(decimal).GetTypeInfo().GetMethods().First(t => t.Name == "op_Explicit"); var name = MethodName.FromMethodInfo(mi).WithParametersUnspecified(); string expected = "System.Decimal.op_Explicit"; var format = new MetadataNameFormat(); Assert.Equal(expected, format.Format(name)); Assert.Equal(expected, name.ToString(null, format)); }
public void FromMethod_generic_arguments_binding() { MethodName concatMethod = MethodName.FromMethodInfo( typeof(string).GetTypeInfo().GetMethods().Where(t => t.Name == "Concat" && t.IsGenericMethod).Single()); // Concat<T>(IEnumerable<T>) var gits = (GenericInstanceTypeName)concatMethod.Parameters[0].ParameterType; Assert.Equal(concatMethod, ((GenericParameterName)gits.GenericArguments[0]).DeclaringMethod); }
public void FromMethod_generic_method() { // Array.Sort<TKey, TValue>(TKey[],TValue[],int,int) var method = typeof(Array).GetTypeInfo().GetMethods().Where(t => t.GetGenericArguments().Length == 2 && t.GetParameters().Length == 4).Single(); MethodName m = MethodName.FromMethodInfo(method); Assert.Equal(method.Name, m.Name); Assert.Equal("Sort", m.Name); Assert.Equal("System.Array.Sort<TKey, TValue>(TKey[] keys, TValue[] items, System.Int32 index, System.Int32 length)", m.FullName); Assert.Equal("Void", m.ReturnType.Name); }
public void Format_use_simple_parameter_type_names() { MethodName m = MethodName.FromMethodInfo(typeof(string).GetTypeInfo().GetMethod("CopyTo")); MetadataNameFormat format = new MetadataNameFormat(); format.DefaultFormatString[SymbolType.Parameter] = "Cv"; string expected = "System.String.CopyTo(Int32, Char[], Int32, Int32)"; Assert.Equal(expected, format.Format(m)); Assert.Equal(expected, m.ToString(null, format)); }
public void Format_type_generic_positions_open_generic_type() { var method = MethodName.FromMethodInfo( typeof(ICollection <>).GetTypeInfo().GetMethod("Add")); MetadataNameFormat format = new MetadataNameFormat(); format.UseGenericParameterPositions = true; format.IncludeTypeParameters = true; string expected = "System.Collections.Generic.ICollection`1.Add(`0 item)"; Assert.Equal(expected, format.Format(method)); Assert.Equal(expected, method.ToString(null, format)); }
public void Format_use_simple_parameter_type_names_generic() { MethodName m = MethodName.FromMethodInfo( typeof(string).GetTypeInfo().GetMethods().Single(t => t.Name == "Concat" && t.IsGenericMethod)); MetadataNameFormat format = new MetadataNameFormat(); format.DefaultFormatString[SymbolType.Parameter] = "Cv"; format.IncludeTypeParameters = true; format.IncludeTypeConstraints = false; format.IncludeVariance = false; string expected = "System.String.Concat<T>(IEnumerable<T>)"; Assert.Equal(expected, format.Format(m)); Assert.Equal(expected, m.ToString(null, format)); }
public void Format_use_generic_parameter_positions_array() { MethodName m = MethodName.FromMethodInfo( typeof(Array).GetTypeInfo().GetMethods().Single(t => t.Name == "TrueForAll" && t.IsGenericMethod)); MetadataNameFormat format = new MetadataNameFormat(); format.DefaultFormatString[SymbolType.Parameter] = "Cv"; format.IncludeTypeParameters = true; format.IncludeTypeConstraints = false; format.IncludeVariance = false; format.UseGenericParameterPositions = true; string expected = "System.Array.TrueForAll``1(``0[], Predicate<``0>)"; Assert.Equal(expected, format.Format(m)); Assert.Equal(expected, m.ToString(null, format)); }
public void Format_method_name_include_return_types() { var mi = typeof(decimal).GetTypeInfo().GetMethods().First(t => t.Name == "op_Explicit"); var name = MethodName.FromMethodInfo(mi); Assert.NotNull(mi.ReturnType); MetadataNameFormat format = new MetadataNameFormat(); format.DefaultFormatString[SymbolType.Parameter] = "Cv"; format.IncludeReturnTypes[SymbolType.Method] = true; // Uses the parameter format string for return type string expected = "System.Decimal.op_Explicit(Single):Decimal"; Assert.Equal(expected, format.Format(name)); Assert.Equal(expected, name.ToString(null, format)); }
public void FromMethod_nominal() { MethodName m = MethodName.FromMethodInfo(typeof(string).GetTypeInfo().GetMethod("CopyTo")); Assert.Equal("System.String.CopyTo(System.Int32 sourceIndex, System.Char[] destination, System.Int32 destinationIndex, System.Int32 count)", m.FullName); }