Exemplo n.º 1
0
        public void ReadTextBlock_correctly_reads_see_elements_05()
        {
            var xml      = @"<see href=""http://example.com"" cref=""T:SomeNamespace.SomeClass"" />";
            var expected = new SeeElement(MemberId.Parse("T:SomeNamespace.SomeClass", Array.Empty <TypeId>()));

            ReadTextBlock_correctly_reads_see_elements(xml, expected);
        }
Exemplo n.º 2
0
        public void ReadMemberContent_correctly_parses_seealso_elements_05()
        {
            var xml = @"<seealso cref=""T:SomeNamespace.SomeClass"" href=""http://example.com"" />";

            var expected = new SeeAlsoElement(MemberId.Parse("T:SomeNamespace.SomeClass", Array.Empty <TypeId>()));

            ReadMemberContent_correctly_parses_seealso_elements(xml, expected);
        }
Exemplo n.º 3
0
        public void ReadTextBlock_correctly_reads_see_elements_06()
        {
            var xml      = @"<see href=""http://example.com"" cref=""T:SomeNamespace.SomeClass"">Lorem ipsum dolor sit amet.</see>";
            var expected = new SeeElement(
                MemberId.Parse("T:SomeNamespace.SomeClass", Array.Empty <TypeId>()),
                new TextBlock(new[] { new TextElement("Lorem ipsum dolor sit amet.") }));

            ReadTextBlock_correctly_reads_see_elements(xml, expected);
        }
Exemplo n.º 4
0
        public void ReadTextBlock_returns_the_expected_elements_05()
        {
            var xml = @"<para><see cref=""T:DemoProject.DemoClass"" /></para>";

            ReadTextBlock_returns_the_expected_elements(
                xml,
                new SeeElement(MemberId.Parse("T:DemoProject.DemoClass", Array.Empty <TypeId>()))
                );
        }
Exemplo n.º 5
0
        public void ReadMemberContent_correctly_parses_seealso_elements_02()
        {
            var xml = @"<seealso cref=""T:SomeNamespace.SomeClass"">Lorem ipsum dolor sit ament.</seealso>";

            var expected = new SeeAlsoElement(
                MemberId.Parse("T:SomeNamespace.SomeClass", Array.Empty <TypeId>()),
                new TextBlock(new[]
            {
                new TextElement("Lorem ipsum dolor sit ament.")
            }));

            ReadMemberContent_correctly_parses_seealso_elements(xml, expected);
        }
Exemplo n.º 6
0
        public void ReadTextBlock_returns_the_expected_elements_06()
        {
            var xml = @"<para><see cref=""T:DemoProject.DemoClass"">Lorem ipsum dolor sit amet.</see></para>";

            ReadTextBlock_returns_the_expected_elements(
                xml,
                new SeeElement(
                    MemberId.Parse("T:DemoProject.DemoClass", Array.Empty <TypeId>()),
                    new TextBlock(new[]
            {
                new TextElement("Lorem ipsum dolor sit amet.")
            }))
                );
        }
Exemplo n.º 7
0
        public void ReadTextBlock_returns_the_expected_elements_03()
        {
            var xml = @"            <para>
            Similar pages are also generated for interfaces, structs (see <see cref=""T:DemoProject.DemoStruct""/>)
            and enums
            </para> ";

            ReadTextBlock_returns_the_expected_elements(
                xml,
                new TextElement("Similar pages are also generated for interfaces, structs (see "),
                new SeeElement(MemberId.Parse("T:DemoProject.DemoStruct", Array.Empty <TypeId>())),
                new TextElement(") and enums")
                );
        }
Exemplo n.º 8
0
        private void ReadMemberContent_correctly_parses_seealso_elements(string xml, SeeAlsoElement expected)
        {
            // ARRANGE
            xml = $@"<container>{xml}</container>";

            var sut           = new XmlDocsReader(NullLogger.Instance, new XDocument(), Array.Empty <TypeId>());
            var memberElement = new MemberElement(MemberId.Parse("T:DemoProject.DemoClass", Array.Empty <TypeId>()));

            // ACT
            sut.ReadMemberContent(XElement.Parse(xml), memberElement);

            // ASSERT
            var actual = Assert.Single(memberElement.SeeAlso);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 9
0
        public void TryGetDocumentationComments_gets_expected_docs_for_a_property()
        {
            // ARRANGE
            var cs = @"
	            using System;

	            public class Class1
	            {
                    /// <summary>
                    /// Summary
                    /// </summary>
                    /// <remarks>Remarks</remarks>
                    /// <example>Example</example>
                    /// <value>Value</value>
                    /// <exception cref=""ArgumentException"">Exception 1</exception>
                    /// <seealso  cref=""Class2"">Some text</seealso>
                    /// <seealso  cref=""Interface1"" />
                    public string Property1 { get; }
                }

                public class Class2
                { }

                public interface Interface1
                { }
            ";

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

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

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

            // ASSERT
            Assert.NotNull(docs);

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

            Assert.NotNull(docs.Summary);

            Assert.NotNull(docs.Remarks);

            Assert.NotNull(docs.Example);

            Assert.NotNull(docs.Value);

            Assert.NotNull(docs.Exceptions);
            Assert.Single(docs.Exceptions);
            Assert.Contains(docs.Exceptions, x => x.Type.Equals(MemberId.Parse("T:System.ArgumentException", Array.Empty <TypeId>())));

            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"))
                );
        }
Exemplo n.º 10
0
        public void TryGetDocumentationComments_gets_expected_docs_for_a_method()
        {
            // ARRANGE
            var cs = @"
	            using System;

	            public class Class1
	            {
                    /// <summary>
                    /// Line1
                    /// </summary>
                    /// <remarks>Remarks</remarks>
                    /// <example>Example</example>
                    /// <exception cref=""InvalidOperationException"">Exception 1</exception>
                    /// <exception cref=""ArgumentException"">Exception 2</exception>
                    /// <param name=""parameter1"">Documentation for parameter 1</param>
                    /// <returns>The method returns an object</returns>
                    /// <seealso cref=""Class2"">Some text</seealso>
                    /// <seealso cref=""Interface1"" />
                    public void Method1() => throw new NotImplementedException();
                }

                public class Class2
                { }

                public interface Interface1
                { }
            ";

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

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

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

            // ASSERT
            Assert.NotNull(docs);

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

            Assert.NotNull(docs.Remarks);

            Assert.NotNull(docs.Example);

            Assert.NotNull(docs.Exceptions);
            Assert.Equal(2, docs.Exceptions.Count);
            Assert.Contains(docs.Exceptions, x => x.Type.Equals(MemberId.Parse("T:System.InvalidOperationException", Array.Empty <TypeId>())));
            Assert.Contains(docs.Exceptions, x => x.Type.Equals(MemberId.Parse("T:System.ArgumentException", Array.Empty <TypeId>())));

            Assert.NotNull(docs.Parameters);
            Assert.Single(docs.Parameters);
            Assert.Contains(docs.Parameters, x => x.Key == "parameter1");

            Assert.NotNull(docs.Returns);

            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"))
                );
        }