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