//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.coreference.impl.data; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.apache.uima.jcas.JCas; import org.junit.Before; import org.junit.Test; import uk.gov.dstl.baleen.resources.data.Gender; import uk.gov.dstl.baleen.resources.data.Multiplicity; import uk.gov.dstl.baleen.types.common.Person; import uk.gov.dstl.baleen.types.language.Sentence; import uk.gov.dstl.baleen.types.semantic.Entity; import uk.gov.dstl.baleen.types.semantic.Location; import uk.gov.dstl.baleen.uima.testing.JCasSingleton; public class MentionTest{ JCas jCas; @Before public void beforeTest() throws Exception{ jCas = JCasSingleton.getJCasInstance(); } @Test public void test(){ jCas.setDocumentText("Mary had a little lamb."); Entity e = new Entity(jCas, 0, 4); Mention m = new Mention(e); assertEquals(e, m.getAnnotation()); Sentence s = new Sentence(jCas, 0, 23); m.setSentence(s); assertEquals(s, m.getSentence()); m.setAnimacy(Animacy.ANIMATE); assertEquals(Animacy.ANIMATE, m.getAnimacy()); m.setGender(Gender.F); assertEquals(Gender.F, m.getGender()); m.setMultiplicity(Multiplicity.SINGULAR); assertEquals(Multiplicity.SINGULAR, m.getMultiplicity()); assertEquals("Mary", m.getText()); assertEquals(MentionType.ENTITY, m.getType()); assertEquals("Mary [ENTITY]", m.toString()); Cluster c1 = new Cluster(); Cluster c2 = new Cluster(); m.addToCluster(c1); m.addToCluster(c2); assertTrue(m.hasClusters()); assertEquals(2, m.getClusters().size()); assertTrue(m.getClusters().contains(c1)); assertTrue(m.getClusters().contains(c2)); assertNotNull(m.getAnyCluster()); m.clearClusters(); assertFalse(m.hasClusters()); } @Test public void testEquals(){ jCas.setDocumentText("Mary had a little lamb."); Entity e1 = new Entity(jCas, 0, 4); //Mary Entity e2 = new Entity(jCas, 11, 22); //little lamb Mention m1 = new Mention(e1); Mention m1a = new Mention(e1); Mention m2 = new Mention(e2); assertEquals(m1, m1); assertEquals(m1, m1a); assertNotEquals(m1, null); assertNotEquals(m1, "Mary"); assertNotEquals(m1, m2); } @Test public void testAttributes(){ jCas.setDocumentText("Mary had a little lamb."); Person p = new Person(jCas, 0, 4); //Mary Entity e = new Entity(jCas, 11, 22); //little lamb Location l = new Location(jCas, 11, 22); //little lamb Mention m1 = new Mention(p); m1.setGender(Gender.F); m1.setAnimacy(Animacy.ANIMATE); m1.setMultiplicity(Multiplicity.SINGULAR); m1.setPerson(uk.gov.dstl.baleen.annotators.coreference.impl.data.Person.UNKNOWN); Mention m2 = new Mention(e); m2.setGender(Gender.UNKNOWN); m2.setAnimacy(Animacy.ANIMATE); m2.setMultiplicity(Multiplicity.SINGULAR); m2.setPerson(uk.gov.dstl.baleen.annotators.coreference.impl.data.Person.UNKNOWN); Mention m3 = new Mention(l); m3.setGender(Gender.UNKNOWN); m3.setAnimacy(Animacy.ANIMATE); m3.setMultiplicity(Multiplicity.SINGULAR); m3.setPerson(uk.gov.dstl.baleen.annotators.coreference.impl.data.Person.UNKNOWN); Mention m4a = new Mention(p); m4a.setGender(Gender.M); m4a.setAnimacy(Animacy.ANIMATE); m4a.setMultiplicity(Multiplicity.SINGULAR); m4a.setPerson(uk.gov.dstl.baleen.annotators.coreference.impl.data.Person.UNKNOWN); Mention m4b = new Mention(p); m4b.setGender(Gender.F); m4b.setAnimacy(Animacy.INANIMATE); m4b.setMultiplicity(Multiplicity.SINGULAR); m4b.setPerson(uk.gov.dstl.baleen.annotators.coreference.impl.data.Person.UNKNOWN); Mention m4c = new Mention(p); m4c.setGender(Gender.F); m4c.setAnimacy(Animacy.ANIMATE); m4c.setMultiplicity(Multiplicity.PLURAL); m4c.setPerson(uk.gov.dstl.baleen.annotators.coreference.impl.data.Person.UNKNOWN); Mention m4d = new Mention(p); m4d.setGender(Gender.F); m4d.setAnimacy(Animacy.ANIMATE); m4d.setMultiplicity(Multiplicity.SINGULAR); m4d.setPerson(uk.gov.dstl.baleen.annotators.coreference.impl.data.Person.FIRST); assertTrue(m1.isAttributeCompatible(m2)); assertFalse(m1.isAttributeCompatible(m3)); assertTrue(m2.isAttributeCompatible(m3)); assertFalse(m1.isAttributeCompatible(m4a)); assertFalse(m1.isAttributeCompatible(m4b)); assertFalse(m1.isAttributeCompatible(m4c)); assertFalse(m1.isAttributeCompatible(m4d)); } }