You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by li...@apache.org on 2012/08/20 09:50:44 UTC

svn commit: r1374932 - in /incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/bookmark: ./ CheckBookmarks.java

Author: liuzhe
Date: Mon Aug 20 07:50:43 2012
New Revision: 1374932

URL: http://svn.apache.org/viewvc?rev=1374932&view=rev
Log:
Testcases for bookmark

Added:
    incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/bookmark/
    incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/bookmark/CheckBookmarks.java
      - copied, changed from r1374892, incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/CheckBookmarks.java

Copied: incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/bookmark/CheckBookmarks.java (from r1374892, incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/CheckBookmarks.java)
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/bookmark/CheckBookmarks.java?p2=incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/bookmark/CheckBookmarks.java&p1=incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/CheckBookmarks.java&r1=1374892&r2=1374932&rev=1374932&view=diff
==============================================================================
--- incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/CheckBookmarks.java (original)
+++ incubator/ooo/trunk/main/test/testuno/source/testcase/uno/sw/bookmark/CheckBookmarks.java Mon Aug 20 07:50:43 2012
@@ -19,26 +19,18 @@
  * 
  *************************************************************/
 
-package testcase.uno.sw;
+package testcase.uno.sw.bookmark;
 
-import static org.junit.Assert.*;
-
-import java.math.BigInteger;
+import static org.junit.Assert.assertArrayEquals;
+import static testlib.uno.sw.SWUtil.insertBookmark;
 
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
-import org.openoffice.test.common.FileUtil;
-import org.openoffice.test.common.Testspace;
 import org.openoffice.test.uno.UnoApp;
 
-import com.sun.star.beans.PropertyValue;
 import com.sun.star.container.XNameAccess;
-import com.sun.star.container.XNamed;
-import com.sun.star.frame.XStorable;
-import com.sun.star.lang.XMultiServiceFactory;
 import com.sun.star.text.ControlCharacter;
 import com.sun.star.text.XBookmarksSupplier;
 import com.sun.star.text.XText;
@@ -48,167 +40,94 @@ import com.sun.star.text.XTextDocument;
 import com.sun.star.text.XTextRange;
 import com.sun.star.uno.UnoRuntime;
 
