JAL-1805 test envirionment separation
[jalview.git] / test / jalview / analysis / GroupingTest.java
1 package jalview.analysis;
2
3 import jalview.datamodel.Alignment;
4 import jalview.datamodel.AlignmentI;
5 import jalview.datamodel.ColumnSelection;
6 import jalview.datamodel.Sequence;
7 import jalview.datamodel.SequenceGroup;
8 import jalview.datamodel.SequenceI;
9
10 import java.util.ArrayList;
11 import java.util.Arrays;
12
13 import org.testng.AssertJUnit;
14 import org.testng.annotations.Test;
15
16 public class GroupingTest
17 {
18   Sequence s1 = new Sequence("s1", "AAAADDDDEEEE");
19
20   Sequence s2 = new Sequence("s2", "AAAADDDDEEEE");
21
22   Sequence s3 = new Sequence("s3", "ACAADDEDEEEE");
23
24   Sequence s4 = new Sequence("s4", "AAAADDEDEEEE");
25
26   Sequence s5 = new Sequence("s5", "AAAADDEDTTEE");
27
28   SequenceGroup sg1 = new SequenceGroup(Arrays.asList(new SequenceI[]
29   { s1, s2 }), "Group1", null, false, false, false, 0, 5);
30
31   SequenceGroup sg2 = new SequenceGroup(Arrays.asList(new SequenceI[]
32   { s3, s4, s5 }), "Group2", null, false, false, false, 0, 5);
33
34   AlignmentI alignment = new Alignment(new SequenceI[]
35   { s1, s2, s3, s4, s5 });
36
37   int[] positions = new int[]
38   { 1, 7, 9 };
39
40   @Test(groups ={ "Functional" })
41   public void testMakeGroupsWithBoth()
42   {
43     ArrayList<String> str = new ArrayList<String>();
44     for (SequenceI s : alignment.getSequences())
45     {
46       StringBuilder sb = new StringBuilder();
47       for (int p : positions)
48       {
49         sb.append(s.getCharAt(p));
50       }
51       str.add(sb.toString());
52     }
53     SequenceGroup[] seqgroupsString = Grouping.makeGroupsFrom(
54             alignment.getSequencesArray(),
55             str.toArray(new String[str.size()]),
56             Arrays.asList(new SequenceGroup[]
57             { sg1, sg2 }));
58     ColumnSelection cs = new ColumnSelection();
59     for (int p : positions)
60     {
61       cs.addElement(p);
62     }
63     SequenceGroup[] seqgroupsColSel = Grouping.makeGroupsFromCols(
64             alignment.getSequencesArray(), cs,
65             Arrays.asList(new SequenceGroup[]
66             { sg1, sg2 }));
67     AssertJUnit.assertEquals(seqgroupsString.length, seqgroupsColSel.length);
68     for (int p = 0; p < seqgroupsString.length; p++)
69     {
70       AssertJUnit.assertEquals(seqgroupsString[p].getName(),
71               seqgroupsColSel[p].getName());
72       AssertJUnit.assertArrayEquals(
73               seqgroupsString[p].getSequencesInOrder(alignment),
74               seqgroupsColSel[p].getSequencesInOrder(alignment));
75       if (seqgroupsString[p].getSequences().contains(s2))
76       {
77         AssertJUnit.assertTrue(seqgroupsString[p].getSize() == 2);
78       }
79     }
80   }
81
82 }