Пример #1
0
        /// <summary>
        /// Creates a new instance of the <see cref="XmlDocCommentReader"/> class
        /// by searching for a doc comments file that corresponds to the given assembly.
        /// Searches the given paths, and configures the reader to use a user-defined read policy.
        /// </summary>
        ///
        /// <param name="assembly">
        /// The <see cref="System.Reflection.Assembly"/> whose doc comments are retrieved.
        /// </param>
        ///
        /// <param name="settings">
        /// The <see cref="XmlDocCommentReaderSettings"/> object containing the doc comment search paths.
        /// </param>
        ///
        /// <param name="createReadPolicy">
        /// A factory method that accepts the full path to an XML doc comments file,
        /// returning a user-defined read policy.
        /// </param>
        public XmlDocCommentReader(Assembly assembly, XmlDocCommentReaderSettings settings, CreateReadPolicyDelegate createReadPolicy)
        {
            m_settings            = settings ?? XmlDocCommentReaderSettings.Default;
            m_docCommentsFullPath = ResolveDocCommentsLocation(assembly, m_settings.DirectoryNames);

            m_docCommentsReadPolicy = createReadPolicy(m_docCommentsFullPath);
        }
        public void InternalConstruction_Assembly()
        {
            IFile fileSystem = MockRepository.GenerateMock <IFile>();
            CreateReadPolicyDelegate createPolicy = MockRepository.GenerateMock <CreateReadPolicyDelegate>();
            IXmlDocCommentReadPolicy readPolicy   = MockRepository.GenerateStub <IXmlDocCommentReadPolicy>();

            string[] expectedDirectoryNames = { @"C:\a", @"C:\a\b", @"C:\a\b\c", @"C:\a\b\c\d" };
            string   expectedFileName       = Path.GetFileName(MscorlibXml);

            for (int i = 0; i < expectedDirectoryNames.Length - 1; ++i)
            {
                fileSystem.Expect(fs => fs.Exists(Path.Combine(expectedDirectoryNames[i], expectedFileName)))
                .Return(false);
            }

            string expectedFullPath = Path.Combine(expectedDirectoryNames[expectedDirectoryNames.Length - 1], expectedFileName);

            fileSystem.Expect(fs => fs.Exists(expectedFullPath)).Return(true);
            createPolicy.Expect(cp => cp(expectedFullPath)).Return(readPolicy);

            XmlDocCommentReaderSettings settings = new XmlDocCommentReaderSettings(expectedDirectoryNames);
            XmlDocCommentReader         reader   = new XmlDocCommentReader(typeof(int).Assembly, settings, fileSystem, createPolicy);

            Assert.That(reader.FileProxy, Is.SameAs(fileSystem));
            Assert.That(reader.FullPath, Is.EqualTo(expectedFullPath));
            Assert.That(reader.ReadPolicy, Is.SameAs(readPolicy));
            Assert.That(reader.Settings, Is.SameAs(settings));

            fileSystem.VerifyAllExpectations();
            createPolicy.VerifyAllExpectations();
        }
Пример #3
0
        /// <summary>
        /// Creates a new instance of the <see cref="XmlDocCommentReader"/> class
        /// with a given path to the XML doc comments, and configures the reader
        /// to use a user-defined read policy.
        /// </summary>
        ///
        /// <param name="docCommentsFullPath">
        /// The full path of the XML doc comments.
        /// </param>
        ///
        /// <param name="readPolicy">
        /// The doc comment read policy.
        /// </param>
        ///
        /// <remarks>
        /// Used internally by test code to override file IO operations.
        /// </remarks>
        ///
        /// <exception cref="System.IO.FileNotFoundException">
        /// <paramref name="docCommentsFullPath"/> could does not exist or is inaccessible.
        /// </exception>
        internal XmlDocCommentReader(string docCommentsFullPath, IXmlDocCommentReadPolicy readPolicy)
        {
            if (!File.Exists(docCommentsFullPath))
            {
                throw new FileNotFoundException($"File, '{docCommentsFullPath}' not found!", docCommentsFullPath);
            }

            FullPath   = docCommentsFullPath;
            ReadPolicy = readPolicy;
        }
