public void ShouldHavePrettyNamesForGenericTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type(typeof(GenericDefinition <>), @"<member name=""T:Example.GenericDefinition`1"" />") }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types .ShouldContain(x => x.PrettyName == "GenericDefinition<T>"); }
public void UnresolvedReferencesBecomeExternalReferencesIfStillExist() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new[] { Type <Second>(@"<member name=""T:Example.Second""><summary><see cref=""T:Example.First"" /></summary></member>") }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List <Comment>(namespaces[0].Types[0].Summary.Children); ((See)comment[0]).Reference.IsExternal.ShouldBeTrue(); ((See)comment[0]).Reference.Name.ShouldEqual("First"); ((See)comment[0]).Reference.FullName.ShouldEqual("Example.First"); }
public void ShouldntShowOnlyDirectInterfacesForTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type <ClassWithBaseWithInterfacesAndDirect>(@"<member name=""T:Example.ClassWithBaseWithInterfacesAndDirect"" />"), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types[0].Interfaces.Count.ShouldEqual(1); namespaces[0].Types[0].Interfaces[0].PrettyName.ShouldEqual("IExample"); }
public void ShouldHaveParentForTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type<First>(@"<member name=""T:Example.First"" />"), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types[0].ParentType.ShouldNotBeNull(); namespaces[0].Types[0].ParentType.PrettyName.ShouldEqual("object"); }
public void ShouldHaveReturnsForMethods() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Method<Second>(@"<member name=""M:Example.Second.ReturnType""><returns>Method with return</returns></member>", x => x.ReturnType()), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types[0].Methods[0].Returns.Children.Count().ShouldEqual(1); ((InlineText)namespaces[0].Types[0].Methods[0].Returns.Children.First()).Text.ShouldEqual("Method with return"); }
public void ShouldHaveExampleForType() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>("<member name=\"T:Example.Second\"><example>\r\n void Something()\r\n {\r\n return;\r\n }\r\n </example></member>") }; var namespaces = model.CombineToTypeHierarchy(members); var type = namespaces.Single().Classes.Single(); type.Example.ShouldNotBeNull(); type.Example.ShouldMatchStructure(com => com.InlineText("void Something()\r\n{\r\n return;\r\n}")); }
public void ShouldRaiseWarningOnUnexpectedKindInReferenceInType() { var events = new EventAggregator(); var model = new DocumentationModelBuilder(RealParser, events); var members = new IDocumentationMember[] {Type<Second>(@"<member name=""T:Example.Second""><summary><see cref=""G:Whats-a-g"" /></summary></member>")}; string text = string.Empty; events.Subscribe(EventType.Warning, x => text = x); model.CombineToTypeHierarchy(members); Assert.AreEqual("Unsupported documentation member found: 'G:Whats-a-g'", text); }
public void ShouldBuildNamespaces() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type <First>(@"<member name=""T:Example.First"" />"), Type <DeepFirst>(@"<member name=""T:Example.Deep.DeepFirst"" />"), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces.ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Namespace("Example"))); namespaces.ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Namespace("Example.Deep"))); }
public void ShouldHaveInterfacesForTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type<ClassWithInterfaces>(@"<member name=""T:Example.ClassWithInterfaces"" />"), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types[0].Interfaces.Count.ShouldEqual(2); namespaces[0].Types[0].Interfaces[0].PrettyName.ShouldEqual("EmptyInterface"); namespaces[0].Types[0].Interfaces[1].PrettyName.ShouldEqual("IDisposable"); }
public void ShouldHaveEventsInTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Event<Second>(@"<member name=""E:Example.Second.AnEvent"" />", "AnEvent"), }; var namespaces = model.CombineToTypeHierarchy(members); var ev = typeof (Second).GetEvent("AnEvent"); namespaces[0].Types[0].Events.ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Event(ev, typeof(Second)))); }
public void ShouldHaveValueForProperty() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var properties = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Property<Second>(@"<member name=""P:Example.Second.SecondProperty""><value>The string representation.</value></member>", x => x.SecondProperty) }; IList<Namespace> namespaces = model.CombineToTypeHierarchy(properties); namespaces[0].Types[0].Properties[0].Value.Children.Count().ShouldEqual(1); ((InlineText) namespaces[0].Types[0].Properties[0].Value.Children.First()).Text.ShouldEqual("The string representation."); }
public void ShouldHaveValueForMethod() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var methods = new IDocumentationMember[] { Type<ReturnMethodClass>(@"<member name=""T:Example.ReturnMethodClass"" />"), Method<ReturnMethodClass>(@"<member name=""Example.ReturnMethodClass""><value>A string.</value></member>", x => x.Method()) }; IList<Namespace> namespaces = model.CombineToTypeHierarchy(methods); namespaces[0].Types[0].Methods[0].Value.Children.Count().ShouldEqual(1); ((InlineText) namespaces[0].Types[0].Methods[0].Value.Children.First()).Text.ShouldEqual("A string."); }
public void ShouldBuildNamespaces() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type<First>(@"<member name=""T:Example.First"" />"), Type<DeepFirst>(@"<member name=""T:Example.Deep.DeepFirst"" />"), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces.ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Namespace("Example"))); namespaces.ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Namespace("Example.Deep"))); }
public void ShouldHaveEventsInTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type <Second>(@"<member name=""T:Example.Second"" />"), Event <Second>(@"<member name=""E:Example.Second.AnEvent"" />", "AnEvent"), }; var namespaces = model.CombineToTypeHierarchy(members); var ev = typeof(Second).GetEvent("AnEvent"); namespaces[0].Types[0].Events.ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Event(ev, typeof(Second)))); }
public void ShouldHaveExampleForType() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type <Second>("<member name=\"T:Example.Second\"><example>\r\n void Something()\r\n {\r\n return;\r\n }\r\n </example></member>") }; var namespaces = model.CombineToTypeHierarchy(members); var type = namespaces.Single().Classes.Single(); type.Example.ShouldNotBeNull(); type.Example.ShouldMatchStructure(com => com.InlineText("void Something()\r\n{\r\n return;\r\n}")); }
public void ShouldHaveExampleForMethod() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Method<Second>("<member name=\"M:Example.Second.SecondMethod2(System.String,System.Int32)\"><example>\r\n void Something()\r\n {\r\n return;\r\n }\r\n </example></member>", x => x.SecondMethod2(null, 0)) }; var namespaces = model.CombineToTypeHierarchy(members); var method = namespaces.Single().Classes.Single().Methods.Single(); method.Example.ShouldNotBeNull(); method.Example.ShouldMatchStructure(com => com.InlineText("void Something()\r\n{\r\n return;\r\n}")); }
public void ShouldRaiseWarningOnUnexpectedKindInReferenceInType() { var events = new EventAggregator(); var model = new DocumentationModelBuilder(RealParser, events); var members = new IDocumentationMember[] { Type <Second>(@"<member name=""T:Example.Second""><summary><see cref=""G:Whats-a-g"" /></summary></member>") }; string text = string.Empty; events.Subscribe(EventType.Warning, x => text = x); model.CombineToTypeHierarchy(members); Assert.AreEqual("Unsupported documentation member found: 'G:Whats-a-g'", text); }
public void ShouldHaveRemarksForProperties() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Property<Second>(@"<member name=""P:Example.Second.SecondProperty""><remarks>Second property</remarks></member>", x => x.SecondProperty), }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List<Comment>(namespaces[0].Types[0].Properties[0].Remarks.Children); comment.Count.ShouldEqual(1); ((InlineText)comment[0]).Text.ShouldEqual("Second property"); }
public void ShouldHaveSummaryForFields() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Field<Second>(@"<member name=""F:Example.Second.aField""><summary>A field</summary></member>", x => x.aField), }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List<Comment>(namespaces[0].Types[0].Fields[0].Summary.Children); comment.Count.ShouldEqual(1); ((InlineText)comment[0]).Text.ShouldEqual("A field"); }
public void ShouldHaveEventsInTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Field<Second>(@"<member name=""F:Example.Second.aField"" />", x => x.aField), }; var namespaces = model.CombineToTypeHierarchy(members); var field = Field<Second>(x => x.aField); namespaces[0].Types[0].Fields .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Field(field, typeof(Second)))); }
public void ShouldHaveRemarksForEvents() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Event<Second>(@"<member name=""E:Example.Second.AnEvent""><remarks>An event</remarks></member>", "AnEvent"), }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List<Comment>(namespaces[0].Types[0].Events[0].Remarks.Children); comment.Count.ShouldEqual(1); ((InlineText)comment[0]).Text.ShouldEqual("An event"); }
public void Generate() { if (_assemblies.Count <= 0) return; var parser = new DocumentationModelBuilder(_commentParser, _eventAggregator); var namespaces = parser.CreateDocumentModel(_assemblies, _contentsOfXmlFiles); var writer = new BulkPageWriter(new PageWriter(new HtmlGenerator(), new FileSystemOutputWriter(), new PatternTemplateResolver())); writer.SetAssemblies(_assemblies); writer.CreatePagesFromDirectory(_templatePath, _outputPath, namespaces); var resourceManager = new UntransformableResourceManager(); resourceManager.MoveResources(_templatePath, _outputPath); }
public void ShouldHaveExampleForMethod() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type <Second>(@"<member name=""T:Example.Second"" />"), Method <Second>("<member name=\"M:Example.Second.SecondMethod2(System.String,System.Int32)\"><example>\r\n void Something()\r\n {\r\n return;\r\n }\r\n </example></member>", x => x.SecondMethod2(null, 0)) }; var namespaces = model.CombineToTypeHierarchy(members); var method = namespaces.Single().Classes.Single().Methods.Single(); method.Example.ShouldNotBeNull(); method.Example.ShouldMatchStructure(com => com.InlineText("void Something()\r\n{\r\n return;\r\n}")); }
public void ShouldHaveEventsInTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type <Second>(@"<member name=""T:Example.Second"" />"), Field <Second>(@"<member name=""F:Example.Second.aField"" />", x => x.aField), }; var namespaces = model.CombineToTypeHierarchy(members); var field = Field <Second>(x => x.aField); namespaces[0].Types[0].Fields .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Field(field, typeof(Second)))); }
public void ShouldPassMethodReturnsToContentParser() { var contentParser = MockRepository.GenerateMock<ICommentParser>(); var model = new DocumentationModelBuilder(contentParser, new EventAggregator()); var members = new[] { Method<Second>(@"<member name=""M:Example.Second.ReturnType""><returns>Method with return</returns></member>", x => x.ReturnType()), }; contentParser.Stub(x => x.ParseNode(null)) .IgnoreArguments() .Return(new List<Comment>()); model.CombineToTypeHierarchy(members); contentParser.AssertWasCalled(x => x.ParseNode(members[0].Xml.ChildNodes[0])); }
public void ShouldntHaveAnyUnresolvedReferencesLeftIfAllValid() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new[] { Type <First>(@"<member name=""T:Example.First"" />"), Type <Second>(@"<member name=""T:Example.Second""><summary><see cref=""T:Example.First"" /></summary></member>"), }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List <Comment>(namespaces[0].Types[1].Summary.Children); ((See)comment[0]).Reference.ShouldNotBeNull(); ((See)comment[0]).Reference.IsResolved.ShouldBeTrue(); }
public void ShouldHaveRemarksForMethods() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Method<Second>(@"<member name=""M:Example.Second.SecondMethod2(System.String,System.Int32)""><remarks>Second method 2</remarks></member>", x => x.SecondMethod2(null, 0)) }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List<Comment>(namespaces[0].Types[0].Methods[0].Remarks.Children); comment.Count.ShouldEqual(1); ((InlineText)comment[0]).Text.ShouldEqual("Second method 2"); }
public void ShouldHaveMethodsInTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Method<Second>(@"<member name=""M:Example.Second.SecondMethod"" />", x => x.SecondMethod()), Method<Second>(@"<member name=""M:Example.Second.SecondMethod2(System.String,System.Int32)"" />", x => x.SecondMethod2(null, 0)) }; var namespaces = model.CombineToTypeHierarchy(members); var method = Method<Second>(x => x.SecondMethod()); var method2 = Method<Second>(x => x.SecondMethod2(null, 0)); namespaces[0].Types[0].Methods .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Method(method, typeof(Second)))) .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Method(method2, typeof(Second)))); }
public void ShouldHaveMethodsInTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type <Second>(@"<member name=""T:Example.Second"" />"), Method <Second>(@"<member name=""M:Example.Second.SecondMethod"" />", x => x.SecondMethod()), Method <Second>(@"<member name=""M:Example.Second.SecondMethod2(System.String,System.Int32)"" />", x => x.SecondMethod2(null, 0)) }; var namespaces = model.CombineToTypeHierarchy(members); var method = Method <Second>(x => x.SecondMethod()); var method2 = Method <Second>(x => x.SecondMethod2(null, 0)); namespaces[0].Types[0].Methods .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Method(method, typeof(Second)))) .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Method(method2, typeof(Second)))); }
public void ShouldHaveTypesInNamespaces() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type <First>(@"<member name=""T:Example.First"" />"), Type <Second>(@"<member name=""T:Example.Second"" />"), Type <DeepFirst>(@"<member name=""T:Example.Deep.DeepFirst"" />") }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Type(typeof(First)))) .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Type(typeof(Second)))); namespaces[1].Types .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Type(typeof(DeepFirst)))); }
public void ShouldHaveParametersInMethods() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Method<Second>(@"<member name=""M:Example.Second.SecondMethod2(System.String,Example.First)"" />", x => x.SecondMethod3(null, null)) }; var namespaces = model.CombineToTypeHierarchy(members); var method = namespaces[0].Types[0].Methods[0]; method.Parameters.Count.ShouldEqual(2); method.Parameters[0].Name.ShouldEqual("one"); method.Parameters[0].Reference.IsExternal.ShouldBeTrue(); method.Parameters[1].Name.ShouldEqual("two"); method.Parameters[1].Reference.ShouldBeOfType<DeclaredType>(); }
public void ShouldHaveSummaryForMethodParameter() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Method<Second>(@" <member name=""M:Example.Second.SecondMethod2(System.String,System.Int32)""> <param name=""one"">First parameter</param> <param name=""two"">Second parameter</param> </member>", x => x.SecondMethod2(null, 0)) }; var namespaces = model.CombineToTypeHierarchy(members); var comment1 = new List<Comment>(namespaces[0].Types[0].Methods[0].Parameters[0].Summary.Children); var comment2 = new List<Comment>(namespaces[0].Types[0].Methods[0].Parameters[1].Summary.Children); comment1.Count.ShouldEqual(1); ((InlineText)comment1[0]).Text.ShouldEqual("First parameter"); comment2.Count.ShouldEqual(1); ((InlineText)comment2[0]).Text.ShouldEqual("Second parameter"); }
public void ShouldntInheritInterfacesForTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type<ClassWithBaseWithInterfaces>(@"<member name=""T:Example.ClassWithBaseWithInterfaces"" />"), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types[0].Interfaces.Count.ShouldEqual(0); }
public void UnresolvedReferencesBecomeExternalReferencesIfStillExist() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new[] { Type<Second>(@"<member name=""T:Example.Second""><summary><see cref=""T:Example.First"" /></summary></member>") }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List<Comment>(namespaces[0].Types[0].Summary.Children); ((See)comment[0]).Reference.IsExternal.ShouldBeTrue(); ((See)comment[0]).Reference.Name.ShouldEqual("First"); ((See)comment[0]).Reference.FullName.ShouldEqual("Example.First"); }
public void ShouldPassRemarksToContentParser() { var contentParser = MockRepository.GenerateMock<ICommentParser>(); var model = new DocumentationModelBuilder(contentParser, new EventAggregator()); var members = new[] { Type<First>(@"<member name=""T:Example.First""><remarks>First remark</remarks></member>") }; contentParser.Stub(x => x.ParseNode(null)) .IgnoreArguments() .Return(new List<Comment>()); model.CombineToTypeHierarchy(members); contentParser.AssertWasCalled(x => x.ParseNode(members[0].Xml.ChildNodes[0])); }
public void ShouldPassMethodParameterSummaryToContentParser() { var contentParser = MockRepository.GenerateMock<ICommentParser>(); var model = new DocumentationModelBuilder(contentParser, new EventAggregator()); var members = new[] { Method<Second>(@" <member name=""M:Example.Second.SecondMethod2(System.String,System.Int32)""> <param name=""one"">First parameter</param> <param name=""two"">Second parameter</param> </member>", x => x.SecondMethod2(null, 0)) }; contentParser.Stub(x => x.ParseNode(null)) .IgnoreArguments() .Return(new List<Comment>()); model.CombineToTypeHierarchy(members); contentParser.AssertWasCalled(x => x.ParseNode(members[0].Xml.ChildNodes[0])); contentParser.AssertWasCalled(x => x.ParseNode(members[0].Xml.ChildNodes[1])); }
public void ShouldHaveReturnTypeInProperties() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new IDocumentationMember[] { Type<Second>(@"<member name=""T:Example.Second"" />"), Property<Second>(@"<member name=""P:Example.Second.SecondProperty"" />", x => x.SecondProperty) }; var namespaces = model.CombineToTypeHierarchy(members); var property = namespaces[0].Types[0].Properties[0]; property.ReturnType.ShouldNotBeNull(); property.ReturnType.PrettyName.ShouldEqual("string"); }
public void should_have_summary_for_documented_types() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = DocumentableMemberFinder.ReflectMembersForDocumenting(new[] {typeof (First)}).ToList(); var indexOfType = members.FindIndex(m => m is ReflectedType); members[indexOfType] = Type<First>(@"<member name=""T:Example.First""><summary>The type description</summary></member>"); var namespaces = model.CombineToTypeHierarchy(members); var onlyTypeInModel = namespaces.Single().Types.Single(); onlyTypeInModel.Summary.Children.Count().ShouldNotEqual(0); }
public void ShouldntShowOnlyDirectInterfacesForTypes() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type<ClassWithBaseWithInterfacesAndDirect>(@"<member name=""T:Example.ClassWithBaseWithInterfacesAndDirect"" />"), }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types[0].Interfaces.Count.ShouldEqual(1); namespaces[0].Types[0].Interfaces[0].PrettyName.ShouldEqual("IExample"); }
public void ShouldHaveTypesInNamespaces() { var model = new DocumentationModelBuilder(StubParser, new EventAggregator()); var members = new[] { Type<First>(@"<member name=""T:Example.First"" />"), Type<Second>(@"<member name=""T:Example.Second"" />"), Type<DeepFirst>(@"<member name=""T:Example.Deep.DeepFirst"" />") }; var namespaces = model.CombineToTypeHierarchy(members); namespaces[0].Types .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Type(typeof(First)))) .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Type(typeof(Second)))); namespaces[1].Types .ShouldContain(x => x.IsIdentifiedBy(IdentifierFor.Type(typeof(DeepFirst)))); }
public void ShouldHaveRemarksForType() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new[] { Type<First>(@"<member name=""T:Example.First""><remarks>First remark</remarks></member>"), }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List<Comment>(namespaces[0].Types[0].Remarks.Children); comment.Count.ShouldEqual(1); ((InlineText)comment[0]).Text.ShouldEqual("First remark"); }
public void ShouldntHaveAnyUnresolvedReferencesLeftIfAllValid() { var model = new DocumentationModelBuilder(RealParser, new EventAggregator()); var members = new[] { Type<First>(@"<member name=""T:Example.First"" />"), Type<Second>(@"<member name=""T:Example.Second""><summary><see cref=""T:Example.First"" /></summary></member>"), }; var namespaces = model.CombineToTypeHierarchy(members); var comment = new List<Comment>(namespaces[0].Types[1].Summary.Children); ((See)comment[0]).Reference.ShouldNotBeNull(); ((See)comment[0]).Reference.IsResolved.ShouldBeTrue(); }