Merge branch 'develop' into bug/JAL-2346annotationChoice
[jalview.git] / test / jalview / datamodel / SequenceGroupTest.java
index 243bd53..65549f2 100644 (file)
@@ -14,7 +14,7 @@ import org.testng.annotations.Test;
 
 public class SequenceGroupTest
 {
-  @Test
+  @Test(groups={"Functional"})
   public void testAddSequence()
   {
     SequenceGroup sg = new SequenceGroup();
@@ -42,7 +42,7 @@ public class SequenceGroupTest
     assertTrue(sg.getSequences().contains(seq3));
   }
 
-  @Test
+  @Test(groups={"Functional"})
   public void testAddOrRemove()
   {
     SequenceGroup sg = new SequenceGroup();
@@ -66,7 +66,7 @@ public class SequenceGroupTest
     assertFalse(sg.getSequences().contains(seq1));
   }
 
-  @Test
+  @Test(groups={"Functional"})
   public void testGetColourScheme()
   {
     SequenceGroup sg = new SequenceGroup();
@@ -81,7 +81,7 @@ public class SequenceGroupTest
     assertSame(scheme, sg.getColourScheme());
   }
 
-  @Test
+  @Test(groups={"Functional"})
   public void testSetContext()
   {
     SequenceGroup sg1 = new SequenceGroup();
@@ -112,4 +112,75 @@ public class SequenceGroupTest
       assertNull(sg3.getContext());
     }
   }
+
+  @Test(groups = { "Functional" })
+  public void testContains()
+  {
+    /* 
+     * essentially the same tests as AlignmentI.findGroup 
+     * but from a particular group's perspective
+     */
+
+    SequenceI seq1 = new Sequence("seq1", "ABCDEF---GHI");
+    SequenceI seq2 = new Sequence("seq2", "---JKLMNO---");
+    AlignmentI a = new Alignment(new SequenceI[] { seq1, seq2 });
+    /*
+     * add a group consisting of just "DEF"
+     */
+    SequenceGroup sg1 = new SequenceGroup();
+    sg1.addSequence(seq1, false);
+    sg1.setStartRes(3);
+    sg1.setEndRes(5);
+
+    /*
+     * test sequence membership
+     */
+    assertTrue(sg1.contains(seq1));
+    assertFalse(sg1.contains(seq2));
+
+    /*
+     * test sequence+position
+     */
+
+    assertFalse(sg1.contains(seq1, 2)); // position not in group
+    assertFalse(sg1.contains(seq1, 6)); // position not in group
+    assertFalse(sg1.contains(seq2, 5)); // sequence not in group
+    assertTrue(sg1.contains(seq1, 3)); // yes
+    assertTrue(sg1.contains(seq1, 4));
+    assertTrue(sg1.contains(seq1, 5));
+
+    /*
+     * add a group consisting of 
+     * EF--
+     * KLMN
+     */
+    SequenceGroup sg2 = new SequenceGroup();
+    sg2.addSequence(seq1, false);
+    sg2.addSequence(seq2, false);
+    sg2.setStartRes(4);
+    sg2.setEndRes(7);
+    a.addGroup(sg2);
+
+    /*
+     * if a residue is in more than one group, method returns
+     * the first found (in order groups were added)
+     */
+    assertTrue(sg2.contains(seq1, 4));
+    assertTrue(sg2.contains(seq1, 5));
+
+    /*
+     * seq2 only belongs to the second group
+     */
+    assertTrue(sg2.contains(seq2, 4));
+    assertTrue(sg2.contains(seq2, 5));
+    assertTrue(sg2.contains(seq2, 6));
+    assertTrue(sg2.contains(seq2, 7));
+    assertFalse(sg2.contains(seq2, 3));
+    assertFalse(sg2.contains(seq2, 8));
+    sg2.setEndRes(8);
+    assertTrue(sg2.contains(seq2, 8));
+    sg2.deleteSequence(seq2, false);
+    assertFalse(sg2.contains(seq2));
+
+  }
 }