Пример #4
0
        /// <summary>
        /// Creates a new instance of the <see cref="XmlDocCommentReader"/> class
        /// with a given path to the XML doc comments, and configures the reader
        /// to use a user-defined read policy.
        /// </summary>
        ///
        /// <param name="docCommentsFullPath">
        /// The full path of the XML doc comments.
        /// </param>
        ///
        /// <param name="readPolicy">
        /// The doc comment read policy.
        /// </param>
        ///
        /// <remarks>
        /// Used internally by test code to override file IO operations.
        /// </remarks>
        ///
        /// <exception cref="System.IO.FileNotFoundException">
        /// <paramref name="docCommentsFullPath"/> could does not exist or is inaccessible.
        /// </exception>
        internal XmlDocCommentReader(string docCommentsFullPath, IXmlDocCommentReadPolicy readPolicy)
        {
            if (!File.Exists(docCommentsFullPath))
            {
                throw new FileNotFoundException($"File {docCommentsFullPath} not found", docCommentsFullPath);
            }

            m_docCommentsFullPath   = docCommentsFullPath;
            m_docCommentsReadPolicy = readPolicy;
            m_settings = XmlDocCommentReaderSettings.Default;
        }
Пример #5
0
        /// <summary>
        /// Creates a new instance of the <see cref="XmlDocCommentReader"/> class
        /// with a given path to the XML doc comments, and configures the reader
        /// to use a user-defined read policy.
        /// </summary>
        ///
        /// <param name="docCommentsFullPath">
        /// The full path of the XML doc comments.
        /// </param>
        ///
        /// <param name="readPolicy">
        /// The doc comment read policy.
        /// </param>
        ///
        /// <remarks>
        /// Used internally by test code to override file IO operations.
        /// </remarks>
        ///
        /// <exception cref="System.IO.FileNotFoundException">
        /// <paramref name="docCommentsFullPath"/> could does not exist or is inaccessible.
        /// </exception>
        internal XmlDocCommentReader(string docCommentsFullPath, IXmlDocCommentReadPolicy readPolicy)
        {
            if (!File.Exists(docCommentsFullPath))
            {
                throw new FileNotFoundException(
                          String.Format("The given XML doc comments file path '{0}' is invalid or inaccessible.", docCommentsFullPath),
                          docCommentsFullPath);
            }

            _docCommentsFullPath   = docCommentsFullPath;
            _docCommentsReadPolicy = readPolicy;
            _settings = XmlDocCommentReaderSettings.Default;
        }
