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.datamodel;
23 import static org.testng.Assert.assertEquals;
24 import static org.testng.AssertJUnit.assertFalse;
25 import static org.testng.AssertJUnit.assertTrue;
27 import java.util.ArrayList;
28 import java.util.List;
30 import org.testng.annotations.Test;
32 public class VisibleContigsIteratorTest
35 * Test the iterator with single visible regions
37 @Test(groups = { "Functional" })
38 public void testSimpleVisibleRegions()
40 List<int[]> hiddenColumns = null;
42 // null hidden columns
43 VisibleContigsIterator it = new VisibleContigsIterator(3, 10,
45 assertTrue(it.hasNext());
46 assertFalse(it.endsAtHidden());
47 int[] result = it.next();
48 assertEquals(3, result[0]);
49 assertEquals(9, result[1]);
50 assertFalse(it.hasNext());
51 assertFalse(it.endsAtHidden());
53 hiddenColumns = new ArrayList<>();
56 it = new VisibleContigsIterator(3, 10, hiddenColumns);
57 assertTrue(it.hasNext());
58 assertFalse(it.endsAtHidden());
60 assertEquals(3, result[0]);
61 assertEquals(9, result[1]);
62 assertFalse(it.hasNext());
63 assertFalse(it.endsAtHidden());
65 // hidden columns, but not where we are looking
66 hiddenColumns.add(new int[] { 5, 10 });
67 hiddenColumns.add(new int[] { 25, 40 });
69 it = new VisibleContigsIterator(2, 3, hiddenColumns);
70 assertTrue(it.hasNext());
71 assertFalse(it.endsAtHidden());
73 assertEquals(2, result[0]);
74 assertEquals(2, result[1]);
75 assertFalse(it.hasNext());
76 assertFalse(it.endsAtHidden());
78 it = new VisibleContigsIterator(5, 7, hiddenColumns);
79 assertFalse(it.hasNext());
80 assertFalse(it.endsAtHidden());
82 it = new VisibleContigsIterator(11, 15, hiddenColumns);
83 assertTrue(it.hasNext());
84 assertFalse(it.endsAtHidden());
86 assertEquals(11, result[0]);
87 assertEquals(14, result[1]);
88 assertFalse(it.hasNext());
89 assertFalse(it.endsAtHidden());
91 it = new VisibleContigsIterator(50, 60, hiddenColumns);
92 assertTrue(it.hasNext());
93 assertFalse(it.endsAtHidden());
95 assertEquals(50, result[0]);
96 assertEquals(59, result[1]);
97 assertFalse(it.hasNext());
98 assertFalse(it.endsAtHidden());
102 * Test the iterator with multiple visible regions
104 @Test(groups = { "Functional" })
105 public void testMultipleVisibleRegions()
107 List<int[]> hiddenColumns = new ArrayList<>();
108 hiddenColumns.add(new int[] { 5, 10 });
109 hiddenColumns.add(new int[] { 25, 40 });
111 // all hidden columns covered
112 VisibleContigsIterator it = new VisibleContigsIterator(3, 50,
114 assertTrue(it.hasNext());
115 assertFalse(it.endsAtHidden());
116 int[] result = it.next();
117 assertEquals(3, result[0]);
118 assertEquals(4, result[1]);
120 assertTrue(it.hasNext());
121 assertFalse(it.endsAtHidden());
123 assertEquals(11, result[0]);
124 assertEquals(24, result[1]);
126 assertTrue(it.hasNext());
127 assertFalse(it.endsAtHidden());
129 assertEquals(41, result[0]);
130 assertEquals(49, result[1]);
132 assertFalse(it.hasNext());
133 assertFalse(it.endsAtHidden());
137 * Test the iterator with regions which start/end at hidden region edges
139 @Test(groups = { "Functional" })
140 public void testVisibleRegionsAtHiddenEdges()
142 List<int[]> hiddenColumns = new ArrayList<>();
143 hiddenColumns.add(new int[] { 5, 10 });
144 hiddenColumns.add(new int[] { 25, 40 });
146 VisibleContigsIterator it = new VisibleContigsIterator(0, 10,
148 assertTrue(it.hasNext());
149 assertTrue(it.endsAtHidden());
150 int[] result = it.next();
151 assertEquals(0, result[0]);
152 assertEquals(4, result[1]);
153 assertFalse(it.hasNext());
154 assertTrue(it.endsAtHidden());
156 it = new VisibleContigsIterator(2, 11, hiddenColumns);
157 assertTrue(it.hasNext());
158 assertTrue(it.endsAtHidden());
160 assertEquals(2, result[0]);
161 assertEquals(4, result[1]);
162 assertFalse(it.hasNext());
163 assertTrue(it.endsAtHidden());
165 it = new VisibleContigsIterator(2, 12, hiddenColumns);
166 assertTrue(it.hasNext());
167 assertFalse(it.endsAtHidden());
169 assertEquals(2, result[0]);
170 assertEquals(4, result[1]);
171 assertTrue(it.hasNext());
172 assertFalse(it.endsAtHidden());
174 assertEquals(11, result[0]);
175 assertEquals(11, result[1]);
176 assertFalse(it.hasNext());
177 assertFalse(it.endsAtHidden());
179 it = new VisibleContigsIterator(13, 25, hiddenColumns);
180 assertTrue(it.hasNext());
181 assertFalse(it.endsAtHidden());
183 assertEquals(13, result[0]);
184 assertEquals(24, result[1]);
185 assertFalse(it.hasNext());
187 it = new VisibleContigsIterator(13, 26, hiddenColumns);
188 assertTrue(it.hasNext());
189 assertTrue(it.endsAtHidden());
191 assertEquals(13, result[0]);
192 assertEquals(24, result[1]);
193 assertFalse(it.hasNext());
195 it = new VisibleContigsIterator(13, 27, hiddenColumns);
196 assertTrue(it.hasNext());
197 assertTrue(it.endsAtHidden());
199 assertEquals(13, result[0]);
200 assertEquals(24, result[1]);
201 assertFalse(it.hasNext());
203 it = new VisibleContigsIterator(13, 41, hiddenColumns);
204 assertTrue(it.hasNext());
205 assertTrue(it.endsAtHidden());
207 assertEquals(13, result[0]);
208 assertEquals(24, result[1]);
209 assertFalse(it.hasNext());
211 it = new VisibleContigsIterator(13, 42, hiddenColumns);
212 assertTrue(it.hasNext());
213 assertFalse(it.endsAtHidden());
215 assertEquals(13, result[0]);
216 assertEquals(24, result[1]);
217 assertTrue(it.hasNext());
219 assertEquals(41, result[0]);
220 assertEquals(41, result[1]);