X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=test%2Fjalview%2Fdatamodel%2FSequenceFeatureTest.java;h=82b260e8fd156c6a5187e896957fb0b4b4c8bbd6;hb=57a942fc12f3e28a1924eed91f05abe31936dd14;hp=7debb0b12bcc5cf19421647f5a45bcc8a2a828bf;hpb=26ba864a6c290121fe6cf616794d2d0bea65fb7d;p=jalview.git diff --git a/test/jalview/datamodel/SequenceFeatureTest.java b/test/jalview/datamodel/SequenceFeatureTest.java index 7debb0b..82b260e 100644 --- a/test/jalview/datamodel/SequenceFeatureTest.java +++ b/test/jalview/datamodel/SequenceFeatureTest.java @@ -1,8 +1,10 @@ package jalview.datamodel; import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertSame; +import static org.testng.AssertJUnit.assertTrue; import org.testng.annotations.Test; @@ -45,4 +47,107 @@ public class SequenceFeatureTest Integer i = new Integer(27); assertSame(i, sf1.getValue("Unknown", i)); } + + /** + * Tests the method that returns 1 / -1 / 0 for strand "+" / "-" / other + */ + @Test(groups = { "Functional" }) + public void testGetStrand() + { + SequenceFeature sf = new SequenceFeature("type", "desc", 22, 33, 12.5f, + "group"); + assertEquals(0, sf.getStrand()); + sf.setValue("STRAND", "+"); + assertEquals(1, sf.getStrand()); + sf.setValue("STRAND", "-"); + assertEquals(-1, sf.getStrand()); + sf.setValue("STRAND", "."); + assertEquals(0, sf.getStrand()); + } + + /** + * Tests for equality, and that equal objects have the same hashCode + */ + @Test(groups = { "Functional" }) + public void testEqualsAndHashCode() + { + SequenceFeature sf1 = new SequenceFeature("type", "desc", 22, 33, + 12.5f, "group"); + sf1.setValue("ID", "id"); + sf1.setValue("Name", "name"); + sf1.setValue("Parent", "parent"); + sf1.setStrand("+"); + sf1.setPhase("1"); + SequenceFeature sf2 = new SequenceFeature("type", "desc", 22, 33, + 12.5f, "group"); + sf2.setValue("ID", "id"); + sf2.setValue("Name", "name"); + sf2.setValue("Parent", "parent"); + sf2.setStrand("+"); + sf2.setPhase("1"); + + assertFalse(sf1.equals(null)); + assertTrue(sf1.equals(sf2)); + assertTrue(sf2.equals(sf1)); + assertEquals(sf1.hashCode(), sf2.hashCode()); + + // changing type breaks equals: + sf2.setType("Type"); + assertFalse(sf1.equals(sf2)); + + // changing description breaks equals: + sf2.setType("type"); + sf2.setDescription("Desc"); + assertFalse(sf1.equals(sf2)); + + // changing start position breaks equals: + sf2.setDescription("desc"); + sf2.setBegin(21); + assertFalse(sf1.equals(sf2)); + + // changing end position breaks equals: + sf2.setBegin(22); + sf2.setEnd(32); + assertFalse(sf1.equals(sf2)); + + // changing feature group breaks equals: + sf2.setEnd(33); + sf2.setFeatureGroup("Group"); + assertFalse(sf1.equals(sf2)); + + // changing ID breaks equals: + sf2.setFeatureGroup("group"); + sf2.setValue("ID", "id2"); + assertFalse(sf1.equals(sf2)); + + // changing Name breaks equals: + sf2.setValue("ID", "id"); + sf2.setValue("Name", "Name"); + assertFalse(sf1.equals(sf2)); + + // changing Parent breaks equals: + sf2.setValue("Name", "name"); + sf1.setValue("Parent", "Parent"); + assertFalse(sf1.equals(sf2)); + + // changing strand breaks equals: + sf1.setValue("Parent", "parent"); + sf2.setStrand("-"); + assertFalse(sf1.equals(sf2)); + + // changing phase breaks equals: + sf2.setStrand("+"); + sf1.setPhase("2"); + assertFalse(sf1.equals(sf2)); + + // restore equality as sanity check: + sf1.setPhase("1"); + assertTrue(sf1.equals(sf2)); + assertTrue(sf2.equals(sf1)); + assertEquals(sf1.hashCode(), sf2.hashCode()); + + // changing status doesn't change equals: + sf1.setStatus("new"); + assertTrue(sf1.equals(sf2)); + } }