コード例 #1
0
        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.");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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.");
        }