//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.patterns.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import org.apache.uima.UIMAException;
import org.apache.uima.jcas.JCas;
import org.junit.Test;
import uk.gov.dstl.baleen.types.semantic.Entity;
import uk.gov.dstl.baleen.types.semantic.Relation;
import uk.gov.dstl.baleen.uima.testing.JCasSingleton;
public class RelationWrapperTest {
@Test
public void testGetRelation() throws UIMAException {
final JCas jCas = JCasSingleton.getJCasInstance();
final Relation r = new Relation(jCas);
final RelationWrapper wrapper = new RelationWrapper(r);
assertEquals(r, wrapper.getRelation());
}
@Test
public void testGetEquals() throws UIMAException {
final JCas jCas = JCasSingleton.getJCasInstance();
final Entity a = new Entity(jCas);
final Entity b = new Entity(jCas);
final Entity c = new Entity(jCas);
final Relation r1 = new Relation(jCas);
r1.setBegin(0);
r1.setEnd(10);
r1.setRelationshipType("type");
r1.setRelationshipType("subtype");
r1.setSource(a);
r1.setTarget(b);
// 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);
// 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);
// 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);
// 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);
// 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);
// null entity / invalid
final Relation r7 = new Relation(jCas);
r7.setBegin(r1.getBegin());
r7.setEnd(r1.getEnd());
r7.setRelationshipType(r1.getRelationshipType());
r7.setRelationSubType(r1.getRelationSubType());
r7.setSource(null);
r7.setTarget(null);
final RelationWrapper w1 = new RelationWrapper(r1);
final RelationWrapper w2 = new RelationWrapper(r2);
final RelationWrapper w3 = new RelationWrapper(r3);
final RelationWrapper w4 = new RelationWrapper(r4);
final RelationWrapper w5 = new RelationWrapper(r5);
final RelationWrapper w6 = new RelationWrapper(r6);
final RelationWrapper w7 = new RelationWrapper(r7);
assertNotEquals(w1, w2);
assertNotEquals(w1.hashCode(), w2.hashCode());
assertNotEquals(w1, w3);
assertNotEquals(w1.hashCode(), w3.hashCode());
assertNotEquals(w1, w4);
assertNotEquals(w1.hashCode(), w4.hashCode());
assertNotEquals(w1, w5);
assertNotEquals(w1.hashCode(), w5.hashCode());
assertNotEquals(w1, w6);
assertNotEquals(w1.hashCode(), w6.hashCode());
assertNotEquals(w1, w7);
assertNotEquals(w1.hashCode(), w7.hashCode());
assertNotNull(w1.equals(null));
}
}