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