//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.annotators.cleaners; import static org.junit.Assert.assertEquals; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.fit.util.JCasUtil; import org.apache.uima.resource.ResourceInitializationException; import org.junit.Test; import uk.gov.dstl.baleen.annotators.cleaners.NaiveMergeRelations; import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest; import uk.gov.dstl.baleen.types.semantic.Entity; import uk.gov.dstl.baleen.types.semantic.Relation; public class NaiveMergeRelationsTest extends AbstractAnnotatorTest { public NaiveMergeRelationsTest() { super(NaiveMergeRelations.class); } @Test public void testDifferent() throws AnalysisEngineProcessException, ResourceInitializationException { final Entity a = new Entity(jCas); a.setValue("a"); a.addToIndexes(); final Entity b = new Entity(jCas); b.setValue("b"); b.addToIndexes(); final Entity c = new Entity(jCas); c.setValue("c"); c.addToIndexes(); final Relation r1 = new Relation(jCas); r1.setBegin(0); r1.setEnd(10); r1.setRelationshipType("type"); r1.setRelationshipType("subtype"); r1.setSource(a); r1.setTarget(b); r1.addToIndexes(); // Different relation final Relation r4 = new Relation(jCas); r4.setBegin(r1.getBegin()); r4.setEnd(r1.getEnd()); r4.setRelationshipType("different"); r4.setRelationSubType(r1.getRelationSubType()); r4.setSource(a); r4.setTarget(b); r4.addToIndexes(); // Different source final Relation r5 = new Relation(jCas); r5.setBegin(r1.getBegin()); r5.setEnd(r1.getEnd()); r5.setRelationshipType(r1.getRelationshipType()); r5.setRelationSubType(r1.getRelationSubType()); r5.setSource(c); r5.setTarget(b); r5.addToIndexes(); // Different target final Relation r6 = new Relation(jCas); r6.setBegin(r1.getBegin()); r6.setEnd(r1.getEnd()); r6.setRelationshipType(r1.getRelationshipType()); r6.setRelationSubType(r1.getRelationSubType()); r6.setSource(a); r6.setTarget(c); r6.addToIndexes(); final int size = JCasUtil.select(jCas, Relation.class).size(); processJCas(); assertEquals(size, JCasUtil.select(jCas, Relation.class).size()); } @Test public void testSame() throws AnalysisEngineProcessException, ResourceInitializationException { final Entity a = new Entity(jCas); a.setValue("a"); a.addToIndexes(); final Entity b = new Entity(jCas); b.setValue("b"); b.addToIndexes(); final Entity c = new Entity(jCas); c.setValue("c"); c.addToIndexes(); final Relation r1 = new Relation(jCas); r1.setBegin(0); r1.setEnd(10); r1.setRelationshipType("type"); r1.setRelationshipType("subtype"); r1.setSource(a); r1.setTarget(b); r1.addToIndexes(); // Different end final Relation r2 = new Relation(jCas); r2.setBegin(r1.getBegin()); r2.setEnd(9); r2.setRelationshipType(r1.getRelationshipType()); r2.setRelationSubType(r1.getRelationSubType()); r2.setSource(a); r2.setTarget(b); r2.addToIndexes(); // Different start final Relation r3 = new Relation(jCas); r3.setBegin(1); r3.setEnd(r1.getEnd()); r3.setRelationshipType(r1.getRelationshipType()); r3.setRelationSubType(r1.getRelationSubType()); r3.setSource(a); r3.setTarget(b); r3.addToIndexes(); processJCas(); assertEquals(1, JCasUtil.select(jCas, Relation.class).size()); } }