Example #1
0
        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>");
        }
Example #2
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");
        }
Example #3
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");
        }
Example #4
0
        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");
        }
Example #5
0
        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");
        }
Example #6
0
        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);
        }
Example #8
0
        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")));
        }
Example #9
0
        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");
        }
Example #10
0
        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))));
        }
Example #11
0
        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.");
        }
Example #12
0
        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.");
        }
Example #13
0
        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")));
        }
Example #14
0
        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))));
        }
Example #15
0
        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}"));
        }
Example #16
0
        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);
        }
Example #18
0
        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");
        }
Example #19
0
        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");
        }
Example #20
0
        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))));
        }
Example #21
0
        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");
        }
Example #22
0
        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);
        }
Example #23
0
        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}"));
        }
Example #24
0
        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))));
        }
Example #25
0
        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]));
        }
Example #26
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();
        }
Example #27
0
        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");
        }
Example #28
0
        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))));
        }
Example #29
0
        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))));
        }
Example #30
0
        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))));
        }
Example #31
0
        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>();
        }
Example #32
0
        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");
        }
Example #33
0
        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);
        }
Example #34
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");
        }
Example #35
0
        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]));
        }
Example #36
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]));
        }
Example #37
0
        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");
        }
Example #38
0
 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);
 }
Example #39
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");
        }
Example #40
0
        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))));
        }
Example #41
0
        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");
        }
Example #42
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();
        }