2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
21 package jalview.analysis;
23 import jalview.datamodel.Alignment;
24 import jalview.datamodel.AlignmentI;
25 import jalview.datamodel.ColumnSelection;
26 import jalview.datamodel.Sequence;
27 import jalview.datamodel.SequenceGroup;
28 import jalview.datamodel.SequenceI;
29 import jalview.gui.JvOptionPane;
31 import java.util.Arrays;
33 import org.testng.AssertJUnit;
34 import org.testng.annotations.BeforeClass;
35 import org.testng.annotations.Test;
37 public class GroupingTest
39 @BeforeClass(alwaysRun = true)
40 public void setUpJvOptionPane()
42 JvOptionPane.setInteractiveMode(false);
43 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
46 Sequence s1 = new Sequence("s1", "AAAADDDDEEEE");
48 Sequence s2 = new Sequence("s2", "AAAADDDDEEEE");
50 Sequence s3 = new Sequence("s3", "ACAADDEDEEEE");
52 Sequence s4 = new Sequence("s4", "AAAADDEDEEEE");
54 Sequence s5 = new Sequence("s5", "AAAADDEDTTEE");
56 SequenceGroup sg_12 = new SequenceGroup(Arrays.asList(new SequenceI[] {
57 s1, s2 }), "Group1", null, false, false, false, 0, 5);
59 SequenceGroup sg_345 = new SequenceGroup(Arrays.asList(new SequenceI[] {
60 s3, s4, s5 }), "Group2", null, false, false, false, 0, 5);
62 AlignmentI alignment = new Alignment(
63 new SequenceI[] { s1, s2, s3, s4, s5 });
66 * test for the case where column selections are not added in
69 int[] positions = new int[] { 7, 9, 1 };
71 @Test(groups = { "Functional" })
72 public void testMakeGroupsWithBoth()
74 String[] str = new String[alignment.getHeight()];
76 for (SequenceI s : alignment.getSequences())
78 StringBuilder sb = new StringBuilder();
79 for (int p : positions)
81 sb.append(s.getCharAt(p));
83 str[seq++] = sb.toString();
85 SequenceGroup[] seqgroupsString = Grouping.makeGroupsFrom(
86 alignment.getSequencesArray(), str,
87 Arrays.asList(new SequenceGroup[] { sg_12, sg_345 }));
89 ColumnSelection cs = new ColumnSelection();
90 for (int p : positions)
94 SequenceGroup[] seqgroupsColSel = Grouping.makeGroupsFromCols(
95 alignment.getSequencesArray(), cs,
96 Arrays.asList(new SequenceGroup[] { sg_12, sg_345 }));
98 .assertEquals(seqgroupsString.length, seqgroupsColSel.length);
99 for (int p = 0; p < seqgroupsString.length; p++)
101 AssertJUnit.assertEquals(seqgroupsString[p].getName(),
102 seqgroupsColSel[p].getName());
103 AssertJUnit.assertArrayEquals(
104 seqgroupsString[p].getSequencesInOrder(alignment),
105 seqgroupsColSel[p].getSequencesInOrder(alignment));
106 if (seqgroupsString[p].getSequences().contains(s2))
108 AssertJUnit.assertTrue(seqgroupsString[p].getSize() == 2);