/* * 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 org.apache.stanbol.enhancer.serviceapi.helper; import java.math.BigInteger; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import org.apache.clerezza.commons.rdf.Language; import org.apache.clerezza.commons.rdf.Graph; import org.apache.clerezza.commons.rdf.IRI; import org.apache.clerezza.rdf.core.LiteralFactory; import org.apache.stanbol.commons.indexedgraph.IndexedGraph; import org.apache.stanbol.enhancer.servicesapi.ContentItem; import org.apache.stanbol.enhancer.servicesapi.EngineException; import org.apache.stanbol.enhancer.servicesapi.EnhancementEngine; import org.apache.stanbol.enhancer.servicesapi.helper.EnhancementEngineHelper; import org.apache.stanbol.enhancer.servicesapi.rdf.Properties; import org.junit.Assert; import org.junit.Test; public class EnhancementEngineHelperTest { private static final LiteralFactory lf = LiteralFactory.getInstance(); /** * internally used as argument for {@link EnhancementEngineHelper} methods */ private static final EnhancementEngine dummyEngine = new EnhancementEngine(){ @Override public int canEnhance(ContentItem ci) throws EngineException { return 0; } @Override public void computeEnhancements(ContentItem ci) throws EngineException { } @Override public String getName() { return "DummyEngine"; } }; @Test public void testTextAnnotationNewModel(){ String content = "The Stanbol Enhancer can extract Entities form parsed Text."; Language lang = new Language("en"); int start = content.indexOf("Stanbol"); int end = start+"Stanbol Enhancer".length(); IRI ciUri = new IRI("http://www.example.org/contentItem#1"); Graph metadata = new IndexedGraph(); IRI ta = EnhancementEngineHelper.createTextEnhancement(metadata, dummyEngine, ciUri); EnhancementEngineHelper.setOccurrence(metadata, ta, content, start, end, lang, -1, true); Assert.assertEquals("The ", EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_PREFIX)); Assert.assertEquals("Stanbol Enhancer", EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTED_TEXT)); Assert.assertEquals(" can extra", EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_SUFFIX)); Assert.assertEquals(Integer.valueOf(start), EnhancementEngineHelper.get( metadata, ta, Properties.ENHANCER_START, Integer.class, lf)); Assert.assertEquals(Integer.valueOf(end), EnhancementEngineHelper.get( metadata, ta, Properties.ENHANCER_END, Integer.class, lf)); //head and tail should be null Assert.assertNull(EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_HEAD)); Assert.assertNull(EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_TAIL)); content = "Ich habe den Schlüssel fürs Donaudampfschiffahrtsgesellschaftskapitänskajütenschloss verlohren."; start = content.indexOf("Donaudampfschi"); end = content.indexOf(" verlohren"); ta = EnhancementEngineHelper.createTextEnhancement(metadata, dummyEngine, ciUri); EnhancementEngineHelper.setOccurrence(metadata, ta, content, start, end, lang, -1, true); Assert.assertEquals("ssel fürs ", EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_PREFIX)); Assert.assertEquals(" verlohren", EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_SUFFIX)); Assert.assertEquals(Integer.valueOf(start), EnhancementEngineHelper.get( metadata, ta, Properties.ENHANCER_START, Integer.class, lf)); Assert.assertEquals(Integer.valueOf(end), EnhancementEngineHelper.get( metadata, ta, Properties.ENHANCER_END, Integer.class, lf)); //selected text is expected to be null Assert.assertNull(EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTED_TEXT)); //tail and head should be present Assert.assertEquals("Donaudampf", EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_HEAD)); Assert.assertEquals("tenschloss", EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_TAIL)); //finally the same but deactivating head/tail ta = EnhancementEngineHelper.createTextEnhancement(metadata, dummyEngine, ciUri); EnhancementEngineHelper.setOccurrence(metadata, ta, content, start, end, lang, -1, false); Assert.assertEquals("Donaudampfschiffahrtsgesellschaftskapitänskajütenschloss", EnhancementEngineHelper.getString(metadata, ta,Properties.ENHANCER_SELECTED_TEXT)); Assert.assertNull(EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_HEAD)); Assert.assertNull(EnhancementEngineHelper.getString( metadata, ta,Properties.ENHANCER_SELECTION_TAIL)); } /** * Tests positive cases for {@link EnhancementEngineHelper#parseConfigValues(Object, Class, boolean)} */ @Test public void testConfigValues(){ Object value = new String[]{"23","27.25","-23"}; Assert.assertEquals( Arrays.asList(Float.valueOf(23),Float.valueOf(27.25f),Float.valueOf(-23)), EnhancementEngineHelper.parseConfigValues(value, Float.class)); Assert.assertEquals( Arrays.asList(Double.valueOf(23),Double.valueOf(27.25f),Double.valueOf(-23)), EnhancementEngineHelper.parseConfigValues(value, Double.class)); Assert.assertEquals( Arrays.asList("23","27.25","-23"), EnhancementEngineHelper.parseConfigValues(value, String.class)); value = new float[]{23f,27.25f,-23f}; Assert.assertEquals( Arrays.asList(Float.valueOf(23),Float.valueOf(27.25f),Float.valueOf(-23)), EnhancementEngineHelper.parseConfigValues(value, Float.class)); Assert.assertEquals( Arrays.asList(Double.valueOf(23),Double.valueOf(27.25f),Double.valueOf(-23)), EnhancementEngineHelper.parseConfigValues(value, Double.class)); Assert.assertEquals( Arrays.asList("23.0","27.25","-23.0"), EnhancementEngineHelper.parseConfigValues(value, String.class)); value = new String[]{"23","27.25",null,"-23"}; Assert.assertEquals( Arrays.asList(Float.valueOf(23),Float.valueOf(27.25f),Float.valueOf(-23)), EnhancementEngineHelper.parseConfigValues(value, Float.class)); Assert.assertEquals( Arrays.asList(Float.valueOf(23),Float.valueOf(27.25f),null,Float.valueOf(-23)), EnhancementEngineHelper.parseConfigValues(value, Float.class,true)); value = "23"; Assert.assertEquals(Arrays.asList(Integer.valueOf(23)), EnhancementEngineHelper.parseConfigValues(value, Integer.class)); Assert.assertEquals(Arrays.asList(Float.valueOf(23)), EnhancementEngineHelper.parseConfigValues(value, Float.class)); Assert.assertEquals(Arrays.asList("23"), EnhancementEngineHelper.parseConfigValues(value, String.class)); value = null; Assert.assertNull(EnhancementEngineHelper.parseConfigValues(value, String.class)); Assert.assertNull(EnhancementEngineHelper.parseConfigValues(value, Double.class)); //This tests parsing an Set value = new String[]{"23","27","-23","27"}; Assert.assertEquals( new HashSet<Integer>(Arrays.asList(Integer.valueOf(23),Integer.valueOf(27),Integer.valueOf(-23))), EnhancementEngineHelper.parseConfigValues(value, Integer.class, new HashSet<Integer>(),false)); Assert.assertEquals( new HashSet<String>(Arrays.asList("23","27","-23")), EnhancementEngineHelper.parseConfigValues(value, String.class, new HashSet<String>(),false)); //This tests parsing a Set the the config values method that allows to parse //a custom collection value = new String[]{"23","27",null,"-23","27", null}; Assert.assertEquals( new HashSet<Integer>(Arrays.asList(Integer.valueOf(23),Integer.valueOf(27),Integer.valueOf(-23))), EnhancementEngineHelper.parseConfigValues(value, Integer.class, new HashSet<Integer>())); Assert.assertEquals( new HashSet<String>(Arrays.asList("23","27","-23")), EnhancementEngineHelper.parseConfigValues(value, String.class, new HashSet<String>())); Assert.assertEquals( new HashSet<Integer>(Arrays.asList(null, Integer.valueOf(23),Integer.valueOf(27),Integer.valueOf(-23))), EnhancementEngineHelper.parseConfigValues(value, Integer.class, new HashSet<Integer>(),true)); Assert.assertEquals( new HashSet<String>(Arrays.asList(null,"23","27","-23")), EnhancementEngineHelper.parseConfigValues(value, String.class, new HashSet<String>(),true)); } /** * Tests positive cases for {@link EnhancementEngineHelper#parseFirstConfigValue(Object, Class)} */ @Test public void testFirstConfigValue(){ Object value = null; Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); value = new String[]{null}; Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); value = new String[]{null,null,null}; Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); value = Arrays.asList((String)null); Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); value = Arrays.asList(null,null,null); Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertNull(EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); value = "23"; Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = new String[]{"23"}; Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = new int[]{23}; Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = new String[]{"23","24"}; Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = new int[]{23, 24}; Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = new String[]{null,"23"}; Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = Arrays.asList("23"); Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = Arrays.asList("23","24"); Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); value = Arrays.asList(null,"23"); Assert.assertEquals("23", EnhancementEngineHelper.parseFirstConfigValue(value, String.class)); Assert.assertEquals(Integer.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Integer.class)); Assert.assertEquals(Double.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, Double.class)); Assert.assertEquals(BigInteger.valueOf(23), EnhancementEngineHelper.parseFirstConfigValue(value, BigInteger.class)); } }