diff --git a/CMakeLists.txt b/CMakeLists.txt index bcf0bb1..5280df2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -183,6 +183,6 @@ if (UNIX) endif() if (UNIX) - add_test(TestJavaWrapper ./testJavaWrapper.sh "${PROJECT_BINARY_DIR}") + add_test(TestJavaWrapper ./testJavaWrapper.sh "${CMAKE_CURRENT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}") add_test(TestPythonWrapper ./testPythonWrapper.sh "${PROJECT_BINARY_DIR}") endif () diff --git a/morfeusz/wrappers/java/CMakeLists.txt b/morfeusz/wrappers/java/CMakeLists.txt index 112c3ed..5666350 100644 --- a/morfeusz/wrappers/java/CMakeLists.txt +++ b/morfeusz/wrappers/java/CMakeLists.txt @@ -10,8 +10,9 @@ include_directories (${CMAKE_SOURCE_DIR}/morfeusz) set (SWIG_JAVA_OUTFILE "${CMAKE_CURRENT_BINARY_DIR}/swigJAVA.cpp") file (COPY pl DESTINATION .) -file (COPY JMorfeuszTest DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") + set (JAVA_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/pl/waw/ipipan/morfeusz") + add_custom_command ( OUTPUT ${SWIG_JAVA_OUTFILE} COMMAND swig -java -c++ -package pl.waw.ipipan.morfeusz -o ${SWIG_JAVA_OUTFILE} -outdir ${JAVA_SRC_DIR} ${CMAKE_SOURCE_DIR}/morfeusz/wrappers/morfeusz.i @@ -19,6 +20,7 @@ add_custom_command ( ) add_custom_target(generate-java-wrapper ALL DEPENDS ${SWIG_JAVA_OUTFILE}) + add_library (libjmorfeusz SHARED ${SWIG_JAVA_OUTFILE}) add_dependencies (libjmorfeusz generate_java_wrapper) set_target_properties (libjmorfeusz PROPERTIES OUTPUT_NAME "jmorfeusz") @@ -58,17 +60,6 @@ add_jar (jmorfeusz ENTRY_POINT pl/waw/ipipan/morfeusz/app/App DEPENDS libjmorfeusz generate-java-wrapper) -#create_javadoc(jmorfeusz_javadoc -# PACKAGES pl.waw.ipipan.morfeusz -# SOURCEPATH "${CMAKE_CURRENT_BINARY_DIR}" -# CLASSPATH "${CMAKE_JAVA_INCLUDE_PATH}" -# WINDOWTITLE "JMorfeusz - Morfeusz Java binding" -# DOCTITLE "<h1>JMorfeusz</h1>" -# AUTHOR TRUE -# USE TRUE -# VERSION TRUE -# DEPENDS jmorfeusz generate_java_wrapper) - add_custom_target(generate-javadoc ALL COMMAND javadoc -d "${CMAKE_CURRENT_BINARY_DIR}/jmorfeusz_javadoc" diff --git a/morfeusz/wrappers/java/JMorfeuszTest.java b/morfeusz/wrappers/java/JMorfeuszTest.java new file mode 100644 index 0000000..a298cf7 --- /dev/null +++ b/morfeusz/wrappers/java/JMorfeuszTest.java @@ -0,0 +1,108 @@ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.NoSuchElementException; +import org.junit.After; +import org.junit.AfterClass; +import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import pl.waw.ipipan.morfeusz.Morfeusz; +import pl.waw.ipipan.morfeusz.MorfeuszException; +import pl.waw.ipipan.morfeusz.MorphInterpretation; +import pl.waw.ipipan.morfeusz.ResultsIterator; + +/** + * + * @author mlenart + */ +public class JMorfeuszTest { + + private Morfeusz morfeusz; + + public JMorfeuszTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + morfeusz = Morfeusz.createInstance(); + } + + @After + public void tearDown() { + } + + @Test + public void testAnalyzeAsList() { + List<MorphInterpretation> res = morfeusz.analyseAsList("Aaaa żżżż"); + assertEquals(2, res.size()); + assertEquals("Aaaa", res.get(0).getOrth()); + assertEquals("żżżż", res.get(1).getOrth()); + try { + res.get(2); + fail(); + } + catch (IndexOutOfBoundsException ex) { + + } + } + + @Test + public void testAnalyzeAsIterator() { + ResultsIterator it = morfeusz.analyseAsIterator("Aaaa żżżż"); + assertTrue(it.hasNext()); + assertEquals("Aaaa", it.next().getOrth()); + assertTrue(it.hasNext()); + assertEquals("żżżż", it.next().getOrth()); + try { + it.next(); + fail(); + } + catch (NoSuchElementException ex) { + + } + } + + @Test(expected = MorfeuszException.class) + public void testInvalidAgglOption() { + morfeusz.setAggl("XXXXYYYYZZZZ"); + } + + @Test(expected = MorfeuszException.class) + public void testInvalidPraetOption() { + morfeusz.setPraet("XXXXYYYYZZZZ"); + } + + @Test(expected = MorfeuszException.class) + public void testInvalidGenerate() { + morfeusz.generate("AAAA BBBB"); + } + + @Test(expected = NullPointerException.class) + public void testNullCaseHandling() { + morfeusz.setCaseHandling(null); + } + + @Test(expected = IOException.class) + public void testNonExistingDictionaryFile() throws IOException { + File tmpFile = File.createTempFile("morfeusz_invalid_dict", ".test"); + tmpFile.delete(); + morfeusz.setGeneratorDictionary(tmpFile.getAbsolutePath()); + } + + @Test(expected = IOException.class) + public void testInvalidDictionaryFile() throws IOException { + File tmpFile = File.createTempFile("morfeusz_invalid_dict", ".test"); + morfeusz.setGeneratorDictionary(tmpFile.getAbsolutePath()); + } +} diff --git a/morfeusz/wrappers/java/test_lib/junit.jar b/morfeusz/wrappers/java/test_lib/junit.jar new file mode 100644 index 0000000..954851e --- /dev/null +++ b/morfeusz/wrappers/java/test_lib/junit.jar diff --git a/testJavaWrapper.sh b/testJavaWrapper.sh index bd7aa62..eac1c74 100755 --- a/testJavaWrapper.sh +++ b/testJavaWrapper.sh @@ -1,5 +1,11 @@ #!/bin/bash echo "testing java wrapper" -PROJECT_BINARY_DIR=$1 -cd morfeusz/wrappers/java/JMorfeuszTest -LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$PROJECT_BINARY_DIR/morfeusz/wrappers/java" ant -lib "$PROJECT_BINARY_DIR/morfeusz/wrappers/java" test +PROJECT_SRC_DIR=$1 +PROJECT_BINARY_DIR=$2 +TEST_DIR="$PROJECT_BINARY_DIR/morfeusz/wrappers/java" +JUNIT_JAR="$PROJECT_SRC_DIR/morfeusz/wrappers/java/test_lib/junit.jar" +JMORFEUSZ_JAR="$TEST_DIR/jmorfeusz.jar" +JAVA_TEST_FILE="$PROJECT_SRC_DIR/morfeusz/wrappers/java/JMorfeuszTest.java" + +LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$TEST_DIR" javac -cp "$JUNIT_JAR:$JMORFEUSZ_JAR" -d "$TEST_DIR" "$JAVA_TEST_FILE" +LD_LIBRARY_PATH="$PROJECT_BINARY_DIR/morfeusz:$TEST_DIR" java -cp "$JUNIT_JAR:$JMORFEUSZ_JAR:$TEST_DIR" org.junit.runner.JUnitCore JMorfeuszTest