public void Format_use_unbound_generic_parameter_positions_should_work_with_method_generics()
        {
            var pmType = TypeName.Create(null, "Func`1").MakeGenericType(MethodName.GenericParameter(1));
            var format = new MetadataNameFormat {
                UseGenericParameterPositions = true,
                IncludeTypeParameters        = true
            };

            Assert.Equal("Func<``1>", pmType.ToString(format));
        }
Пример #2
0
        public void Parse_should_parse_return_type()
        {
            var method = MethodName.Parse("ToString():Byte");
            var format = new MetadataNameFormat();

            format.IncludeReturnTypes.All = true;
            Assert.Null(method.DeclaringType);
            Assert.Equal("ToString():Byte", method.ToString(format));
            Assert.NotNull(method.ReturnType);
            Assert.Equal(TypeName.Parse("Byte"), method.ReturnType);
        }
        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 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_display_name_generic_nested()
        {
            var type = TypeName.FromType(typeof(Dictionary <,> .KeyCollection));

            MetadataNameFormat format = new MetadataNameFormat();

            format.IncludeTypeParameters = true;

            string expected = "System.Collections.Generic.Dictionary<TKey, TValue>+KeyCollection";

            Assert.Equal(expected, format.Format(type));
            Assert.Equal(expected, type.ToString(null, format));
        }
        public void Format_use_generic_parameter_compact_format()
        {
            TypeName t = TypeName.FromType(typeof(IDictionary <Delegate, int>));

            MetadataNameFormat format = new MetadataNameFormat();

            format.DefaultFormatString[SymbolType.Parameter] = "Cv";
            format.IncludeTypeParameters = true;

            string expected = "System.Collections.Generic.IDictionary<Delegate, Int32>";

            Assert.Equal(expected, format.Format(t));
            Assert.Equal(expected, t.ToString(null, format));
        }
        public void Format_use_generic_type_generic_parameter_names()
        {
            TypeName           m      = TypeName.FromType(typeof(Tuple <, , ,>));
            MetadataNameFormat format = new MetadataNameFormat();

            format.IncludeTypeParameters  = true;
            format.IncludeTypeConstraints = false;
            format.IncludeVariance        = false;

            string expected = "System.Tuple<T1, T2, T3, T4>";

            Assert.Equal(expected, format.Format(m));
            Assert.Equal(expected, m.ToString(null, format));
        }
Пример #8
0
        public void SetGenericParameter_should_apply_on_generics_no_return_type()
        {
            var method    = MethodName.Parse("Create``2(``0,``1)");
            var newMethod = method.SetGenericParameter(0, "TFirst")
                            .SetGenericParameter(1, "TSecond");

            Assert.Equal("Create", newMethod.Name);
            Assert.Equal(2, newMethod.GenericParameterCount);
            var format = new MetadataNameFormat();

            format.IncludeReturnTypes.All = true;

            Assert.Equal("Create<TFirst, TSecond>(TFirst, TSecond)", newMethod.ToString(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_property_name_full_name_indexer_format_compact_parameters()
        {
            var pi = typeof(string).GetTypeInfo().GetProperty("Chars");
            var pn = PropertyName.FromPropertyInfo(pi);

            MetadataNameFormat format = new MetadataNameFormat();

            format.DefaultFormatString[SymbolType.Parameter] = "Cv";
            format.IncludeReturnTypes[SymbolType.Property]   = true;

            // Uses the parameter format string for return type
            string expected = "System.String.Chars[Int32]:Char";

            Assert.Equal(expected, format.Format(pn));
            Assert.Equal(expected, pn.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));
        }