| /************************************************************** |
| * |
| * 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()); |
| } |
| |
| } |