/* * Copyright 2010 * Ubiquitous Knowledge Processing (UKP) Lab * Technische Universität Darmstadt * * Licensed 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 de.tudarmstadt.ukp.dkpro.core.decompounding.splitter; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import java.util.ArrayList; import java.util.Collections; import java.util.List; import junit.framework.Assert; import org.junit.Test; public class DecompoundedWordTest { @Test public void testCreate() { DecompoundedWord s = DecompoundedWord.createFromString("aktion(s)+plan"); Assert.assertEquals("aktion", s.getSplits().get(0).getWord()); Assert.assertEquals("s", s.getSplits().get(0).getMorpheme()); Assert.assertEquals("plan", s.getSplits().get(1).getWord()); Assert.assertEquals(null, s.getSplits().get(1).getMorpheme()); } @Test public void testToString() { Fragment e1 = new Fragment(); e1.setWord("aktion"); e1.setMorpheme("s"); Fragment e2 = new Fragment(); e2.setWord("plan"); DecompoundedWord s = new DecompoundedWord(); s.appendSplitElement(e1); s.appendSplitElement(e2); Assert.assertEquals("aktion(s)+plan", s.toString()); } @Test public void testEquals() { Fragment e1 = new Fragment(); e1.setWord("aktion"); e1.setMorpheme("s"); Fragment e2 = new Fragment(); e2.setWord("plan"); DecompoundedWord s1 = new DecompoundedWord(); s1.appendSplitElement(e1); s1.appendSplitElement(e2); Fragment e3 = new Fragment(); e3.setWord("aktion"); e3.setMorpheme("s"); Fragment e4 = new Fragment(); e4.setWord("plan"); DecompoundedWord s2 = new DecompoundedWord(); s2.appendSplitElement(e3); s2.appendSplitElement(e4); Assert.assertTrue(s1.equals(s2)); e2.setMorpheme("e"); Assert.assertFalse(s1.equals(s2)); } @Test public void testEqualsWithoutMorpheme() { DecompoundedWord e1 = DecompoundedWord.createFromString("zugang(s)+liste"); DecompoundedWord e2 = DecompoundedWord.createFromString("zugangs+liste"); Assert.assertTrue(e1.equalWithoutMorpheme(e2)); Assert.assertTrue(e2.equalWithoutMorpheme(e1)); } @Test public void testReplaceSplit() { DecompoundedWord s = DecompoundedWord.createFromString("Donau+dampfschiff+fahrt"); s.replaceSplitElement(1, DecompoundedWord.createFromString("dampf+schiff")); Assert.assertEquals("Donau+dampf+schiff+fahrt", s.toString()); s = DecompoundedWord.createFromString("Donau+dampfschiff+fahrten"); s.replaceSplitElement(2, new Fragment("fahrt", "en")); Assert.assertEquals("Donau+dampfschiff+fahrt(en)", s.toString()); } @Test public void testSort() { DecompoundedWord s1 = DecompoundedWord.createFromString("Aktion(s)+plan"); DecompoundedWord s2 = DecompoundedWord.createFromString("Akt+ion(s)+plan"); DecompoundedWord s3 = DecompoundedWord.createFromString("Aktionsplan"); List<DecompoundedWord> splits = new ArrayList<DecompoundedWord>(); splits.add(s1); splits.add(s2); splits.add(s3); s1.setWeight(2); s2.setWeight(3); s3.setWeight(1); Collections.sort(splits); Assert.assertEquals(s2, splits.get(0)); Assert.assertEquals(s1, splits.get(1)); Assert.assertEquals(s3, splits.get(2)); } @Test public void testIsCompound() { DecompoundedWord s1 = DecompoundedWord.createFromString("Aktion(s)+plan"); DecompoundedWord s2 = DecompoundedWord.createFromString("Aktionsplan"); assertThat(s1.isCompound(), is(true)); assertThat(s2.isCompound(), is(false)); } @Test public void testHasLastFragmentMorpheme() { DecompoundedWord s1 = DecompoundedWord.createFromString("Aktion(s)+plan"); DecompoundedWord s2 = DecompoundedWord.createFromString("unter+flur+konvektor(en)"); assertThat(s1.hasLastFragmentMorpheme(), is(false)); assertThat(s2.hasLastFragmentMorpheme(), is(true)); } }