/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 * * 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 fvt.uno.sw; import static org.openoffice.test.common.Testspace.*; import java.io.File; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.Assert; import org.openoffice.test.common.FileUtil; import org.openoffice.test.uno.UnoApp; import testlib.uno.SWUtil; import com.sun.star.text.XTextDocument; import com.sun.star.text.XTextCursor; import com.sun.star.text.XText; import com.sun.star.beans.XPropertySet; import com.sun.star.beans.PropertyValue; import com.sun.star.frame.*; import com.sun.star.uno.UnoRuntime; import com.sun.star.lang.XComponent; public class DocumentTest { UnoApp unoApp = new UnoApp(); XTextDocument textDocument = null; File temp = null; String workingFilePath = ""; String workingTemplatePath = ""; @Before public void setUp() throws Exception { unoApp.start(); FileUtil.deleteFile(getPath("temp")); temp = new File(getPath("temp")); temp.mkdirs(); //copy sample file to temp folder workingFilePath = prepareData("uno/sw/DocumentTest.odt"); workingTemplatePath = prepareData("uno/sw/DocumentTest.ott"); } @After public void tearDown() throws Exception { unoApp.close(); } /** * test new document and close document * @throws Exception */ @Test public void testNewAndCloseDocument() throws Exception { XComponent component = unoApp.newDocument("swriter"); textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component); XTitle xTitle = (XTitle)UnoRuntime.queryInterface(XTitle.class, textDocument); String title = xTitle.getTitle(); Assert.assertEquals("New Document title start with \"Untitled\"",true, title.startsWith("Untitled")); unoApp.closeDocument(component); XDesktop xDesktop = unoApp.getDesktop(); XFrame xFrame = (xDesktop == null) ? null : xDesktop.getCurrentFrame(); XController xCtrl = (xFrame == null) ? null : xFrame.getController(); XModel xModel = (xCtrl == null) ? null : xCtrl.getModel(); Assert.assertTrue("Document has been closed.",xModel==null); } /** * test new document from template * @throws Exception */ @Test public void testNewDocumentFromTemplate() throws Exception { XComponent component = SWUtil.newDocumentFromTemplate(workingTemplatePath,unoApp); textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component); XTitle xTitle = (XTitle)UnoRuntime.queryInterface(XTitle.class, textDocument); XText xText = textDocument.getText(); XTextCursor xTextCursor = xText.createTextCursor(); xTextCursor.gotoEnd(true); XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor); String paraStyle = (String)xPropertySet.getPropertyValue("ParaStyleName"); Assert.assertEquals("new document from template, heading style in template is remained. ", "Heading 1", paraStyle); Assert.assertEquals("new document from template, title start with \"Untitled\".", true, xTitle.getTitle().startsWith("Untitled")); } /** * test save document as odt * @throws Exception */ @Test public void testSaveDocument() throws Exception { XComponent component = unoApp.loadDocument(workingFilePath); textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component); XText xText = textDocument.getText(); XTextCursor xTextCursor = xText.createTextCursor(); xTextCursor.gotoEnd(true); XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor); xPropertySet.setPropertyValue("ParaStyleName", "Heading 1"); SWUtil.save(textDocument); unoApp.closeDocument(textDocument); component = unoApp.loadDocument(workingFilePath); textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component); xText = textDocument.getText(); xTextCursor = xText.createTextCursor(); xTextCursor.gotoEnd(true); xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor); Assert.assertEquals("Modify plain text to heading 1 style. ", "Heading 1", (String)xPropertySet.getPropertyValue("ParaStyleName")); } /** * test save document as doc * @throws Exception */ @Test public void testSaveAsDocument() throws Exception { File saveAsFile = new File(workingFilePath + ".doc"); XComponent component = unoApp.loadDocument(workingFilePath); textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component); XText xText = textDocument.getText(); XTextCursor xTextCursor = xText.createTextCursor(); XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor); xPropertySet.setPropertyValue("ParaStyleName", "Heading 1"); xText.insertString(xTextCursor, "test Save odt as doc.", false); SWUtil.saveAsDoc(textDocument, FileUtil.getUrl(saveAsFile)); Assert.assertTrue("Save odt document as doc the file exist: " + saveAsFile.getAbsolutePath(), saveAsFile.exists()); } /** * test export document as pdf * @throws Exception */ @Test public void testExportAsPDF() throws Exception { File saveAsFile = new File(workingFilePath + ".pdf"); XComponent component = unoApp.loadDocument(workingFilePath); textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component); XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, component); PropertyValue[] storeProps = new PropertyValue[3]; storeProps[0] = new PropertyValue(); storeProps[0].Name = "Overwrite"; storeProps[0].Value = new Boolean(true); storeProps[1] = new PropertyValue(); storeProps[1].Name = "FilterName"; storeProps[1].Value = "writer_pdf_Export"; storeProps[2] = new PropertyValue(); storeProps[2].Name = "CompressionMode"; storeProps[2].Value = "1"; xStorable.storeToURL(FileUtil.getUrl(saveAsFile), storeProps); Assert.assertTrue("Export document as PDF.", saveAsFile.exists()); } /** * test save document as template * @throws Exception */ @Test public void testSaveAsTemplate() throws Exception { File saveAsFile = new File(workingFilePath + ".ott"); XComponent component = unoApp.loadDocument(workingFilePath); textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, component); XText xText = textDocument.getText(); XTextCursor xTextCursor = xText.createTextCursor(); xTextCursor.gotoEnd(true); XPropertySet xPropertySet = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTextCursor); xPropertySet.setPropertyValue("ParaStyleName", "Heading 1"); XStorable xStorable = (XStorable)UnoRuntime.queryInterface(XStorable.class, component); xStorable.store(); PropertyValue[] storeProps = new PropertyValue[3]; storeProps[0] = new PropertyValue(); storeProps[0].Name="TemplateName"; storeProps[0].Value="MyNewCreatedTemplate"; storeProps[1] = new PropertyValue(); storeProps[1].Name="TemplateRegionName"; storeProps[1].Value="My Templates"; storeProps[2] = new PropertyValue(); storeProps[2].Name="AsTemplate"; storeProps[2].Value=new Boolean(true); xStorable.storeToURL(FileUtil.getUrl(saveAsFile), storeProps); unoApp.closeDocument(textDocument); Assert.assertTrue("Export document as ott.", saveAsFile.exists()); } }