public void TestReadWithUnknownNodes() { string rmlBadFile = Path.Combine(ROOT_DIR, @"Components\Sourcecode\BSC\WSCompose\Workshare.RedlineML.Reader.Tests\TestDocuments\redlineml_extranodes.xml"); RedlineDocument rd1, rd2; using (TextReader tr = new StringReader(File.ReadAllText(rmlBadFile))) { RedlineMLReader rmr = new RedlineMLReader(tr); Assert.NotNull(rmr); rd1 = rmr.Execute(); } string rmlFile = Path.Combine(ROOT_DIR, @"Components\Sourcecode\BSC\WSCompose\Workshare.RedlineML.Reader.Tests\TestDocuments\redlineml.xml"); using (TextReader tr = new StringReader(File.ReadAllText(rmlFile))) { RedlineMLReader rmr = new RedlineMLReader(tr); Assert.NotNull(rmr); rd2 = rmr.Execute(); } Assert.NotNull(rd1); Assert.NotNull(rd2); Assert.AreEqual(rd1.Descendants().Count(), rd2.Descendants().Count()); Assert.AreEqual(4, rd1.Options.Count); }
private static void ValidateRedlineMLRegeneratedFromRTF(string origFileName, string modFileName, string path, bool changeNumbersInRedline = true) { List<ISummaryItem> result = Helpers.ValidateSummaryList(origFileName, modFileName, path, (x) => x.SetOption((int) WsCompose.OptIds.OPTID_NUMBER_CHANGES, changeNumbersInRedline ? -1 : 0)); Dictionary<int, ChangeType> expectedChangeTypes = new Dictionary<int, ChangeType>(); foreach (ISummaryItem isi in result) { foreach (Change ch in isi.Changes) { expectedChangeTypes[ch.Number] = ch.Type; } } using (WsActivationContext ac = new WsActivationContext()) { string sRedline = Helpers.LastRTFRedline; WsCompose.WSRTFFile file = new WsCompose.WSRTFFile(); file.InputFileName = sRedline; file.ReadFile(); var pTarget = Helpers.MakeComStreamOnHGlobal(); file.GetRedlineML(pTarget as WsCompose.IStream); string sCreatedRedlineML = Helpers.ExtractTextFromIStream(pTarget); Assert.IsFalse(sCreatedRedlineML.Contains("Summary of deletions")); Assert.IsFalse(sCreatedRedlineML.Contains("Document comparison by")); Assert.IsFalse(sCreatedRedlineML.Contains("Redline Summary")); Assert.IsFalse(sCreatedRedlineML.Contains("Legend:")); Assert.IsFalse(sCreatedRedlineML.Contains("Statistics:")); Assert.IsFalse(sCreatedRedlineML.Contains(">80<"), "shouldn't be leaving change numbers in"); Helpers.ValidateRedlineML(sCreatedRedlineML); RedlineMLReader reader = new RedlineMLReader(new StringReader(sCreatedRedlineML)); RedlineDocument rd = reader.Execute(); SummaryItemBuilder bld = new SummaryItemBuilder(rd); List<ISummaryItem> result2 = bld.Execute(); Helpers.ValidateChangeNumbers(result2); foreach (ISummaryItem isi in result2) { foreach (Change ch in isi.Changes) { Assert.AreEqual(expectedChangeTypes[ch.Number], ch.Type, "Mismatched change type on " + ch.Number.ToString()); } } Assert.AreEqual(result.Count, result2.Count); } }