-class BookmarkHashes {
-	public BigInteger m_nSetupHash;
-	public BigInteger m_nInsertRandomHash;
-	public BigInteger m_nDeleteRandomHash;
-	public BigInteger m_nLinebreakHash;
-	public BigInteger m_nOdfReloadHash;
-	public BigInteger m_nMsWordReloadHash;
-
-	public void assertExpectation(BookmarkHashes aExpectation) {
-		assertEquals(aExpectation.m_nSetupHash, m_nSetupHash);
-		assertEquals(aExpectation.m_nInsertRandomHash, m_nInsertRandomHash);
-		assertEquals(aExpectation.m_nDeleteRandomHash, m_nDeleteRandomHash);
-		assertEquals(aExpectation.m_nLinebreakHash, m_nLinebreakHash);
-		assertEquals(aExpectation.m_nOdfReloadHash, m_nOdfReloadHash);
-		assertEquals(aExpectation.m_nMsWordReloadHash, m_nMsWordReloadHash);
-	}
-
-	static public java.math.BigInteger getBookmarksHash(XTextDocument xDoc) throws Exception {
-		StringBuffer buffer = new StringBuffer("");
-		XBookmarksSupplier xBookmarksSupplier = (XBookmarksSupplier) UnoRuntime.queryInterface(XBookmarksSupplier.class, xDoc);
-		XNameAccess xBookmarks = xBookmarksSupplier.getBookmarks();
-		for (String sBookmarkname : xBookmarks.getElementNames()) {
-			Object xBookmark = xBookmarks.getByName(sBookmarkname);
-			XTextContent xBookmarkAsContent = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xBookmark);
-			buffer.append(sBookmarkname);
-			buffer.append(":");
-			buffer.append(xBookmarkAsContent.getAnchor().getString());
-			buffer.append(";");
-		}
-		java.security.MessageDigest sha1 = java.security.MessageDigest.getInstance("SHA-1");
-		sha1.reset();
-		sha1.update(buffer.toString().getBytes());
-		return new java.math.BigInteger(sha1.digest());
-	}
-}
 
 public class CheckBookmarks {
-	private XTextDocument m_xDoc = null;
-	private XTextDocument m_xOdfReloadedDoc = null;
-	private XTextDocument m_xMsWordReloadedDoc = null;
-	private final BookmarkHashes actualHashes = new BookmarkHashes();
-
-	private BookmarkHashes getDEV300m41Expectations() {
-		BookmarkHashes result = new BookmarkHashes();
-		result.m_nSetupHash = new BigInteger("-4b0706744e8452fe1ae9d5e1c28cf70fb6194795", 16);
-		result.m_nInsertRandomHash = new BigInteger("25aa0fad3f4881832dcdfe658ec2efa8a1a02bc5", 16);
-		result.m_nDeleteRandomHash = new BigInteger("-3ec87e810b46d734677c351ad893bbbf9ea10f55", 16);
-		result.m_nLinebreakHash = new BigInteger("3ae08c284ea0d6e738cb43c0a8105e718a633550", 16);
-		result.m_nOdfReloadHash = new BigInteger("3ae08c284ea0d6e738cb43c0a8105e718a633550", 16);
-		result.m_nMsWordReloadHash = new BigInteger("3ae08c284ea0d6e738cb43c0a8105e718a633550", 16);
-		return result;
-	}
-
-	@Test
-	public void checkBookmarks() throws Exception {
-		actualHashes.assertExpectation(getDEV300m41Expectations());
-	}
-
+	private static final UnoApp app = new UnoApp();
+	
+	private XTextDocument document = null;
+	
+	private String[] initBookmarkNames= new String[]{"bookmark1", "bookmark2", "bookmark3"};
+	
+	private String[] initBookmarkContents= new String[]{"bookmark1 content", "bookmark2 content", "bookmark3 content!!!!!!!"};
+	
 	@Before
-	public void setUpDocuments() throws Exception {
-		m_xDoc = UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
-		setupBookmarks();
-		actualHashes.m_nSetupHash = BookmarkHashes.getBookmarksHash(m_xDoc);
-		insertRandomParts(200177);
-		actualHashes.m_nInsertRandomHash = BookmarkHashes.getBookmarksHash(m_xDoc);
-		deleteRandomParts(4711);
-		actualHashes.m_nDeleteRandomHash = BookmarkHashes.getBookmarksHash(m_xDoc);
-		insertLinebreaks(007);
-		actualHashes.m_nLinebreakHash = BookmarkHashes.getBookmarksHash(m_xDoc);
-		m_xOdfReloadedDoc = reloadFrom("StarOffice XML (Writer)", "odf");
-		actualHashes.m_nOdfReloadHash = BookmarkHashes.getBookmarksHash(m_xOdfReloadedDoc);
-		m_xMsWordReloadedDoc = reloadFrom("MS Word 97", "doc");
-		actualHashes.m_nMsWordReloadHash = BookmarkHashes.getBookmarksHash(m_xMsWordReloadedDoc);
+	public void setUp() throws Exception {
+		app.start();
+		document = UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
+		XText xText = document.getText();
+		XTextCursor xTextCursor = xText.createTextCursor();
+		xTextCursor.setString("Contents");
+		
+		for (int i = 0; i < initBookmarkNames.length; i++) {
+			xTextCursor.gotoEnd(false);
+			XTextRange xTextRange = UnoRuntime.queryInterface(XTextRange.class, xTextCursor);
+			xText.insertControlCharacter(xTextRange, ControlCharacter.PARAGRAPH_BREAK, false);
+			xTextCursor.gotoEnd(false);
+			xTextCursor.setString(initBookmarkContents[i]);
+			insertBookmark(document, xTextCursor, initBookmarkNames[i]);
+		}
 	}
-
+	
 	@After
-	public void tearDownDocuments() {
-		app.closeDocument(m_xDoc);
-		app.closeDocument(m_xOdfReloadedDoc);
-		app.closeDocument(m_xMsWordReloadedDoc);
-	}
-
-	@BeforeClass
-	public static void setUpConnection() throws Exception {
-		app.start();
+	public void tearDown() {
+		app.closeDocument(document);
 	}
 
 	@AfterClass
 	public static void tearDownConnection() throws Exception {
 		app.close();
 	}
-
-	private static final UnoApp app = new UnoApp();
-
-	private void setupBookmarks() throws Exception {
-		XText xText = m_xDoc.getText();
-		for (int nPara = 0; nPara < 10; ++nPara) {
-			for (int nBookmark = 0; nBookmark < 100; ++nBookmark) {
-				insertBookmark(xText.createTextCursor(), "P" + nPara + "word" + nBookmark, "P" + nPara + "word" + nBookmark);
-				XTextCursor xWordCrsr = xText.createTextCursor();
-				xWordCrsr.setString(" ");
-			}
-			XTextCursor xParaCrsr = xText.createTextCursor();
-			XTextRange xParaCrsrAsRange = (XTextRange) UnoRuntime.queryInterface(XTextRange.class, xParaCrsr);
-			xText.insertControlCharacter(xParaCrsrAsRange, ControlCharacter.PARAGRAPH_BREAK, false);
-		}
-	}
-
-	private void insertRandomParts(long seed) throws Exception {
-		java.util.Random rnd = new java.util.Random(seed);
-		XTextCursor xCrsr = m_xDoc.getText().createTextCursor();
-		for (int i = 0; i < 600; i++) {
-			xCrsr.goRight((short) rnd.nextInt(100), false);
-			xCrsr.setString(Long.toString(rnd.nextLong()));
+	
+	private static String[] getBookmarkContents(XNameAccess xBookmarks) throws Exception {
+		String[] bookmarkNames = xBookmarks.getElementNames();
+		String[] bookmarkContents = new String[bookmarkNames.length];
+		for (int i = 0; i < bookmarkNames.length; i++) {
+			Object xBookmark = xBookmarks.getByName(bookmarkNames[i]);
+			XTextContent xBookmarkAsContent = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xBookmark);
+			bookmarkContents[i] = xBookmarkAsContent.getAnchor().getString();
 		}
+		
+		return bookmarkContents;
 	}
 
-	private void deleteRandomParts(long seed) throws Exception {
-		java.util.Random rnd = new java.util.Random(seed);
-		XTextCursor xCrsr = m_xDoc.getText().createTextCursor();
-		for (int i = 0; i < 600; i++) {
-			xCrsr.goRight((short) rnd.nextInt(100), false);
-			xCrsr.goRight((short) rnd.nextInt(20), true);
-			xCrsr.setString("");
-		}
+	@Test
+	public void createBookmark() throws Exception {
+		XNameAccess xBookmarks = UnoRuntime.queryInterface(XBookmarksSupplier.class, document).getBookmarks();
+		assertArrayEquals("Bookmark name list:", initBookmarkNames, xBookmarks.getElementNames());
+		assertArrayEquals("Bookmark content list:", initBookmarkContents, getBookmarkContents(xBookmarks));
 	}
-
-	private void insertLinebreaks(long seed) throws Exception {
-		XText xText = m_xDoc.getText();
-		java.util.Random rnd = new java.util.Random(seed);
-		XTextCursor xCrsr = m_xDoc.getText().createTextCursor();
-		for (int i = 0; i < 30; i++) {
-			xCrsr.goRight((short) rnd.nextInt(300), false);
-			XTextRange xCrsrAsRange = (XTextRange) UnoRuntime.queryInterface(XTextRange.class, xCrsr);
-			xText.insertControlCharacter(xCrsrAsRange, ControlCharacter.PARAGRAPH_BREAK, false);
-		}
+	
+	@Test
+	public void updateBookmarkContent() throws Exception {
+		String[] expectedBookmarkNames= new String[]{"bookmark1", "bookmark2", "bookmark3"};
+		String[] expectedBookmarkContents= new String[]{"bookmark1 content", "bookmark2 content", "bookmark3 cont"};
+		// Delete some content
+		XText xText = document.getText();
+		XTextCursor xTextCursor = xText.createTextCursor();
+		xTextCursor.gotoEnd(false);
+		xTextCursor.goLeft((short)10, true);
+		xTextCursor.setString("");
+		
+		// Let's see the bookmarks
+		XNameAccess xBookmarks = UnoRuntime.queryInterface(XBookmarksSupplier.class, document).getBookmarks();
+		assertArrayEquals("Bookmark name list after updating some content:", expectedBookmarkNames, xBookmarks.getElementNames());
+		assertArrayEquals("Bookmark content list after updating some content:", expectedBookmarkContents, getBookmarkContents(xBookmarks));
 	}
-
-	private void insertBookmark(XTextCursor crsr, String name, String content) throws Exception {
-		XMultiServiceFactory xDocFactory = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, m_xDoc);
-
-		Object xBookmark = xDocFactory.createInstance("com.sun.star.text.Bookmark");
-		XTextContent xBookmarkAsTextContent = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xBookmark);
-		crsr.setString(content);
-		XNamed xBookmarkAsNamed = (XNamed) UnoRuntime.queryInterface(XNamed.class, xBookmark);
-		xBookmarkAsNamed.setName(name);
-		m_xDoc.getText().insertTextContent(crsr, xBookmarkAsTextContent, true);
-	}
-
-	private XTextDocument reloadFrom(String sFilter, String sExtension) throws Exception {
-		String filePath = Testspace.getPath("output/Bookmarktest." + sExtension);
-		PropertyValue[] aStoreProperties = new PropertyValue[2];
-		aStoreProperties[0] = new PropertyValue();
-		aStoreProperties[1] = new PropertyValue();
-		aStoreProperties[0].Name = "Override";
-		aStoreProperties[0].Value = true;
-		aStoreProperties[1].Name = "FilterName";
-		aStoreProperties[1].Value = sFilter;
-		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, m_xDoc);
-		xStorable.storeToURL(FileUtil.getUrl(filePath), aStoreProperties);
-
-		return UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(filePath));
+	
+	@Test
+	public void removeBookmark() throws Exception {
+		String[] expectedBookmarkNames= new String[]{"bookmark2", "bookmark3"};
+		String[] expectedBookmarkContents= new String[]{"tent", "bookmark3 content!!!!!!!"};
+		// Delete some content
+		XText xText = document.getText();
+		XTextCursor xTextCursor = xText.createTextCursor();
+		xTextCursor.goRight((short)40, true);
+		xTextCursor.setString("");
+		
+		// Let's see the bookmarks
+		XNameAccess xBookmarks = UnoRuntime.queryInterface(XBookmarksSupplier.class, document).getBookmarks();
+		assertArrayEquals("Bookmark name list after deleting some content:", expectedBookmarkNames, xBookmarks.getElementNames());
+		assertArrayEquals("Bookmark content list after deleting some content:", expectedBookmarkContents, getBookmarkContents(xBookmarks));
 	}
+	
 }