Beispiel #1
0
        public void ToMemberId_returns_expected_value_for_type_definitions_01()
        {
            // ARRANGE
            var cs = @"
                namespace Namespace1.Namespace2
                {
                    public class Class1
                    {
                    }
                }
            ";

            using var assembly = Compile(cs);


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

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

            // ASSERT
            Assert.NotNull(actualMemberId);
            Assert.Equal(expectedMemberId, actualMemberId);
        }
Beispiel #2
0
        public void TryGetDocumenation_returns_expected_documentation_item_for_an_documented_type()
        {
            // ARRANGE
            var cs = @"
	            using System;

	            public class Class1
	            { }

	            public class Class2
	            { }
            ";

            using var assembly = Compile(cs);
            using var assemblyDocumentation = GetAssemblyDocumentation(assembly);

            var sut = assemblyDocumentation.Types.Single(x => x.TypeId.Name == "Class1");

            // ARRANGE
            var typeId = new SimpleTypeId(NamespaceId.GlobalNamespace, "Class2");

            // ACT
            var documentation = sut.TryGetDocumentation(typeId);

            // ASSERT
            Assert.NotNull(documentation);
            var typeDocumentation = Assert.IsType <TypeDocumentation>(documentation);

            Assert.Equal(typeId, typeDocumentation.TypeId);
        }
Beispiel #3
0
        public void TryGetDocumentationComments_gets_expected_docs_for_a_nested_type()
        {
            // ARRANGE
            var cs = @"
	            using System;

	            public class Class1
	            {
                        /// <summary>
                    /// Example of an inner class
                    /// </summary>
                    public class NestedClass1
                    { }
                }
            ";

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

            var id = new SimpleTypeId(new SimpleTypeId(NamespaceId.GlobalNamespace, "Class1"), "NestedClass1");

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

            // ASSERT
            Assert.NotNull(docs);

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

            Assert.NotNull(docs.Summary);
        }
Beispiel #4
0
        public void TryGetDocumentation_returns_null_for_an_undocumented_type()
        {
            // ARRANGE
            var cs = @"
	            using System;

	            public class Class1
	            { }

                internal class Class2
	            { }
            ";

            using var assembly = Compile(cs);
            using var assemblyDocumentation = GetAssemblyDocumentation(assembly);

            var sut = assemblyDocumentation.Types.Single(x => x.TypeId.Name == "Class1");

            var typeId = new SimpleTypeId(NamespaceId.GlobalNamespace, "Class2");

            // ACT
            var documentation = sut.TryGetDocumentation(typeId);

            // ASSERT
            Assert.Null(documentation);
        }
Beispiel #5
0
        public void TryGetDocumentation_returns_null_for_an_undocumented_type()
        {
            // ARRANGE
            var typeId = new SimpleTypeId("Namespace1.Namespace2", "InternalClass1");
            var sut    = GetOverloadDocumentationInstance(m_AssemblyDocumentation.Types.Single());

            // ACT
            var documentation = sut.TryGetDocumentation(typeId);

            // ASSERT
            Assert.Null(documentation);
        }
Beispiel #6
0
        public void ToTypeId_returns_expected_value_01()
        {
            // ARRANGE
            var expected = new SimpleTypeId(NamespaceId.GlobalNamespace, "Class1");

            // ACT
            var actual = TypeIdBuilder.Create()
                         .AddNameSegment("Class1")
                         .ToTypeId();

            // ASSERT
            Assert.Equal(expected, actual);
        }
Beispiel #7
0
        public void TryGetDocumenation_returns_expected_documentation_item_for_an_documented_type()
        {
            // ARRANGE
            var typeId = new SimpleTypeId("Namespace1.Namespace2", "Class1");
            var sut    = GetOverloadDocumentationInstance(m_AssemblyDocumentation.Types.Single());

            // ACT
            var documentation = sut.TryGetDocumentation(typeId);

            // ASSERT
            Assert.NotNull(documentation);
            var typeDocumentation = Assert.IsType <TypeDocumentation>(documentation);

            Assert.Equal(typeId, typeDocumentation.TypeId);
        }
Beispiel #8
0
        public void ToMemberId_returns_expected_value_for_nested_constructued_types_02()
        {
            // ARRANGE
            var cs = @"
                using System;
                using System.Collections.Generic;

                namespace Namespace1.Namespace2
                {
                    public class Class1
                    {
                        public void Method1(Class2<string>.NestedClass1 parameter) => throw new NotImplementedException();
                    }

                    public class Class2<T>
                    {
                        public class NestedClass1
                        { }
                    }
                }
            ";

            using var assembly = Compile(cs);

            var typeReference = assembly.MainModule.Types
                                .Single(x => x.Name == "Class1")
                                .Methods
                                .Single(x => x.Name == "Method1")
                                .Parameters
                                .Single()
                                .ParameterType;

            // type: TestClass_NestedTypes<string>.NestedClass1
            var expectedMemberId = new SimpleTypeId(
                new GenericTypeInstanceId("Namespace1.Namespace2", "Class2",
                                          new[] { new SimpleTypeId("System", "String") }),
                "NestedClass1"
                );

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

            // ASSERT
            Assert.NotNull(actualMemberId);
            Assert.Equal(expectedMemberId, actualMemberId);
        }
Beispiel #9
0
        public void ToTypeId_returns_expected_value_08()
        {
            // ARRANGE
            var stringTypeId = new SimpleTypeId("System", "String");

            var expected = new GenericTypeInstanceId(new NamespaceId("Namespace1"), "Class1", new[] { stringTypeId });

            // ACT
            var actual = TypeIdBuilder.Create()
                         .AddNameSegment("Namespace1")
                         .AddNameSegment("Class1")
                         .SetTypeArguments(new[] { stringTypeId })
                         .ToTypeId();

            // ASSERT
            Assert.Equal(expected, actual);
        }
Beispiel #10
0
        public void ToTypeId_returns_expected_value_05()
        {
            // ARRANGE
            var outerType = new SimpleTypeId(new NamespaceId("Namespace1.Namespace2"), "Class1");
            var expected  = new SimpleTypeId(outerType, "NestedClass1");

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

            // ASSERT
            Assert.Equal(expected, actual);
        }
Beispiel #11
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);
        }
Beispiel #12
0
        public void ToMemberId_returns_the_expected_value_for_nested_types_02()
        {
            // ARRANGE
            var cs = @"
                using System;
                using System.Collections.Generic;

                namespace Namespace1.Namespace2
                {
                    public class Class1
                    {
                        public class NestedClass1
                        {
                            public class NestedClass2
                            { }
                        }
                    }
                }
            ";

            using var assembly = Compile(cs);

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

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

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

            // ASSERT
            Assert.NotNull(actualId);
            Assert.Equal(expectedId, actualId);
        }
Beispiel #13
0
        public void TryGetDocumentationComments_returns_null_for_type_without_documentation()
        {
            // ARRANGE
            var cs = @"
	            using System;

	            public class Class1
	            { }
            ";

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

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

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

            // ASSERT
            Assert.Null(docs);
        }
Beispiel #14
0
 private SimpleType(SimpleTypeId id, bool isInteger, int size)
 {
     _typeId     = id;
     IsInteger   = isInteger;
     SizeInBytes = size;
 }