/// <summary> /// Reads an ICalidusProject from an XmlReader /// </summary> /// <param name="fileName">The filename for the project</param> /// <param name="reader">The reader to read from</param> /// <returns>The calidus project</returns> public ICalidusProject ReadFrom(String fileName, XmlReader reader) { XDocument _doc = XDocument.Load(reader); XElement calidusProject = _doc.Root; XAttribute sourceLocation = calidusProject.Attribute("sourcelocation"); CalidusProject res = new CalidusProject(fileName); XElement settings = calidusProject.Element("settings"); XElement ignoreAssembly = settings.Element("IgnoreAssemblyFiles"); XElement ignoreDesigner = settings.Element("IgnoreDesignerFiles"); XElement ignoreProgram = settings.Element("IgnoreProgramFiles"); res.IgnoreAssemblyFiles = Boolean.Parse(ignoreAssembly.Value); res.IgnoreDesignerFiles = Boolean.Parse(ignoreDesigner.Value); res.IgnoreProgramFiles = Boolean.Parse(ignoreProgram.Value); XElement ignored = calidusProject.Element("ignore"); foreach (XElement ignoredFile in ignored.Elements()) { res.IgnoredFileList.Add(ignoredFile.Attribute("path").Value); } foreach (IRuleConfigurationOverride anOverride in _rulesSectionManager.ReadFrom(_doc)) { res.SetProjectRuleConfigurationOverrideTo(anOverride); } reader.Close(); return(res); }
public void ReadShouldReadProjectFromXml() { StringBuilder bldr = new StringBuilder(); bldr.Append(@"<?xml version=""1.0"" encoding=""utf-8""?>"); bldr.Append(@"<calidusproject>"); bldr.Append("<settings>"); bldr.Append(@"<IgnoreAssemblyFiles>true</IgnoreAssemblyFiles>"); bldr.Append(@"<IgnoreDesignerFiles>false</IgnoreDesignerFiles>"); bldr.Append(@"<IgnoreProgramFiles>true</IgnoreProgramFiles>"); bldr.Append("</settings>"); bldr.Append("<ignore>"); bldr.Append(@"<file path=""main\file1.cs"" />"); bldr.Append(@"<file path=""test\testfile.cs"" />"); bldr.Append("</ignore>"); bldr.Append("</calidusproject>"); IList <String> fileList = new List <String>(); fileList.Add(@"main\file1.cs"); fileList.Add(@"test\testfile.cs"); ICalidusProject expected = Mocker.StrictMock <ICalidusProject>(); Expect.Call(expected.IgnoreAssemblyFiles).Return(true).Repeat.Once(); Expect.Call(expected.IgnoreDesignerFiles).Return(false).Repeat.Once(); Expect.Call(expected.IgnoreProgramFiles).Return(true).Repeat.Once(); Expect.Call(expected.IgnoredFiles).Return(fileList).Repeat.Once(); Expect.Call(_rulesSectionManager.ReadFrom(null)).IgnoreArguments().Return(new IRuleConfigurationOverride[] {}).Repeat.Once(); Mocker.ReplayAll(); Stream source = new MemoryStream(); StreamWriter writer = new StreamWriter(source); writer.Write(bldr.ToString()); writer.Flush(); source.Position = 0; ICalidusProject actual = _manager.ReadFrom("test", new XmlTextReader(source)); Assert.AreEqual(expected.IgnoreAssemblyFiles, actual.IgnoreAssemblyFiles); Assert.AreEqual(expected.IgnoreDesignerFiles, actual.IgnoreDesignerFiles); Assert.AreEqual(expected.IgnoreProgramFiles, actual.IgnoreProgramFiles); CollectionAssert.AreEquivalent(expected.IgnoredFiles, actual.IgnoredFiles); Mocker.VerifyAll(); }