summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLiu Zhe <liuzhe@apache.org>2012-08-27 02:31:48 +0000
committerLiu Zhe <liuzhe@apache.org>2012-08-27 02:31:48 +0000
commit9c29792229c4d0d123bd1f1e4b49f89d7a4ee491 (patch)
tree7b59b3f35d2abe9ffacd8f4ab1697d1d5a96b3d9 /test
parent0c8ea0f2d47dd1d3325fbc28148eee7bb385c457 (diff)
#120703 - [testuno] - insert, delete of page break and line break
Patch by: Xiao Xiao Ting <tingxiaox@gmail.com> Review by: Liu Zhe <aliuzhe@gmail.com>
Notes
Notes: ignore: vclauto
Diffstat (limited to 'test')
-rw-r--r--test/testuno/source/testcase/uno/sw/DocumentTest.java41
-rw-r--r--test/testuno/source/testcase/uno/sw/breaks/CheckBreaks.java297
-rw-r--r--test/testuno/source/testlib/uno/SWUtil.java52
3 files changed, 389 insertions, 1 deletions
diff --git a/test/testuno/source/testcase/uno/sw/DocumentTest.java b/test/testuno/source/testcase/uno/sw/DocumentTest.java
index 7d7cc0a3bcf0..06e4a7c6690b 100644
--- a/test/testuno/source/testcase/uno/sw/DocumentTest.java
+++ b/test/testuno/source/testcase/uno/sw/DocumentTest.java
@@ -18,7 +18,10 @@ 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.util.XCloseable;
import com.sun.star.lang.XComponent;
+import com.sun.star.container.XEnumerationAccess;
+import com.sun.star.container.XEnumeration;
public class DocumentTest {
@@ -66,6 +69,23 @@ public class DocumentTest {
}
+ /**
+ * test close document
+ * @throws Exception
+ */
+ @Test
+ public void testCloseDocument() throws Exception
+ {
+ XComponent component = unoApp.newDocument("swriter");
+ unoApp.closeDocument(component);
+ XModel xModel = unoApp.getDesktop().getCurrentFrame().getController().getModel();
+ Assert.assertTrue("Document has been closed.",xModel==null);
+ }
+
+ /**
+ * test new document
+ * @throws Exception
+ */
@Test
public void testNewDocument() throws Exception
{
@@ -78,7 +98,10 @@ public class DocumentTest {
unoApp.closeDocument(textDocument);
}
-
+ /**
+ * test new document from template
+ * @throws Exception
+ */
@Test
public void testNewDocumentFromTemplate() throws Exception
{
@@ -99,6 +122,10 @@ public class DocumentTest {
unoApp.closeDocument(textDocument);
}
+ /**
+ * test save document as odt
+ * @throws Exception
+ */
@Test
public void testSaveDocument() throws Exception
{
@@ -126,6 +153,10 @@ public class DocumentTest {
unoApp.closeDocument(textDocument);
}
+ /**
+ * test save document as doc
+ * @throws Exception
+ */
@Test
public void testSaveAsDocument() throws Exception
{
@@ -155,6 +186,10 @@ public class DocumentTest {
unoApp.closeDocument(textDocument);
}
+ /**
+ * test export document as pdf
+ * @throws Exception
+ */
@Test
public void testExportAsPDF() throws Exception
{
@@ -184,6 +219,10 @@ public class DocumentTest {
unoApp.closeDocument(textDocument);
}
+ /**
+ * test save document as template
+ * @throws Exception
+ */
@Test
public void testSaveAsTemplate() throws Exception
{
diff --git a/test/testuno/source/testcase/uno/sw/breaks/CheckBreaks.java b/test/testuno/source/testcase/uno/sw/breaks/CheckBreaks.java
new file mode 100644
index 000000000000..a0416f105d79
--- /dev/null
+++ b/test/testuno/source/testcase/uno/sw/breaks/CheckBreaks.java
@@ -0,0 +1,297 @@
+/**************************************************************
+ *
+ * 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 testcase.uno.sw.breaks;
+
+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.text.ControlCharacter;
+import com.sun.star.text.XTextViewCursor;
+import com.sun.star.text.XPageCursor;
+import com.sun.star.text.XTextViewCursorSupplier;
+import com.sun.star.style.BreakType;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.frame.*;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.lang.XComponent;
+
+public class CheckBreaks {
+ UnoApp unoApp = new UnoApp();
+ XTextDocument textDocument = null;
+ File temp = null;
+ String tempFilePathODT = "";
+ String tempFilePathDOC = "";
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ unoApp.start();
+
+ FileUtil.deleteFile(getPath("temp"));
+ temp = new File(getPath("temp"));
+ temp.mkdirs();
+
+ tempFilePathODT = temp + "/tempFilePathODT.odt";
+ tempFilePathDOC = temp + "/tempFilePathDOC.doc";
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ unoApp.close();
+ }
+
+ /**
+ * test line break can be inserted and deleted.
+ * when save it as odt file, close and reopen, line break can be inserted and deleted.
+ * when save it as doc file, close and reopen, line break can be inserted and deleted.
+ * \n represent line break
+ * @throws Exception
+ */
+ @Test
+ public void testInsertDeleteLineBreak() throws Exception
+ {
+ XComponent xComponent = unoApp.newDocument("swriter");
+ textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, xComponent);
+ this.insertNewLine(textDocument, "Line1", true);
+ this.insertNewLine(textDocument, "Line2", false);
+ this.insertNewLine(textDocument, "Line3", false);
+ this.insertNewLine(textDocument, "Line4", false);
+
+ int lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line break is inserted when new document.",4,lineCount);
+ this.deleteLineBreak(textDocument);
+ lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line break is deleted when new document", 3,lineCount);
+
+ //save to odt, test the line break
+ SWUtil.saveAsODT(textDocument, FileUtil.getUrl(tempFilePathODT));
+ unoApp.closeDocument(xComponent);
+ xComponent = unoApp.loadDocument(tempFilePathODT);
+ textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,xComponent);
+ lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line breaks when open saved odt file.",3,lineCount);
+ this.insertNewLine(textDocument, "Line added when open saved odt file", false);
+ lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line break is inserted when open saved odt file.",4,lineCount);
+ this.deleteLineBreak(textDocument);
+ lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line break is deleted when open saved odt file.",3,lineCount);
+
+ //save to doc, test the line break
+ SWUtil.saveAs(textDocument, "MS Word 97", FileUtil.getUrl(tempFilePathDOC));
+ unoApp.closeDocument(xComponent);
+ xComponent = unoApp.loadDocument(tempFilePathDOC);
+ textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,xComponent);
+ lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line breaks when open saved doc file.",3,lineCount);
+ this.insertNewLine(textDocument, "Line added when open saved doc file", false);
+ lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line break is inserted when open saved doc file.",4,lineCount);
+ this.deleteLineBreak(textDocument);
+ lineCount = this.getLineCount(textDocument);
+ Assert.assertEquals("Line break is deleted when open saved doc file.",3,lineCount);
+
+ unoApp.closeDocument(xComponent);
+ }
+
+ @Test
+ public void testInsertDeletePageBreak() throws Exception
+ {
+ //new document, test page break
+ XComponent xComponent = unoApp.newDocument("swriter");
+ textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, xComponent);
+ this.insertNewPage(textDocument, "Page1", true);
+ this.insertNewPage(textDocument, "Page2", false);
+ this.insertNewPage(textDocument, "Page3", false);
+ int pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("page break is inserted when new document", 3,pageCount);
+
+ this.deleteFirstPage(textDocument);
+ pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("page break is deleted when new document", 2,pageCount);
+
+ //save as odt, test page break
+ SWUtil.saveAsODT(textDocument, FileUtil.getUrl(tempFilePathODT));
+ unoApp.closeDocument(xComponent);
+ xComponent = unoApp.loadDocument(tempFilePathODT);
+ textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,xComponent);
+ pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("Page breaks after open saved odt file", 2,pageCount);
+ this.insertNewPage(textDocument, "Page4", false);
+ pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("page break is inserted after open saved odt file", 3,pageCount);
+
+ this.deleteFirstPage(textDocument);
+ pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("page break is deleted after open saved odt file.", 2,pageCount);
+
+ //save as doc, test page break
+ SWUtil.saveAs(textDocument, "MS Word 97", FileUtil.getUrl(tempFilePathDOC));
+ unoApp.closeDocument(xComponent);
+ xComponent = unoApp.loadDocument(tempFilePathDOC);
+ textDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class,xComponent);
+ pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("Page breaks after open saved doc file", 2,pageCount);
+
+ this.deleteFirstPage(textDocument);
+ pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("page break is deleted after open saved doc file.", 1,pageCount);
+
+ this.insertNewPage(textDocument, "Page5", false);
+ pageCount = SWUtil.getPageCount(textDocument);
+ Assert.assertEquals("page break is inserted after open saved doc file", 2,pageCount);
+
+ unoApp.closeDocument(xComponent);
+ }
+
+
+
+
+ /**
+ * insert a new page at the end of the document
+ * @param xTextDocument
+ * @param pageContent
+ * @param isFirstPage
+ * @throws Exception
+ */
+ private void insertNewPage(XTextDocument document, String pageContent, Boolean isFirstPage) throws Exception
+ {
+ XText xText = document.getText();
+ XTextCursor textCursor = xText.createTextCursor();
+ textCursor.gotoEnd(false);
+ System.out.println("The content before insert " + pageContent + ":" + xText.getString());
+ if(!isFirstPage)
+ {
+ XPropertySet xCursorProps = (XPropertySet)UnoRuntime.queryInterface(
+ XPropertySet.class, textCursor);
+ xCursorProps.setPropertyValue("BreakType", BreakType.PAGE_AFTER);
+ document.getText().insertControlCharacter(textCursor,ControlCharacter.PARAGRAPH_BREAK,false);
+ }
+ document.getText().insertString(textCursor, pageContent, false);
+ }
+
+ /**
+ * delete the first page of the document
+ * @param document
+ * @throws Exception
+ */
+ private void deleteFirstPage(XTextDocument document) throws Exception
+ {
+ XModel xModel = (XModel) UnoRuntime.queryInterface(XModel.class, document);
+ XController xController = xModel.getCurrentController();
+ XTextViewCursorSupplier xTextViewCursorSupplier =
+ (XTextViewCursorSupplier) UnoRuntime.queryInterface(XTextViewCursorSupplier.class, xController);
+ XTextViewCursor textViewCursor = xTextViewCursorSupplier.getViewCursor();
+
+ XPageCursor pageCursor = (XPageCursor) UnoRuntime.queryInterface(XPageCursor.class, textViewCursor);
+
+ // Move the cursor to the start of the document
+ textViewCursor.gotoStart(false);
+
+ pageCursor.jumpToFirstPage();
+ XTextCursor textCursor = textViewCursor.getText().createTextCursorByRange(textViewCursor.getStart());
+
+ pageCursor.jumpToEndOfPage();
+ textCursor.gotoRange(textViewCursor.getEnd(), true);
+ //System.out.println("deleted: " + textCursor.getString());
+ textCursor.setString("");
+
+ // Page contents cleared, now delete the page break at the start
+ textCursor.collapseToStart();
+ if(textCursor.goRight((short) 1, true)){
+ //System.out.println("page break deleted: " + textCursor.getString());
+ textCursor.setString("");
+ }
+
+ }
+
+
+ /**
+ * insert a new line at the end of the document.
+ * @param xText
+ * @param lineContent
+ * @param isFirstLine
+ * @throws Exception
+ */
+ private void insertNewLine(XTextDocument xTextDocument, String lineContent, Boolean isFirstLine) throws Exception
+ {
+ XText xText = xTextDocument.getText();
+ XTextCursor xTextCursor = xText.createTextCursor();
+ xTextCursor.gotoEnd(false);
+ if(!isFirstLine)
+ {
+ xText.insertControlCharacter(xTextCursor, ControlCharacter.LINE_BREAK, false);
+ }
+
+ xText.insertString(xTextCursor, lineContent, false);
+ }
+
+ /**
+ * delete first line break
+ * @param xText
+ * @throws Exception
+ */
+ private void deleteLineBreak(XTextDocument xTextDocument) throws Exception
+ {
+ XText xText = xTextDocument.getText();
+ String content = xText.getString();
+ content = content.replaceFirst("\n", "");
+ xText.setString(content);
+ }
+
+ /**
+ * get line count of all text.
+ * \n represent line break.
+ * @param xText
+ * @return count of line breaks
+ * @throws Exception
+ */
+ private int getLineCount(XTextDocument xTextDocument) throws Exception
+ {
+ int count = 1;
+ XText xText = xTextDocument.getText();
+ String content = xText.getString();
+ int index = content.indexOf("\n");
+ while(index >=0)
+ {
+ count ++;
+ content = content.substring(index+1);
+ index = content.indexOf("\n");
+ }
+ return count;
+ }
+
+}
diff --git a/test/testuno/source/testlib/uno/SWUtil.java b/test/testuno/source/testlib/uno/SWUtil.java
index e4a64d21b9be..4feed8d73ffa 100644
--- a/test/testuno/source/testlib/uno/SWUtil.java
+++ b/test/testuno/source/testlib/uno/SWUtil.java
@@ -25,16 +25,22 @@ import org.openoffice.test.uno.UnoApp;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.XEnumeration;
+import com.sun.star.container.XEnumerationAccess;
import com.sun.star.container.XNamed;
import com.sun.star.document.XDocumentInfo;
import com.sun.star.document.XDocumentInfoSupplier;
import com.sun.star.frame.XStorable;
import com.sun.star.io.IOException;
import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.style.BreakType;
+import com.sun.star.text.ControlCharacter;
import com.sun.star.text.XText;
import com.sun.star.text.XTextContent;
import com.sun.star.text.XTextCursor;
import com.sun.star.text.XTextDocument;
+import com.sun.star.frame.XModel;
+import com.sun.star.frame.XController;
import com.sun.star.uno.UnoRuntime;
public class SWUtil {
@@ -133,4 +139,50 @@ public class SWUtil {
xBookmarkAsNamed.setName(bookmarkName);
document.getText().insertTextContent(textCursor, xBookmarkAsTextContent, true);
}
+
+ /**
+ * insert column break in current cursor
+ * @param xText
+ * @param currentCursor
+ * @throws Exception
+ */
+ public static void insertColumnBreak(XText xText, XTextCursor currentCursor) throws Exception
+ {
+ XPropertySet xCursorProps = (XPropertySet)UnoRuntime.queryInterface(
+ XPropertySet.class, currentCursor);
+ xCursorProps.setPropertyValue("BreakType", BreakType.COLUMN_AFTER);
+ xText.insertControlCharacter(currentCursor,ControlCharacter.PARAGRAPH_BREAK,false);
+ }
+
+ /**
+ * insert page break in current cursor
+ * @param xText
+ * @param currentCursor
+ * @throws Exception
+ */
+ public static void insertPageBreak(XText xText, XTextCursor currentCursor) throws Exception
+ {
+ XPropertySet xCursorProps = (XPropertySet)UnoRuntime.queryInterface(
+ XPropertySet.class, currentCursor);
+ xCursorProps.setPropertyValue("BreakType", BreakType.PAGE_AFTER);
+ xText.insertControlCharacter(currentCursor,ControlCharacter.PARAGRAPH_BREAK,false);
+ }
+
+
+ /**
+ * get page count
+ * @param document
+ * @return
+ * @throws Exception
+ */
+ public static int getPageCount(XTextDocument document) throws Exception
+ {
+ XModel xmodel = (XModel)UnoRuntime.queryInterface(XModel.class, document);
+ XController xcont = xmodel.getCurrentController();
+
+ XPropertySet xps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xcont);
+ Integer pageCount = (Integer) xps.getPropertyValue("PageCount");
+ return pageCount.intValue();
+ }
+
}