summaryrefslogtreecommitdiffstats
path: root/linguistic/qa/complex/linguistic/HangulHanjaConversion.java
diff options
context:
space:
mode:
Diffstat (limited to 'linguistic/qa/complex/linguistic/HangulHanjaConversion.java')
-rw-r--r--linguistic/qa/complex/linguistic/HangulHanjaConversion.java344
1 files changed, 344 insertions, 0 deletions
diff --git a/linguistic/qa/complex/linguistic/HangulHanjaConversion.java b/linguistic/qa/complex/linguistic/HangulHanjaConversion.java
new file mode 100644
index 000000000..b407c4642
--- /dev/null
+++ b/linguistic/qa/complex/linguistic/HangulHanjaConversion.java
@@ -0,0 +1,344 @@
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+package complex.linguistic;
+
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.container.ElementExistException;
+import com.sun.star.container.NoSuchElementException;
+import com.sun.star.container.XNameContainer;
+import com.sun.star.i18n.TextConversionOption;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.Locale;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XEventListener;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.linguistic2.ConversionDictionaryType;
+import com.sun.star.linguistic2.ConversionDirection;
+import com.sun.star.linguistic2.XConversionDictionary;
+import com.sun.star.linguistic2.XConversionDictionaryList;
+import com.sun.star.sheet.XSpreadsheet;
+import com.sun.star.sheet.XSpreadsheetDocument;
+import com.sun.star.table.XCell;
+
+import com.sun.star.uno.UnoRuntime;
+
+
+
+import util.DesktopTools;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openoffice.test.OfficeConnection;
+import static org.junit.Assert.*;
+
+public class HangulHanjaConversion {
+ XMultiServiceFactory xMSF = null;
+ boolean disposed = false;
+ Locale aLocale = new Locale("ko", "KR", "");
+ short dictType = ConversionDictionaryType.HANGUL_HANJA;
+
+ @Before public void before() {
+ xMSF = getMSF();
+ }
+
+ @Test public void ConversionDictionaryList() {
+ Object ConversionDictionaryList = null;
+
+ try {
+ ConversionDictionaryList = xMSF.createInstance(
+ "com.sun.star.linguistic2.ConversionDictionaryList");
+ } catch (com.sun.star.uno.Exception e) {
+ fail("Couldn't create ConversionDictionaryList");
+ }
+
+ if (ConversionDictionaryList == null) {
+ fail("Couldn't create ConversionDictionaryList");
+ }
+
+ boolean bList = checkXConversionDictionaryList(
+ ConversionDictionaryList);
+ assertTrue("XConversionDictionaryList doesn't work as expected", bList);
+ }
+
+ private boolean checkXConversionDictionaryList(Object list) {
+ boolean res = true;
+ XConversionDictionaryList xCList = UnoRuntime.queryInterface(XConversionDictionaryList.class, list);
+ XConversionDictionary xDict = null;
+
+ try {
+ xDict = xCList.addNewDictionary("addNewDictionary", aLocale,
+ dictType);
+ } catch (com.sun.star.lang.NoSupportException e) {
+ res = false;
+ fail("Couldn't add Dictionary");
+ } catch (com.sun.star.container.ElementExistException e) {
+ res = false;
+ fail("Couldn't add Dictionary");
+ }
+
+ try {
+ xCList.addNewDictionary("addNewDictionary", aLocale, dictType);
+ res = false;
+ fail("wrong exception while adding Dictionary again");
+ } catch (com.sun.star.lang.NoSupportException e) {
+ res = false;
+ fail("wrong exception while adding Dictionary again");
+ } catch (com.sun.star.container.ElementExistException e) {
+ }
+
+ boolean localRes = checkNameContainer(xCList.getDictionaryContainer());
+ res &= localRes;
+ assertTrue("getDictionaryContainer didn't work as expected", localRes);
+
+ String FileToLoad = TestDocument.getUrl("hangulhanja.sxc");
+
+XComponent xDoc = DesktopTools.loadDoc(xMSF, FileToLoad,
+ new PropertyValue[] { });
+ XSpreadsheet xSheet = getSheet(xDoc);
+ boolean done = false;
+ int counter = 0;
+ String wordToCheck = "";
+ String expectedConversion = "";
+
+ while (!done) {
+ String[] HangulHanja = getLeftAndRight(counter, xSheet);
+ done = HangulHanja[0].equals("");
+ counter++;
+
+ if (!done) {
+ try {
+ xDict.addEntry(HangulHanja[0], HangulHanja[1]);
+ wordToCheck += HangulHanja[0];
+ expectedConversion += HangulHanja[1];
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ e.printStackTrace();
+ res = false;
+ fail("Exception while checking adding entry");
+ } catch (com.sun.star.container.ElementExistException e) {
+ //ignored
+ }
+ }
+ }
+
+ try {
+ xDict.addEntry(wordToCheck, expectedConversion);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ e.printStackTrace();
+ res = false;
+ fail("Exception while checking adding entry");
+ } catch (com.sun.star.container.ElementExistException e) {
+ //ignored
+ }
+
+ localRes = xCList.queryMaxCharCount(aLocale, dictType,
+ ConversionDirection.FROM_LEFT) == 42;
+ res &= localRes;
+ assertTrue("queryMaxCharCount returned the wrong value", localRes);
+
+ String[] conversion = null;
+
+ try {
+ conversion = xCList.queryConversions(wordToCheck, 0,
+ wordToCheck.length(), aLocale,
+ dictType,
+ ConversionDirection.FROM_LEFT,
+ TextConversionOption.NONE);
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ res = false;
+ fail("Exception while calling queryConversions");
+ } catch (com.sun.star.lang.NoSupportException e) {
+ res = false;
+ fail("Exception while calling queryConversions");
+ }
+
+ localRes = conversion[0].equals(expectedConversion);
+ res &= localRes;
+ assertTrue("queryConversions didn't work as expected", localRes);
+
+ try {
+ xCList.getDictionaryContainer().removeByName("addNewDictionary");
+ } catch (com.sun.star.container.NoSuchElementException e) {
+ res = false;
+ fail("exception while removing Dictionary again");
+ } catch (com.sun.star.lang.WrappedTargetException e) {
+ res = false;
+ fail("exception while removing Dictionary again");
+ }
+
+ localRes = !xCList.getDictionaryContainer()
+ .hasByName("addNewDictionary");
+ res &= localRes;
+ assertTrue("Dictionary hasn't been removed properly", localRes);
+
+ XComponent dicList = UnoRuntime.queryInterface(XComponent.class, xCList);
+ XEventListener listen = new EventListener();
+ dicList.addEventListener(listen);
+ dicList.dispose();
+ assertTrue("dispose didn't work", disposed);
+ dicList.removeEventListener(listen);
+
+ DesktopTools.closeDoc(xDoc);
+
+ return res;
+ }
+
+ private boolean checkNameContainer(XNameContainer xNC) {
+ boolean res = true;
+
+ try {
+ res &= xNC.hasByName("addNewDictionary");
+
+ XConversionDictionary myCD = new ConversionDictionary();
+ xNC.insertByName("insertByName", myCD);
+ res &= xNC.hasByName("insertByName");
+ xNC.removeByName("insertByName");
+ res &= !(xNC.hasByName("insertByName"));
+ } catch (com.sun.star.lang.IllegalArgumentException e) {
+ res = false;
+ e.printStackTrace();
+ } catch (com.sun.star.container.NoSuchElementException e) {
+ res = false;
+ e.printStackTrace();
+ } catch (com.sun.star.container.ElementExistException e) {
+ res = false;
+ e.printStackTrace();
+ } catch (com.sun.star.lang.WrappedTargetException e) {
+ res = false;
+ e.printStackTrace();
+ }
+
+ return res;
+ }
+
+ private XSpreadsheet getSheet(XComponent xDoc) {
+ XSpreadsheetDocument xSheetDoc = UnoRuntime.queryInterface(XSpreadsheetDocument.class, xDoc);
+ XSpreadsheet xSheet = null;
+
+ try {
+ xSheet = UnoRuntime.queryInterface(XSpreadsheet.class, xSheetDoc.getSheets().getByName(xSheetDoc.getSheets().getElementNames()[0]));
+ } catch (com.sun.star.container.NoSuchElementException e) {
+ System.out.println("Couldn't get sheet");
+ e.printStackTrace();
+ } catch (com.sun.star.lang.WrappedTargetException e) {
+ System.out.println("Couldn't get sheet");
+ e.printStackTrace();
+ }
+
+ return xSheet;
+ }
+
+ private String[] getLeftAndRight(int counter, XSpreadsheet xSpreadsheet) {
+ String[] re = new String[] {
+ getCell(0, counter, xSpreadsheet).getFormula().trim(),
+ getCell(1, counter, xSpreadsheet).getFormula().trim() };
+
+ return re;
+ }
+
+ private XCell getCell(int x, int y, XSpreadsheet xSpreadsheet) {
+ XCell re = null;
+
+ try {
+ re = xSpreadsheet.getCellByPosition(x, y);
+ } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
+ System.out.println("Couldn't get word");
+ e.printStackTrace();
+ }
+
+ return re;
+ }
+
+ private class ConversionDictionary implements XConversionDictionary {
+ boolean active = false;
+
+ public void addEntry(String str, String str1)
+ throws IllegalArgumentException, ElementExistException {
+ }
+
+ public void clear() {
+ }
+
+ public String[] getConversionEntries(ConversionDirection conversionDirection) {
+ return new String[] { "getConversionEntries" };
+ }
+
+ public short getConversionType() {
+ return ConversionDictionaryType.HANGUL_HANJA;
+ }
+
+ public String[] getConversions(String str, int param, int param2,
+ ConversionDirection conversionDirection,
+ int param4)
+ throws IllegalArgumentException {
+ return new String[] { "getConversion" };
+ }
+
+ public com.sun.star.lang.Locale getLocale() {
+ return new Locale("de", "DE", "");
+ }
+
+ public short getMaxCharCount(ConversionDirection conversionDirection) {
+ return (short) 2;
+ }
+
+ public String getName() {
+ return "insertByName";
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public void removeEntry(String str, String str1)
+ throws NoSuchElementException {
+ }
+
+ public void setActive(boolean param) {
+ active = param;
+ }
+ }
+
+ private class EventListener implements XEventListener {
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ disposed = true;
+ }
+ }
+
+ private XMultiServiceFactory getMSF()
+ {
+ return UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
+ }
+
+ // setup and close connections
+ @BeforeClass public static void setUpConnection() throws Exception {
+ System.out.println("setUpConnection()");
+ connection.setUp();
+ }
+
+ @AfterClass public static void tearDownConnection()
+ throws InterruptedException, com.sun.star.uno.Exception
+ {
+ System.out.println("tearDownConnection()");
+ connection.tearDown();
+ }
+
+ private static final OfficeConnection connection = new OfficeConnection();
+
+}