Пример #6
0
        /// <summary>
        /// Creates a new instance of the <see cref="XmlDocCommentReader"/> class
        /// with a given path to the XML doc comments, and configures the reader
        /// to use a user-defined read policy.
        /// </summary>
        ///
        /// <param name="docCommentsFullPath">
        /// The full path of the XML doc comments.
        /// </param>
        ///
        /// <param name="fileProxy">
        /// The proxy to the file system.
        /// </param>
        ///
        /// <param name="readPolicy">
        /// The doc comment read policy.
        /// </param>
        ///
        /// <remarks>
        /// Used internally by test code to override file IO operations.
        /// </remarks>
        ///
        /// <exception cref="System.IO.FileNotFoundException">
        /// <paramref name="docCommentsFullPath"/> could does not exist or is inaccessible.
        /// </exception>
        internal XmlDocCommentReader(string docCommentsFullPath, IFile fileProxy, IXmlDocCommentReadPolicy readPolicy)
        {
            if (!fileProxy.Exists(docCommentsFullPath))
            {
                throw new FileNotFoundException(
                          String.Format(Resources.Error_XmlDocComments_FileNotFound, docCommentsFullPath),
                          docCommentsFullPath);
            }

            m_fileProxy             = fileProxy;
            m_docCommentsFullPath   = docCommentsFullPath;
            m_docCommentsReadPolicy = readPolicy;
            m_settings = XmlDocCommentReaderSettings.Default;
        }
        public void GetComments_Method()
        {
            IFile fileProxy = MockRepository.GenerateMock <IFile>();
            IXmlDocCommentReadPolicy readPolicy = MockRepository.GenerateMock <IXmlDocCommentReadPolicy>();

            MethodInfo expectedMethod   = MethodInfo.GetCurrentMethod() as MethodInfo;
            XElement   expectedComments = new XElement("comments");

            fileProxy.Expect(fp => fp.Exists(String.Empty)).Return(true);
            readPolicy.Expect(rp => rp.ReadMember(Convert.ToXmlDocCommentMember(expectedMethod))).Return(expectedComments);

            XmlDocCommentReader reader = new XmlDocCommentReader(String.Empty, fileProxy, readPolicy);

            Assert.That(reader.GetComments(expectedMethod), Is.SameAs(expectedComments));

            fileProxy.VerifyAllExpectations();
            readPolicy.VerifyAllExpectations();
        }
        public void GetComments_Property()
        {
            IFile fileProxy = MockRepository.GenerateMock <IFile>();
            IXmlDocCommentReadPolicy readPolicy = MockRepository.GenerateMock <IXmlDocCommentReadPolicy>();

            PropertyInfo expectedProperty = typeof(Array).GetProperty("Length");
            XElement     expectedComments = new XElement("comments");

            fileProxy.Expect(fp => fp.Exists(String.Empty)).Return(true);
            readPolicy.Expect(rp => rp.ReadMember(Convert.ToXmlDocCommentMember(expectedProperty))).Return(expectedComments);

            XmlDocCommentReader reader = new XmlDocCommentReader(String.Empty, fileProxy, readPolicy);

            Assert.That(reader.GetComments(expectedProperty), Is.SameAs(expectedComments));

            fileProxy.VerifyAllExpectations();
            readPolicy.VerifyAllExpectations();
        }
        public void GetComments_Field()
        {
            IFile fileProxy = MockRepository.GenerateMock <IFile>();
            IXmlDocCommentReadPolicy readPolicy = MockRepository.GenerateMock <IXmlDocCommentReadPolicy>();

            FieldInfo expectedField    = typeof(Int32).GetField("MaxValue", BindingFlags.Public | BindingFlags.Static);
            XElement  expectedComments = new XElement("comments");

            fileProxy.Expect(fp => fp.Exists(String.Empty)).Return(true);
            readPolicy.Expect(rp => rp.ReadMember(Convert.ToXmlDocCommentMember(expectedField))).Return(expectedComments);

            XmlDocCommentReader reader = new XmlDocCommentReader(String.Empty, fileProxy, readPolicy);

            Assert.That(reader.GetComments(expectedField), Is.SameAs(expectedComments));

            fileProxy.VerifyAllExpectations();
            readPolicy.VerifyAllExpectations();
        }
        public void GetComments_Event()
        {
            IFile fileProxy = MockRepository.GenerateMock <IFile>();
            IXmlDocCommentReadPolicy readPolicy = MockRepository.GenerateMock <IXmlDocCommentReadPolicy>();

            EventInfo expectedEvent    = typeof(Console).GetEvent("CancelKeyPress");
            XElement  expectedComments = new XElement("comments");

            fileProxy.Expect(fp => fp.Exists(String.Empty)).Return(true);
            readPolicy.Expect(rp => rp.ReadMember(Convert.ToXmlDocCommentMember(expectedEvent))).Return(expectedComments);

            XmlDocCommentReader reader = new XmlDocCommentReader(String.Empty, fileProxy, readPolicy);

            Assert.That(reader.GetComments(expectedEvent), Is.SameAs(expectedComments));

            fileProxy.VerifyAllExpectations();
            readPolicy.VerifyAllExpectations();
        }
        public void InternalConstruction_FullPath_FileNotFound()
        {
            IFile fileProxy = MockRepository.GenerateMock <IFile>();
            IXmlDocCommentReadPolicy readPolicy = MockRepository.GenerateStub <IXmlDocCommentReadPolicy>();

            string expectedFullPath = Path.GetRandomFileName();

            fileProxy.Expect(fp => fp.Exists(expectedFullPath)).Return(false);

            Assert.That(
                () => new XmlDocCommentReader(expectedFullPath, fileProxy, readPolicy),
                Throws.InstanceOf <FileNotFoundException>()
                .With.Message.EqualTo(
                    String.Format(Errors.XmlDocComments_FileNotFound, expectedFullPath))
                .And.Property("FileName").SameAs(expectedFullPath));

            fileProxy.VerifyAllExpectations();
        }
        public void InternalConstruction_FullPath()
        {
            IFile fileProxy = MockRepository.GenerateMock <IFile>();
            IXmlDocCommentReadPolicy readPolicy = MockRepository.GenerateStub <IXmlDocCommentReadPolicy>();

            string expectedFullPath = Path.GetRandomFileName();

            fileProxy.Expect(fp => fp.Exists(expectedFullPath)).Return(true);

            XmlDocCommentReader reader = new XmlDocCommentReader(expectedFullPath, fileProxy, readPolicy);

            Assert.That(reader.FileProxy, Is.SameAs(fileProxy));
            Assert.That(reader.FullPath, Is.SameAs(expectedFullPath));
            Assert.That(reader.ReadPolicy, Is.SameAs(readPolicy));
            Assert.That(reader.Settings, Is.SameAs(XmlDocCommentReaderSettings.Default));

            fileProxy.VerifyAllExpectations();
        }
        public void Construction_FullPath_ReadPolicy()
        {
            CreateReadPolicyDelegate createPolicy = MockRepository.GenerateMock <CreateReadPolicyDelegate>();
            IXmlDocCommentReadPolicy readPolicy   = MockRepository.GenerateStub <IXmlDocCommentReadPolicy>();

            string expectedDocCommentsFullPath = Path.Combine(TestDirectory, "Rhino.Mocks.xml");

            createPolicy.Expect(cp => cp(expectedDocCommentsFullPath)).Return(readPolicy);

            XmlDocCommentReader reader = new XmlDocCommentReader(expectedDocCommentsFullPath, createPolicy);

            Assert.That(reader.FileProxy, Is.InstanceOf <FileProxy>());
            Assert.That(reader.FullPath, Is.SameAs(expectedDocCommentsFullPath));
            Assert.That(reader.ReadPolicy, Is.SameAs(readPolicy));
            Assert.That(reader.Settings, Is.SameAs(XmlDocCommentReaderSettings.Default));

            createPolicy.VerifyAllExpectations();
        }
        public void Construction_Assembly_ExplicitSettings_ReadPolicy()
        {
            CreateReadPolicyDelegate createPolicy = MockRepository.GenerateMock <CreateReadPolicyDelegate>();
            IXmlDocCommentReadPolicy readPolicy   = MockRepository.GenerateStub <IXmlDocCommentReadPolicy>();

            // Expectations.
            // The read policy is created via the factory method.
            string expectedDocCommentsFullPath = Path.Combine(TestDirectory, "Rhino.Mocks.xml");

            createPolicy.Expect(cp => cp(expectedDocCommentsFullPath)).Return(readPolicy);

            XmlDocCommentReaderSettings settings = new XmlDocCommentReaderSettings(new string[] { TestDirectory });
            XmlDocCommentReader         reader   = new XmlDocCommentReader(typeof(MockRepository).Assembly, settings, createPolicy);

            Assert.That(reader.FileProxy, Is.InstanceOf <FileProxy>());
            Assert.That(reader.FullPath, Is.EqualTo(expectedDocCommentsFullPath));
            Assert.That(reader.ReadPolicy, Is.SameAs(readPolicy));
            Assert.That(reader.Settings, Is.SameAs(settings));

            createPolicy.VerifyAllExpectations();
        }
        /// <summary>
        /// Creates a new instance of the <see cref="XmlDocCommentReader"/> class
        /// with a given path to the XML doc comments, and configures the reader
        /// to use a user-defined read policy.
        /// </summary>
        /// 
        /// <param name="docCommentsFullPath">
        /// The full path of the XML doc comments.
        /// </param>
        /// 
        /// <param name="fileProxy">
        /// The proxy to the file system.
        /// </param>
        /// 
        /// <param name="readPolicy">
        /// The doc comment read policy.
        /// </param>
        /// 
        /// <remarks>
        /// Used internally by test code to override file IO operations.
        /// </remarks>
        /// 
        /// <exception cref="System.IO.FileNotFoundException">
        /// <paramref name="docCommentsFullPath"/> could does not exist or is inaccessible.
        /// </exception>
        internal XmlDocCommentReader(string docCommentsFullPath, IFile fileProxy, IXmlDocCommentReadPolicy readPolicy)
        {
            if (!fileProxy.Exists(docCommentsFullPath))
            {
                throw new FileNotFoundException(
                    String.Format(Resources.Error_XmlDocComments_FileNotFound, docCommentsFullPath),
                    docCommentsFullPath);
            }

            m_fileProxy = fileProxy;
            m_docCommentsFullPath = docCommentsFullPath;
            m_docCommentsReadPolicy = readPolicy;
            m_settings = XmlDocCommentReaderSettings.Default;
        }
 /// <summary>
 /// Creates a new instance of the <see cref="XmlDocCommentReader"/> class
 /// by searching for a doc comments file that corresponds to the given assembly.
 /// Searches the given paths, and configures the reader to use a user-defined read policy.
 /// </summary>
 /// 
 /// <param name="assembly">
 /// The <see cref="System.Reflection.Assembly"/> whose doc comments are retrieved.
 /// </param>
 /// 
 /// <param name="settings">
 /// The <see cref="XmlDocCommentReaderSettings"/> object containing the doc comment search paths.
 /// </param>
 /// 
 /// <param name="fileProxy">
 /// The proxy to the file system.
 /// </param>
 /// 
 /// <param name="createReadPolicy">
 /// A factory method that accepts the full path to an XML doc comments file,
 /// returning a user-defined read policy.
 /// </param>
 /// 
 /// <remarks>
 /// Used internally by test code to override file IO operations.
 /// </remarks>
 internal XmlDocCommentReader(Assembly assembly, XmlDocCommentReaderSettings settings, IFile fileProxy, CreateReadPolicyDelegate createReadPolicy)
 {
     m_settings = settings ?? XmlDocCommentReaderSettings.Default;
     m_docCommentsFullPath = ResolveDocCommentsLocation(assembly, m_settings.DirectoryNames, fileProxy);
     m_fileProxy = fileProxy;
     m_docCommentsReadPolicy = createReadPolicy(m_docCommentsFullPath);
 }