コード例 #1
0
 public IType this[GenericTypeId c]
 {
     get
     {
         var i = (int)c;
         return(_generics[i].Value);
     }
 }
コード例 #2
0
        public void BeginNestedType_has_no_effect_if_not_followed_by_a_AddNameSegemtn_call()
        {
            // ARRANGE
            var expected = new GenericTypeId(new NamespaceId("Namespace1.Namespace2"), "Class1", 1);

            // ACT
            var actual = TypeIdBuilder.Create()
                         .AddNameSegment("Namespace1")
                         .AddNameSegment("Namespace2")
                         .AddNameSegment("Class1")
                         .SetArity(1)
                         .BeginNestedType()
                         .ToTypeId();

            // ASSERT
            Assert.Equal(expected, actual);
        }
コード例 #3
0
        public void SetArity_implicitly_creates_a_nested_type()
        {
            // ARRANGE
            var outerType = new GenericTypeId(new NamespaceId("Namespace1.Namespace2"), "Class1", 1);
            var expected  = new SimpleTypeId(outerType, "NestedClass1");

            // ACT
            var actual = TypeIdBuilder.Create()
                         .AddNameSegment("Namespace1")
                         .AddNameSegment("Namespace2")
                         .AddNameSegment("Class1")
                         .SetArity(1)
                         .AddNameSegment("NestedClass1")
                         .ToTypeId();

            // ASSERT
            Assert.Equal(expected, actual);
        }
コード例 #4
0
        public void ToTypeId_returns_expected_value_07()
        {
            // ARRANGE

            var expected = new GenericTypeId(new NamespaceId("MdDoc.Test.TestData"), "TestClass_GenericType", 1);

            // ACT
            var actual = TypeIdBuilder.Create()
                         .AddNameSegment("MdDoc")
                         .AddNameSegment("Test")
                         .AddNameSegment("TestData")
                         .AddNameSegment("TestClass_GenericType")
                         .SetArity(1)
                         .ToTypeId();

            // ASSERT
            Assert.Equal(expected, actual);
        }
コード例 #5
0
        public void ToMemberId_returns_the_expected_value_for_nested_types_06()
        {
            // ARRANGE
            var cs = @"
                using System;
                using System.Collections.Generic;

                namespace Namespace1.Namespace2
                {
                    public class Class1<T1>
                    {
                        public class NestedClass1
                        {
                            public class NestedClass2<T2>
                            { }
                        }
                    }
                }
            ";

            using var assembly = Compile(cs);

            var typeDefinition = assembly.MainModule.Types
                                 .Single(x => x.Name == "Class1`1")
                                 .NestedTypes
                                 .Single()
                                 .NestedTypes
                                 .Single();

            var expectedId = new GenericTypeId(
                new SimpleTypeId(
                    new GenericTypeId("Namespace1.Namespace2", "Class1", 1),
                    "NestedClass1"),
                "NestedClass2",
                1
                );

            // ACT
            var actualId = typeDefinition.ToMemberId();

            // ASSERT
            Assert.NotNull(actualId);
            Assert.Equal(expectedId, actualId);
        }
コード例 #6
0
        public void ToMemberId_returns_expected_value_for_type_definitions_02()
        {
            // ARRANGE
            var cs = @"
                namespace Namespace1.Namespace2
                {
                    public class Class1<T1>
                    {
                    }
                }
            ";

            using var assembly = Compile(cs);

            var typeReference    = assembly.MainModule.Types.Single(x => x.Name == "Class1`1");
            var expectedMemberId = new GenericTypeId("Namespace1.Namespace2", "Class1", 1);

            // ACT
            var actualMemberId = typeReference.ToMemberId();

            // ASSERT
            Assert.NotNull(actualMemberId);
            Assert.Equal(expectedMemberId, actualMemberId);
        }
コード例 #7
0
        public IType MakeInstance(GenericTypeId typeId, IType arg)
        {
            var type = GetType(typeId);

            return(TypeFactory.MakeGenericType(type, arg));
        }
コード例 #8
0
 public IType GetType(GenericTypeId id)
 {
     return(Types[id]);
 }
コード例 #9
0
        public void TryGetDocumentationComments_gets_expected_docs_for_type()
        {
            // ARRANGE
            var cs = @"
	            using System;

                /// <summary>
                /// This is a test class for testing parsing of XML documentation
                /// </summary>
                /// <remarks>Remarks</remarks>
                /// <example>Example1</example>    
                /// <typeparam name=""T1"">Type parameter 1</typeparam>
                /// <typeparam name=""T2"">Type parameter 2</typeparam>
                /// <seealso  cref=""Class2"">Some text</seealso>
                /// <seealso  cref=""Interface1"" />
                public class Class1<T1, T2>
	            { }

                public class Class2
                { }

                public interface Interface1
                { }
            ";

            using var assembly = Compile(cs, out var xmlDocs);

            var id = new GenericTypeId(NamespaceId.GlobalNamespace, "Class1", 2);

            // ACT
            var sut  = new XmlDocsProvider(assembly, xmlDocs, NullLogger.Instance);
            var docs = sut.TryGetDocumentationComments(id);

            // ASSERT
            Assert.NotNull(docs);

            Assert.NotNull(docs !.MemberId);
            Assert.IsAssignableFrom <GenericTypeId>(docs.MemberId);

            Assert.NotNull(docs.Summary);

            Assert.NotNull(docs.Remarks);

            Assert.NotNull(docs.Example);

            Assert.NotNull(docs.TypeParameters);
            Assert.Equal(2, docs.TypeParameters.Count);
            Assert.Contains(docs.TypeParameters, x => x.Key == "T1");
            Assert.Contains(docs.TypeParameters, x => x.Key == "T2");

            Assert.All(docs.SeeAlso, seeAlso => Assert.NotNull(seeAlso.MemberId));

            Assert.Equal(2, docs.SeeAlso.Count);
            Assert.Contains(
                docs.SeeAlso,
                seeAlso => seeAlso.Text.Elements.Count == 1 && seeAlso.MemberId !.Equals(new SimpleTypeId(NamespaceId.GlobalNamespace, "Class2"))
                );
            Assert.Contains(
                docs.SeeAlso,
                seeAlso => seeAlso.Text.Elements.Count == 0 && seeAlso.MemberId !.Equals(new SimpleTypeId(NamespaceId.GlobalNamespace, "Interface1"))
                );
        }