//[InlineData("", "", 0)] //[InlineData("", "", 0)] //[InlineData("", "", 0)] //[InlineData("", "", 0)] //[InlineData("", "", 0)] //[InlineData("", "", 0)] //[InlineData("", "", 0)] //[InlineData("", "", 0)] public void WC003_Compare(string name1, string name2, int revisionCount) { FileInfo source1Docx = new FileInfo(Path.Combine(TestUtil.SourceDir.FullName, name1)); FileInfo source2Docx = new FileInfo(Path.Combine(TestUtil.SourceDir.FullName, name2)); var source1CopiedToDestDocx = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, source1Docx.Name)); var source2CopiedToDestDocx = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, source2Docx.Name)); if (!source1CopiedToDestDocx.Exists) { File.Copy(source1Docx.FullName, source1CopiedToDestDocx.FullName); } if (!source2CopiedToDestDocx.Exists) { File.Copy(source2Docx.FullName, source2CopiedToDestDocx.FullName); } /************************************************************************************************************************/ if (s_OpenWord) { FileInfo source1DocxForWord = new FileInfo(Path.Combine(TestUtil.SourceDir.FullName, name1)); FileInfo source2DocxForWord = new FileInfo(Path.Combine(TestUtil.SourceDir.FullName, name2)); var source1CopiedToDestDocxForWord = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, source1Docx.Name.Replace(".docx", "-For-Word.docx"))); var source2CopiedToDestDocxForWord = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, source2Docx.Name.Replace(".docx", "-For-Word.docx"))); if (!source1CopiedToDestDocxForWord.Exists) { File.Copy(source1Docx.FullName, source1CopiedToDestDocxForWord.FullName); } if (!source2CopiedToDestDocxForWord.Exists) { File.Copy(source2Docx.FullName, source2CopiedToDestDocxForWord.FullName); } FileInfo wordExe = new FileInfo(@"C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE"); var path = new DirectoryInfo(@"C:\Users\Eric\Documents\WindowsPowerShellModules\Open-Xml-PowerTools\TestFiles"); WordRunner.RunWord(wordExe, source2CopiedToDestDocxForWord); WordRunner.RunWord(wordExe, source1CopiedToDestDocxForWord); } /************************************************************************************************************************/ var before = source1CopiedToDestDocx.Name.Replace(".docx", ""); var after = source2CopiedToDestDocx.Name.Replace(".docx", ""); var docxWithRevisionsFi = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, before + "-COMPARE-" + after + ".docx")); WmlDocument source1Wml = new WmlDocument(source1CopiedToDestDocx.FullName); WmlDocument source2Wml = new WmlDocument(source2CopiedToDestDocx.FullName); WmlComparerSettings settings = new WmlComparerSettings(); WmlDocument comparedWml = WmlComparer.Compare(source1Wml, source2Wml, settings); comparedWml.SaveAs(docxWithRevisionsFi.FullName); using (MemoryStream ms = new MemoryStream()) { ms.Write(comparedWml.DocumentByteArray, 0, comparedWml.DocumentByteArray.Length); using (WordprocessingDocument wDoc = WordprocessingDocument.Open(ms, true)) { OpenXmlValidator validator = new OpenXmlValidator(); var errors = validator.Validate(wDoc).Where(e => !ExpectedErrors.Contains(e.Description)); if (errors.Count() > 0) { var ind = " "; var sb = new StringBuilder(); foreach (var err in errors) { #if true sb.Append("Error" + Environment.NewLine); sb.Append(ind + "ErrorType: " + err.ErrorType.ToString() + Environment.NewLine); sb.Append(ind + "Description: " + err.Description + Environment.NewLine); sb.Append(ind + "Part: " + err.Part.Uri.ToString() + Environment.NewLine); sb.Append(ind + "XPath: " + err.Path.XPath + Environment.NewLine); #else sb.Append(" \"" + err.Description + "\"," + Environment.NewLine); #endif } var sbs = sb.ToString(); Assert.Equal("", sbs); } } } /************************************************************************************************************************/ if (s_OpenWord) { FileInfo wordExe = new FileInfo(@"C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE"); WordRunner.RunWord(wordExe, docxWithRevisionsFi); } /************************************************************************************************************************/ WmlDocument revisionWml = new WmlDocument(docxWithRevisionsFi.FullName); var revisions = WmlComparer.GetRevisions(revisionWml); Assert.Equal(revisionCount, revisions.Count()); }
public void WC001_Consolidate(string originalName, string revisedDocumentsXml) { FileInfo originalDocx = new FileInfo(Path.Combine(TestUtil.SourceDir.FullName, originalName)); var originalCopiedToDestDocx = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, originalDocx.Name)); if (!originalCopiedToDestDocx.Exists) { File.Copy(originalDocx.FullName, originalCopiedToDestDocx.FullName); } var revisedDocumentsXElement = XElement.Parse(revisedDocumentsXml); var revisedDocumentsArray = revisedDocumentsXElement .Elements() .Select(z => { FileInfo revisedDocx = new FileInfo(Path.Combine(TestUtil.SourceDir.FullName, z.Element("DocName").Value)); var revisedCopiedToDestDocx = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, revisedDocx.Name)); if (!revisedCopiedToDestDocx.Exists) { File.Copy(revisedDocx.FullName, revisedCopiedToDestDocx.FullName); } return(new WmlRevisedDocumentInfo() { RevisedDocument = new WmlDocument(revisedCopiedToDestDocx.FullName), Color = Color.FromName(z.Element("Color").Value), Revisor = z.Element("Revisor").Value, }); }) .ToList(); var consolidatedDocxName = originalCopiedToDestDocx.Name.Replace(".docx", "-Consolidated.docx"); var consolidatedDocumentFi = new FileInfo(Path.Combine(TestUtil.TempDir.FullName, consolidatedDocxName)); WmlDocument source1Wml = new WmlDocument(originalCopiedToDestDocx.FullName); WmlComparerSettings settings = new WmlComparerSettings(); WmlDocument consolidatedWml = WmlComparer.Consolidate( source1Wml, revisedDocumentsArray, settings); consolidatedWml.SaveAs(consolidatedDocumentFi.FullName); using (MemoryStream ms = new MemoryStream()) { ms.Write(consolidatedWml.DocumentByteArray, 0, consolidatedWml.DocumentByteArray.Length); using (WordprocessingDocument wDoc = WordprocessingDocument.Open(ms, true)) { OpenXmlValidator validator = new OpenXmlValidator(); var errors = validator.Validate(wDoc).Where(e => !ExpectedErrors.Contains(e.Description)); if (errors.Count() > 0) { var ind = " "; var sb = new StringBuilder(); foreach (var err in errors) { #if true sb.Append("Error" + Environment.NewLine); sb.Append(ind + "ErrorType: " + err.ErrorType.ToString() + Environment.NewLine); sb.Append(ind + "Description: " + err.Description + Environment.NewLine); sb.Append(ind + "Part: " + err.Part.Uri.ToString() + Environment.NewLine); sb.Append(ind + "XPath: " + err.Path.XPath + Environment.NewLine); #else sb.Append(" \"" + err.Description + "\"," + Environment.NewLine); #endif } var sbs = sb.ToString(); Assert.Equal("", sbs); } } } /************************************************************************************************************************/ if (s_OpenWord) { FileInfo wordExe = new FileInfo(@"C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE"); WordRunner.RunWord(wordExe, consolidatedDocumentFi); } /************************************************************************************************************************/ }