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