package edu.stanford.nlp.naturalli; import org.junit.*; import static org.junit.Assert.*; /** * A test for {@link edu.stanford.nlp.naturalli.NaturalLogicRelation}. * * @author Gabor Angeli */ public class NaturalLogicRelationTest { @Test public void fixedIndex() { for (NaturalLogicRelation rel : NaturalLogicRelation.values()) { assertEquals(rel, NaturalLogicRelation.byFixedIndex(rel.fixedIndex)); } } @Test public void spotTestJoinTable() { assertEquals(NaturalLogicRelation.COVER, NaturalLogicRelation.NEGATION.join(NaturalLogicRelation.FORWARD_ENTAILMENT)); assertEquals(NaturalLogicRelation.FORWARD_ENTAILMENT, NaturalLogicRelation.ALTERNATION.join(NaturalLogicRelation.NEGATION)); assertEquals(NaturalLogicRelation.REVERSE_ENTAILMENT, NaturalLogicRelation.COVER.join(NaturalLogicRelation.ALTERNATION)); assertEquals(NaturalLogicRelation.EQUIVALENT, NaturalLogicRelation.NEGATION.join(NaturalLogicRelation.NEGATION)); for (NaturalLogicRelation rel : NaturalLogicRelation.values()) { assertEquals(rel, NaturalLogicRelation.EQUIVALENT.join(rel)); assertEquals(NaturalLogicRelation.INDEPENDENCE, NaturalLogicRelation.INDEPENDENCE.join(rel)); assertEquals(NaturalLogicRelation.INDEPENDENCE, rel.join(NaturalLogicRelation.INDEPENDENCE)); } } @Test public void entailmentState() { assertTrue(NaturalLogicRelation.EQUIVALENT.maintainsTruth); assertTrue(NaturalLogicRelation.FORWARD_ENTAILMENT.maintainsTruth); assertTrue(NaturalLogicRelation.NEGATION.negatesTruth); assertTrue(NaturalLogicRelation.ALTERNATION.negatesTruth); assertFalse(NaturalLogicRelation.EQUIVALENT.negatesTruth); assertFalse(NaturalLogicRelation.FORWARD_ENTAILMENT.negatesTruth); assertFalse(NaturalLogicRelation.NEGATION.maintainsTruth); assertFalse(NaturalLogicRelation.ALTERNATION.maintainsTruth); assertFalse(NaturalLogicRelation.COVER.maintainsTruth); assertFalse(NaturalLogicRelation.COVER.negatesTruth); assertFalse(NaturalLogicRelation.INDEPENDENCE.maintainsTruth); assertFalse(NaturalLogicRelation.INDEPENDENCE.negatesTruth); } @Test public void someInsertionRelations() { // assertEquals(NaturalLogicRelation.INDEPENDENCE, NaturalLogicRelation.forDependencyInsertion("nsubj")); assertEquals(NaturalLogicRelation.FORWARD_ENTAILMENT, NaturalLogicRelation.forDependencyInsertion("quantmod")); assertEquals(NaturalLogicRelation.REVERSE_ENTAILMENT, NaturalLogicRelation.forDependencyInsertion("amod")); } @Test public void conjOrPeculiarities() { assertEquals(NaturalLogicRelation.FORWARD_ENTAILMENT, NaturalLogicRelation.forDependencyInsertion("conj:or")); assertEquals(NaturalLogicRelation.FORWARD_ENTAILMENT, NaturalLogicRelation.forDependencyInsertion("conj:or", true)); assertEquals(NaturalLogicRelation.REVERSE_ENTAILMENT, NaturalLogicRelation.forDependencyInsertion("conj:or", false)); } @Test public void someDeletionRelations() { // assertEquals(NaturalLogicRelation.INDEPENDENCE, NaturalLogicRelation.forDependencyDeletion("nsubj")); assertEquals(NaturalLogicRelation.REVERSE_ENTAILMENT, NaturalLogicRelation.forDependencyDeletion("quantmod")); assertEquals(NaturalLogicRelation.FORWARD_ENTAILMENT, NaturalLogicRelation.forDependencyDeletion("amod")); } }