示例#1
0
        /// <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);
        }
示例#2
0
        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();
        }