| /* |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER |
| * |
| * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. |
| * |
| * Use is subject to license terms. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy |
| * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also |
| * obtain a copy of the License at http://odftoolkit.org/docs/license.txt |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| package org.odftoolkit.simple; |
| |
| import java.util.Iterator; |
| import java.util.logging.Level; |
| import java.util.logging.Logger; |
| |
| import javax.xml.xpath.XPath; |
| import javax.xml.xpath.XPathConstants; |
| |
| import org.junit.Assert; |
| import org.junit.Test; |
| import org.odftoolkit.odfdom.dom.OdfStylesDom; |
| import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassAttribute; |
| import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement; |
| import org.odftoolkit.odfdom.dom.element.draw.DrawGradientElement; |
| import org.odftoolkit.odfdom.dom.element.draw.DrawHatchElement; |
| import org.odftoolkit.odfdom.dom.element.draw.DrawMarkerElement; |
| import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement; |
| import org.odftoolkit.odfdom.dom.style.OdfStyleFamily; |
| import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame; |
| import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles; |
| import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles; |
| import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles; |
| import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle; |
| import org.odftoolkit.odfdom.pkg.OdfElement; |
| import org.odftoolkit.odfdom.pkg.OdfFileDom; |
| import org.odftoolkit.simple.presentation.Slide; |
| import org.odftoolkit.simple.utils.ResourceUtilities; |
| import org.w3c.dom.NodeList; |
| |
| /** |
| * |
| * @author cl93746 |
| */ |
| public class PresentationTest { |
| |
| Document odfdoc; |
| |
| public PresentationTest() { |
| try { |
| odfdoc = Document.loadDocument(ResourceUtilities.getAbsolutePath("presentation.odp")); |
| } catch (Exception e) { |
| Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e); |
| Assert.fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testPresentation() { |
| try { |
| PresentationDocument odpdoc = (PresentationDocument) odfdoc; |
| |
| Slide page = odpdoc.getSlideByName("slide-name-1"); |
| Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-1")); |
| Assert.assertEquals(page, odpdoc.getSlideByIndex(0)); |
| |
| page = odpdoc.getSlideByName("slide-name-2"); |
| Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-2")); |
| Assert.assertEquals(page, odpdoc.getSlideByIndex(1)); |
| |
| page = odpdoc.getSlideByName("slide-name-3"); |
| Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-3")); |
| Assert.assertEquals(page, odpdoc.getSlideByIndex(2)); |
| |
| } catch (Exception e) { |
| Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e); |
| Assert.fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testMasterStyles() { |
| try { |
| OdfOfficeMasterStyles officeMasterStyles = odfdoc.getOfficeMasterStyles(); |
| Assert.assertNotNull(officeMasterStyles); |
| |
| // check if iterator has all two master pages |
| testIterator(StyleMasterPageElement.class, officeMasterStyles.getMasterPages(), 2); |
| |
| // test "master-name-1" |
| StyleMasterPageElement master = officeMasterStyles.getMasterPage("master-name-1"); |
| Assert.assertNotNull(master); |
| Assert.assertEquals(master.getStyleNameAttribute(), "master-name-1"); |
| |
| // test "master-name-2" |
| master = officeMasterStyles.getMasterPage("master-name-2"); |
| Assert.assertNotNull(master); |
| Assert.assertEquals(master.getStyleNameAttribute(), "master-name-2"); |
| |
| // test handout master |
| Assert.assertNotNull(officeMasterStyles.getHandoutMaster()); |
| |
| // test layerset |
| Assert.assertNotNull(officeMasterStyles.getLayerSet()); |
| } catch (Exception e) { |
| Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e); |
| Assert.fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testStyles() { |
| try { |
| OdfOfficeStyles officeStyles = odfdoc.getDocumentStyles(); |
| Assert.assertNotNull(officeStyles); |
| |
| Assert.assertNotNull(officeStyles.getGradient("Linear_20_blue_2f_white")); |
| testIterator(DrawGradientElement.class, officeStyles.getGradients().iterator(), 1); |
| |
| Assert.assertNotNull(officeStyles.getMarker("Arrow")); |
| testIterator(DrawMarkerElement.class, officeStyles.getMarker().iterator(), 1); |
| |
| Assert.assertNotNull(officeStyles.getHatch("Black_20_0_20_Degrees")); |
| testIterator(DrawHatchElement.class, officeStyles.getHatches().iterator(), 1); |
| |
| Assert.assertNotNull(officeStyles.getFillImage("Aqua")); |
| testIterator(DrawFillImageElement.class, officeStyles.getFillImages().iterator(), 1); |
| |
| // check for some styles |
| Assert.assertNotNull(officeStyles.getDefaultStyle(OdfStyleFamily.Graphic)); |
| Assert.assertNotNull(officeStyles.getStyle("standard", OdfStyleFamily.Graphic)); |
| Assert.assertNotNull(officeStyles.getStyle("master-name-1-outline1", OdfStyleFamily.Presentation)); |
| |
| Iterator<OdfStyle> style_iter = officeStyles.getStylesForFamily(OdfStyleFamily.Presentation).iterator(); |
| Assert.assertNotNull(style_iter); |
| Assert.assertTrue(style_iter.hasNext()); |
| } catch (Exception e) { |
| Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e); |
| Assert.fail(e.getMessage()); |
| } |
| } |
| |
| private <T extends OdfElement> void testIterator(Class<T> clazz, Iterator<T> iter, int elements) { |
| Assert.assertNotNull(iter); |
| while (elements > 0) { |
| Assert.assertTrue(iter.hasNext()); |
| Assert.assertTrue(clazz.isInstance(iter.next())); |
| elements--; |
| } |
| |
| Assert.assertFalse(iter.hasNext()); |
| } |
| |
| @Test |
| public void testPresentationClassAttribute() { |
| try { |
| GraphicsDocument doc = GraphicsDocument.newGraphicsDocument(); |
| OdfFileDom dom = doc.getContentDom(); |
| OdfDrawFrame f = new OdfDrawFrame(dom); |
| |
| f.setPresentationClassAttribute(PresentationClassAttribute.Value.GRAPHIC.toString()); |
| Logger.getLogger(DocumentCreationTest.class.getName()).info(f.getPresentationClassAttribute()); |
| } catch (Exception e) { |
| Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e); |
| Assert.fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testStyleUsageCount() { |
| try { |
| OdfOfficeAutomaticStyles s = odfdoc.getStylesDom().getAutomaticStyles(); |
| OdfStyle pr1 = s.getStyle("pr1", OdfStyleFamily.Presentation); |
| int styleUserCount = pr1.getStyleUserCount(); |
| OdfStylesDom stylesDom = odfdoc.getStylesDom(); |
| XPath xpath = stylesDom.getXPath(); |
| NodeList elementsWithStyle = (NodeList) xpath.evaluate("//draw:frame[@presentation:style-name='pr1']", |
| stylesDom, XPathConstants.NODESET); |
| int elementsWithStyleCount = elementsWithStyle.getLength(); |
| Assert.assertTrue(styleUserCount == elementsWithStyleCount); |
| // //#bug51,the bug will be induced by using set attribute method |
| // OdfDrawFrame frame = (OdfDrawFrame) elementsWithStyle.item(0); |
| // frame.setPresentationStyleNameAttribute("pr2"); |
| // styleUserCount = pr1.getStyleUserCount(); |
| // elementsWithStyle = (NodeList) xpath.evaluate("//draw:frame[@presentation:style-name='pr1']", |
| // odfdoc.getStylesDom(), XPathConstants.NODESET); |
| // elementsWithStyleCount = elementsWithStyle.getLength(); |
| // Assert.assertTrue("Last part of bug51 still to be fixed..!!", styleUserCount == elementsWithStyleCount); |
| } catch (Exception e) { |
| Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e); |
| Assert.fail(e.getMessage()); |
| } |
| } |
| } |