public void ThemeAsPartRootClassTest() { this.MyTestInitialize(TestContext.GetCurrentMethod()); var testfile = CopyTestFiles(@"wordprocessing", true, "complex0.docx", f => f.IsWordprocessingFile()) .FirstOrDefault(); using (var package = testfile.OpenPackage(true) as WordprocessingDocument) { ThemePart themePart = package.MainDocumentPart.ThemePart; Log.Comment("Constructing Theme..."); Dr.Theme themeFromPart = themePart.Theme; Dr.Theme theme = buildRootElementFromPart(themePart, RootElementConstructors.OuterXml); var xThemeFromFile = ConvertToXElement(themePart, themeFromPart); var xThemeInMemory = theme.ToXElement(); var isEqual = xThemeInMemory.Compare(xThemeFromFile); Log.VerifyTrue(isEqual, "Theme constructing from file is different from the one in memory."); Log.Comment("Attribute Properties..."); var expectedName = "Office Theme"; Log.VerifyValue(themeFromPart.Name.ToString(), expectedName, "Name of current element: {0} is different from {1}.", themeFromPart.Name, expectedName); Log.Comment("Hallow Clone..."); var hClone = themeFromPart.CloneNode(false) as Dr.Theme; foreach (var ao in themeFromPart.GetAttributes()) { var ac = hClone.GetAttribute(ao.LocalName, ao.NamespaceUri); Log.VerifyValue(ao.Value, ac.Value, "Attribute: {0} value: {1} NOT cloned as expected {2}", ao.GetFullName(), ac.Value, ao.Value); } Log.Comment("Deep Clone..."); var dClone = themeFromPart.CloneNode(true) as Dr.Theme; isEqual = xThemeFromFile.Compare(dClone.ToXElement()); Log.VerifyTrue(isEqual, "Theme Cloned IS different from the original one."); Log.Comment("LocalName..."); Log.VerifyValue(theme.LocalName, "theme", "LocalName of Theme is {0} instead ofexpected a:theme", theme.LocalName); Log.Comment("Associating Part..."); Log.VerifyReference(themePart, themePart.Theme.ThemePart, "Associating Part of Theme is different from Hosting Part!"); Log.Comment("Saving changes to Theme Part..."); theme.Save(themePart); } Log.Pass("Theme as PartRoot Class Testing Passed."); }
internal static void ApplyTheme(PresentationPart presentationPart, Drawing.Theme theme) { string themeId = null; if (presentationPart.ThemePart != null) { themeId = presentationPart.GetIdOfPart(presentationPart.ThemePart); presentationPart.DeletePart(themeId); } else { themeId = presentationPart.GetNextRelationshipId(); } ThemePart themePart = presentationPart.AddNewPart <ThemePart>(themeId); theme.Save(themePart); }
public void ThemeAsClassWithFixedOrderChildTest() { this.MyTestInitialize(TestContext.GetCurrentMethod()); var testfile = CopyTestFiles(@"wordprocessing", true, "complex0.docx", f => f.IsWordprocessingFile()) .Where(f => f.IsWordprocessingFile() || f.IsSpreadsheetFile()) .FirstOrDefault(); using (var package = testfile.OpenPackage(true) as WordprocessingDocument) { ThemePart themePart = package.MainDocumentPart.ThemePart; Log.Comment("Constructing Theme..."); Dr.Theme theme = buildRootElementFromPart(themePart, RootElementConstructors.defaultCtor); var xThemeFromFile = ConvertToXElement(themePart, theme); Log.Comment("Child Element Properties..."); XElement xTheme = ConvertToXElement(themePart, theme); // doc.CustomColorList CustomColorList ccl = theme.CustomColorList; if (null != ccl) { XElement xccl = xTheme.Element(ccl.GetXName()); var isEqual = xccl.Compare(ccl.ToXElement()); Log.VerifyTrue(isEqual, "CustomColorList property is different from expectation."); } // doc.ExtensionList; var el = theme.OfficeStyleSheetExtensionList; if (null != el) { XElement xel = xTheme.Element(el.GetXName()); var isEqual = xel.Compare(el.ToXElement()); Log.VerifyTrue(isEqual, "ExtensionList property is different from expectation."); } //doc.ExtraColorSchemeList; var ecsl = theme.ExtraColorSchemeList; if (null != ecsl) { XElement xecsl = xTheme.Element(ecsl.GetXName()); var isEqual = xecsl.Compare(ecsl.ToXElement()); Log.VerifyTrue(isEqual, "ExtraColorSchemeList property is different from expectation."); } //doc.ObjectDefaults; var od = theme.ObjectDefaults; if (null != od) { XElement xod = xTheme.Element(od.GetXName()); var isEqual = xod.Compare(od.ToXElement()); Log.VerifyTrue(isEqual, "ObjectDefaults property is different from expectation."); } //doc.ThemeElements; var te = theme.ThemeElements; if (null != te) { XElement xte = xTheme.Element(te.GetXName()); var isEqual = xte.Compare(te.ToXElement()); Log.VerifyTrue(isEqual, "ThemeElements property is different from expectation."); } Log.Comment("Saving changes to Theme..."); theme.Save(themePart); } Log.Pass("Theme as Class With Fixed Order Children Testing Passed."); }