diff options
Diffstat (limited to 'linguistic/qa/complex/linguistic')
-rw-r--r-- | linguistic/qa/complex/linguistic/HangulHanjaConversion.java | 345 | ||||
-rw-r--r-- | linguistic/qa/complex/linguistic/makefile.mk | 73 | ||||
-rw-r--r-- | linguistic/qa/complex/linguistic/testdocuments/hangulhanja.sxc | bin | 0 -> 6366 bytes |
3 files changed, 418 insertions, 0 deletions
diff --git a/linguistic/qa/complex/linguistic/HangulHanjaConversion.java b/linguistic/qa/complex/linguistic/HangulHanjaConversion.java new file mode 100644 index 000000000000..160a1b42fd78 --- /dev/null +++ b/linguistic/qa/complex/linguistic/HangulHanjaConversion.java @@ -0,0 +1,345 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +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.text.XTextCursor; +import com.sun.star.text.XTextDocument; +import com.sun.star.text.XWordCursor; +import com.sun.star.uno.UnoRuntime; + +import complexlib.ComplexTestCase; + +import java.io.PrintWriter; + +import util.DesktopTools; + + +public class HangulHanjaConversion extends ComplexTestCase { + XMultiServiceFactory xMSF = null; + boolean disposed = false; + Locale aLocale = new Locale("ko", "KR", ""); + short dictType = ConversionDictionaryType.HANGUL_HANJA; + + public String[] getTestMethodNames() { + return new String[] { "ConversionDictionaryList" }; + } + + public void before() { + xMSF = (XMultiServiceFactory) param.getMSF(); + } + + public void ConversionDictionaryList() { + Object ConversionDictionaryList = null; + + try { + ConversionDictionaryList = xMSF.createInstance( + "com.sun.star.linguistic2.ConversionDictionaryList"); + } catch (com.sun.star.uno.Exception e) { + assure("Couldn't create ConversionDictionaryList", false); + } + + if (ConversionDictionaryList == null) { + assure("Couldn't create ConversionDictionaryList", false); + } + + boolean bList = checkXConversionDictionaryList( + ConversionDictionaryList); + assure("XConversionDictionaryList doesnt work as expected", bList); + } + + private boolean checkXConversionDictionaryList(Object list) { + boolean res = true; + XConversionDictionaryList xCList = (XConversionDictionaryList) UnoRuntime.queryInterface( + XConversionDictionaryList.class, + list); + XConversionDictionary xDict = null; + + try { + xDict = xCList.addNewDictionary("addNewDictionary", aLocale, + dictType); + } catch (com.sun.star.lang.NoSupportException e) { + res = false; + assure("Couldn't add Dictionary", false); + } catch (com.sun.star.container.ElementExistException e) { + res = false; + assure("Couldn't add Dictionary", false); + } + + try { + xCList.addNewDictionary("addNewDictionary", aLocale, dictType); + res = false; + assure("wrong exception while adding Dictionary again", false); + } catch (com.sun.star.lang.NoSupportException e) { + res = false; + assure("wrong exception while adding Dictionary again", false); + } catch (com.sun.star.container.ElementExistException e) { + } + + boolean localRes = checkNameContainer(xCList.getDictionaryContainer()); + res &= localRes; + assure("getDictionaryContainer didn't work as expected", localRes); + + String FileToLoad = util.utils.getFullTestURL("hangulhanja.sxc"); + XComponent xDoc = DesktopTools.loadDoc(xMSF, FileToLoad, + new PropertyValue[] { }); + XSpreadsheet xSheet = getSheet(xDoc); + boolean done = false; + int counter = 0; + int numberOfWords = 0; + String wordToCheck = ""; + String expectedConversion = ""; + + while (!done) { + String[] HangulHanja = getLeftAndRight(counter, xSheet); + done = (HangulHanja[0].equals("")); + counter++; + + if (!done) { + numberOfWords++; + + try { + xDict.addEntry(HangulHanja[0], HangulHanja[1]); + wordToCheck += HangulHanja[0]; + expectedConversion += HangulHanja[1]; + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(); + res = false; + assure("Exception while checking adding entry", false); + } catch (com.sun.star.container.ElementExistException e) { + //ignored + } + } + } + + try { + xDict.addEntry(wordToCheck, expectedConversion); + } catch (com.sun.star.lang.IllegalArgumentException e) { + e.printStackTrace(); + res = false; + assure("Exception while checking adding entry", false); + } catch (com.sun.star.container.ElementExistException e) { + //ignored + } + + localRes = xCList.queryMaxCharCount(aLocale, dictType, + ConversionDirection.FROM_LEFT) == 42; + res &= localRes; + assure("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; + assure("Exception while calling queryConversions", false); + } catch (com.sun.star.lang.NoSupportException e) { + res = false; + assure("Exception while calling queryConversions", false); + } + + localRes = conversion[0].equals(expectedConversion); + res &= localRes; + assure("queryConversions didn't work as expected", localRes); + + try { + xCList.getDictionaryContainer().removeByName("addNewDictionary"); + } catch (com.sun.star.container.NoSuchElementException e) { + res = false; + assure("exception while removing Dictionary again", false); + } catch (com.sun.star.lang.WrappedTargetException e) { + res = false; + assure("exception while removing Dictionary again", false); + } + + localRes = !xCList.getDictionaryContainer() + .hasByName("addNewDictionary"); + res &= localRes; + assure("Dictionary hasn't been removed properly", localRes); + + XComponent dicList = (XComponent) UnoRuntime.queryInterface( + XComponent.class, xCList); + XEventListener listen = new EventListener(); + dicList.addEventListener(listen); + dicList.dispose(); + assure("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 = (XSpreadsheetDocument) UnoRuntime.queryInterface( + XSpreadsheetDocument.class, + xDoc); + XSpreadsheet xSheet = null; + + try { + xSheet = (XSpreadsheet) UnoRuntime.queryInterface( + XSpreadsheet.class, + xSheetDoc.getSheets() + .getByName(xSheetDoc.getSheets() + .getElementNames()[0])); + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("Couldn't get sheet"); + e.printStackTrace((PrintWriter) log); + } catch (com.sun.star.lang.WrappedTargetException e) { + log.println("Couldn't get sheet"); + e.printStackTrace((PrintWriter) log); + } + + return xSheet; + } + + private String[] getLeftAndRight(int counter, XSpreadsheet xSpreadsheet) { + String[] re = new String[2]; + re[0] = getCell(0, counter, xSpreadsheet).getFormula().trim(); + re[1] = 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) { + log.println("Couldn't get word"); + e.printStackTrace((PrintWriter) log); + } + + 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; + } + } +}
\ No newline at end of file diff --git a/linguistic/qa/complex/linguistic/makefile.mk b/linguistic/qa/complex/linguistic/makefile.mk new file mode 100644 index 000000000000..75330e3c5de0 --- /dev/null +++ b/linguistic/qa/complex/linguistic/makefile.mk @@ -0,0 +1,73 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +PRJ = ..$/..$/.. +TARGET = HangulHanjaConversion +PRJNAME = linguistic +PACKAGE = complex$/linguistic + +# --- Settings ----------------------------------------------------- +.INCLUDE: settings.mk + + +#----- compile .java files ----------------------------------------- + +JARFILES = mysql.jar ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar \ + OOoRunner.jar mysql.jar +JAVAFILES = HangulHanjaConversion.java +JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class) + +#----- make a jar from compiled files ------------------------------ + +MAXLINELENGTH = 100000 + +JARCLASSDIRS = $(PACKAGE) +JARTARGET = $(TARGET).jar +JARCOMPRESS = TRUE + +# --- Parameters for the test -------------------------------------- + +# test base is java complex +CT_TESTBASE = -tb java_complex + +# test looks something like the.full.package.TestName +CT_TEST = -o $(PACKAGE:s\$/\.\).$(JAVAFILES:b) + +# start the runner application +CT_APP = org.openoffice.Runner + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk + +RUN: run + +run: + +java -cp $(CLASSPATH) $(CT_APP) $(CT_TESTBASE) $(CT_TEST) -tdoc $(PWD)$/testdocuments + + + diff --git a/linguistic/qa/complex/linguistic/testdocuments/hangulhanja.sxc b/linguistic/qa/complex/linguistic/testdocuments/hangulhanja.sxc Binary files differnew file mode 100644 index 000000000000..823ce57d3261 --- /dev/null +++ b/linguistic/qa/complex/linguistic/testdocuments/hangulhanja.sxc |