1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
|
21 |
|
package jalview.io; |
22 |
|
|
23 |
|
import static org.testng.AssertJUnit.assertNotNull; |
24 |
|
|
25 |
|
import jalview.api.AlignExportSettingsI; |
26 |
|
import jalview.datamodel.AlignExportSettingsAdapter; |
27 |
|
import jalview.datamodel.Alignment; |
28 |
|
import jalview.datamodel.AlignmentAnnotation; |
29 |
|
import jalview.datamodel.AlignmentI; |
30 |
|
import jalview.datamodel.Annotation; |
31 |
|
import jalview.datamodel.HiddenColumns; |
32 |
|
import jalview.datamodel.Sequence; |
33 |
|
import jalview.datamodel.SequenceFeature; |
34 |
|
import jalview.datamodel.SequenceGroup; |
35 |
|
import jalview.datamodel.SequenceI; |
36 |
|
import jalview.datamodel.features.SequenceFeatures; |
37 |
|
import jalview.gui.AlignFrame; |
38 |
|
import jalview.gui.JvOptionPane; |
39 |
|
import jalview.json.binding.biojson.v1.ColourSchemeMapper; |
40 |
|
import jalview.schemes.ColourSchemeI; |
41 |
|
import jalview.schemes.ResidueColourScheme; |
42 |
|
|
43 |
|
import java.io.IOException; |
44 |
|
import java.util.ArrayList; |
45 |
|
import java.util.HashMap; |
46 |
|
import java.util.Iterator; |
47 |
|
import java.util.List; |
48 |
|
import java.util.Map; |
49 |
|
|
50 |
|
import org.testng.Assert; |
51 |
|
import org.testng.AssertJUnit; |
52 |
|
import org.testng.annotations.AfterTest; |
53 |
|
import org.testng.annotations.BeforeClass; |
54 |
|
import org.testng.annotations.BeforeMethod; |
55 |
|
import org.testng.annotations.BeforeTest; |
56 |
|
import org.testng.annotations.Test; |
57 |
|
|
|
|
| 83.3% |
Uncovered Elements: 46 (276) |
Complexity: 57 |
Complexity Density: 0.25 |
|
58 |
|
public class JSONFileTest |
59 |
|
{ |
60 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
61 |
1 |
@BeforeClass(alwaysRun = true)... |
62 |
|
public void setUpJvOptionPane() |
63 |
|
{ |
64 |
1 |
JvOptionPane.setInteractiveMode(false); |
65 |
1 |
JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); |
66 |
|
} |
67 |
|
|
68 |
|
private int TEST_SEQ_HEIGHT = 0; |
69 |
|
|
70 |
|
private int TEST_GRP_HEIGHT = 0; |
71 |
|
|
72 |
|
private int TEST_ANOT_HEIGHT = 0; |
73 |
|
|
74 |
|
private int TEST_CS_HEIGHT = 0; |
75 |
|
|
76 |
|
private String TEST_JSON_FILE = "examples/example.json"; |
77 |
|
|
78 |
|
private Alignment alignment; |
79 |
|
|
80 |
|
private HashMap<String, SequenceI> expectedSeqs = new HashMap<>(); |
81 |
|
|
82 |
|
private HashMap<String, AlignmentAnnotation> expectedAnnots = new HashMap<>(); |
83 |
|
|
84 |
|
private HashMap<String, SequenceGroup> expectedGrps = new HashMap<>(); |
85 |
|
|
86 |
|
private HiddenColumns expectedColSel = new HiddenColumns(); |
87 |
|
|
88 |
|
private SequenceI[] expectedHiddenSeqs = new SequenceI[1]; |
89 |
|
|
90 |
|
private AlignmentI testAlignment; |
91 |
|
|
92 |
|
private int passedCount; |
93 |
|
|
94 |
|
private JSONFile testJsonFile; |
95 |
|
|
96 |
|
private JSONFile jf; |
97 |
|
|
98 |
|
private AlignExportSettingsI exportSettings; |
99 |
|
|
|
|
| 98.9% |
Uncovered Elements: 1 (92) |
Complexity: 2 |
Complexity Density: 0.02 |
|
100 |
4 |
@BeforeTest(alwaysRun = true)... |
101 |
|
public void setup() throws Exception |
102 |
|
{ |
103 |
|
|
104 |
|
|
105 |
|
|
106 |
|
|
107 |
|
|
108 |
4 |
Sequence[] seqs = new Sequence[5]; |
109 |
4 |
seqs[0] = new Sequence("FER_CAPAN", |
110 |
|
"SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALF", 3, 34); |
111 |
4 |
seqs[1] = new Sequence("FER1_SOLLC", |
112 |
|
"SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALF", 3, 34); |
113 |
4 |
seqs[2] = new Sequence("Q93XJ9_SOLTU", |
114 |
|
"SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALF", 3, 34); |
115 |
4 |
seqs[3] = new Sequence("FER1_PEA", |
116 |
|
"ALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFL", 6, 37); |
117 |
4 |
seqs[4] = new Sequence("Q7XA98_TRIPR", |
118 |
|
"ALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGF", 6, 39); |
119 |
|
|
120 |
4 |
SequenceI hiddenSeq = new Sequence("FER_TOCH", |
121 |
|
"FILGTMISKSFLFRKPAVTSL-KAISNVGE--ALF", 3, 34); |
122 |
4 |
expectedHiddenSeqs[0] = hiddenSeq; |
123 |
|
|
124 |
|
|
125 |
4 |
SequenceFeature seqFeature2 = new SequenceFeature("feature_x", |
126 |
|
"theDesc", 6, 15, "Jalview"); |
127 |
4 |
SequenceFeature seqFeature3 = new SequenceFeature("feature_x", |
128 |
|
"theDesc", 9, 18, "Jalview"); |
129 |
4 |
SequenceFeature seqFeature4 = new SequenceFeature("feature_x", |
130 |
|
"theDesc", 9, 18, "Jalview"); |
131 |
|
|
132 |
4 |
SequenceFeature seqFeature5 = new SequenceFeature("Domain", |
133 |
|
"My description", 0, 0, "Pfam"); |
134 |
4 |
seqs[2].addSequenceFeature(seqFeature2); |
135 |
4 |
seqs[3].addSequenceFeature(seqFeature3); |
136 |
4 |
seqs[4].addSequenceFeature(seqFeature4); |
137 |
4 |
seqs[2].addSequenceFeature(seqFeature5); |
138 |
|
|
139 |
4 |
for (Sequence seq : seqs) |
140 |
|
{ |
141 |
20 |
seq.createDatasetSequence(); |
142 |
20 |
expectedSeqs.put(seq.getName(), seq); |
143 |
|
} |
144 |
|
|
145 |
|
|
146 |
4 |
List<SequenceI> grpSeqs = new ArrayList<>(); |
147 |
4 |
grpSeqs.add(seqs[1]); |
148 |
4 |
grpSeqs.add(seqs[2]); |
149 |
4 |
grpSeqs.add(seqs[3]); |
150 |
4 |
grpSeqs.add(seqs[4]); |
151 |
4 |
SequenceGroup seqGrp = new SequenceGroup(grpSeqs, "JGroup:1883305585", |
152 |
|
null, true, true, false, 21, 29); |
153 |
4 |
ColourSchemeI scheme = ColourSchemeMapper |
154 |
|
.getJalviewColourScheme("zappo", seqGrp); |
155 |
4 |
seqGrp.cs.setColourScheme(scheme); |
156 |
4 |
seqGrp.setShowNonconserved(false); |
157 |
4 |
seqGrp.setDescription(null); |
158 |
|
|
159 |
4 |
expectedGrps.put(seqGrp.getName(), seqGrp); |
160 |
|
|
161 |
|
|
162 |
4 |
Annotation[] annot = new Annotation[35]; |
163 |
4 |
annot[0] = new Annotation("", "", '\u0000', 0); |
164 |
4 |
annot[1] = new Annotation("", "", '\u0000', 0); |
165 |
4 |
annot[2] = new Annotation("α", "", 'H', 0); |
166 |
4 |
annot[3] = new Annotation("α", "", 'H', 0); |
167 |
4 |
annot[4] = new Annotation("α", "", 'H', 0); |
168 |
4 |
annot[5] = new Annotation("", "", '\u0000', 0); |
169 |
4 |
annot[6] = new Annotation("", "", '\u0000', 0); |
170 |
4 |
annot[7] = new Annotation("", "", '\u0000', 0); |
171 |
4 |
annot[8] = new Annotation("β", "", 'E', 0); |
172 |
4 |
annot[9] = new Annotation("β", "", 'E', 0); |
173 |
4 |
annot[10] = new Annotation("β", "", 'E', 0); |
174 |
4 |
annot[11] = new Annotation("β", "", 'E', 0); |
175 |
4 |
annot[12] = new Annotation("β", "", 'E', 0); |
176 |
4 |
annot[13] = new Annotation("β", "", 'E', 0); |
177 |
4 |
annot[14] = new Annotation("β", "", 'E', 0); |
178 |
4 |
annot[15] = new Annotation("β", "", 'E', 0); |
179 |
4 |
annot[16] = new Annotation("", "", '\u0000', 0); |
180 |
4 |
annot[17] = new Annotation("", "", '\u0000', 0); |
181 |
4 |
annot[18] = new Annotation("", "", '\u0000', 0); |
182 |
4 |
annot[19] = new Annotation("", "", '\u0000', 0); |
183 |
4 |
annot[20] = new Annotation("", "", '\u0000', 0); |
184 |
4 |
annot[21] = new Annotation("", "", '\u0000', 0); |
185 |
4 |
annot[22] = new Annotation("", "", '\u0000', 0); |
186 |
4 |
annot[23] = new Annotation("", "", '\u0000', 0); |
187 |
4 |
annot[24] = new Annotation("", "", '\u0000', 0); |
188 |
4 |
annot[25] = new Annotation("", "", '\u0000', 0); |
189 |
4 |
annot[26] = new Annotation("α", "", 'H', 0); |
190 |
4 |
annot[27] = new Annotation("α", "", 'H', 0); |
191 |
4 |
annot[28] = new Annotation("α", "", 'H', 0); |
192 |
4 |
annot[29] = new Annotation("α", "", 'H', 0); |
193 |
4 |
annot[30] = new Annotation("α", "", 'H', 0); |
194 |
4 |
annot[31] = new Annotation("", "", '\u0000', 0); |
195 |
4 |
annot[32] = new Annotation("", "", '\u0000', 0); |
196 |
4 |
annot[33] = new Annotation("", "", '\u0000', 0); |
197 |
4 |
annot[34] = new Annotation("", "", '\u0000', 0); |
198 |
|
|
199 |
4 |
AlignmentAnnotation alignAnnot = new AlignmentAnnotation( |
200 |
|
"Secondary Structure", "New description", annot); |
201 |
4 |
expectedAnnots.put(alignAnnot.label, alignAnnot); |
202 |
|
|
203 |
4 |
expectedColSel.hideColumns(32, 33); |
204 |
4 |
expectedColSel.hideColumns(34, 34); |
205 |
|
|
206 |
4 |
TEST_SEQ_HEIGHT = expectedSeqs.size(); |
207 |
4 |
TEST_GRP_HEIGHT = expectedGrps.size(); |
208 |
4 |
TEST_ANOT_HEIGHT = expectedAnnots.size(); |
209 |
4 |
TEST_CS_HEIGHT = expectedColSel.getNumberOfRegions(); |
210 |
|
|
211 |
4 |
exportSettings = new AlignExportSettingsAdapter(true); |
212 |
|
|
213 |
4 |
AppletFormatAdapter formatAdapter = new AppletFormatAdapter(); |
214 |
4 |
try |
215 |
|
{ |
216 |
4 |
alignment = (Alignment) formatAdapter.readFile(TEST_JSON_FILE, |
217 |
|
DataSourceType.FILE, FileFormat.Json); |
218 |
4 |
jf = (JSONFile) formatAdapter.getAlignFile(); |
219 |
|
|
220 |
4 |
AlignFrame af = new AlignFrame(alignment, jf.getHiddenSequences(), |
221 |
|
jf.getHiddenColumns(), AlignFrame.DEFAULT_WIDTH, |
222 |
|
AlignFrame.DEFAULT_HEIGHT); |
223 |
4 |
af.getViewport().setShowSequenceFeatures(jf.isShowSeqFeatures()); |
224 |
4 |
String colourSchemeName = jf.getGlobalColourScheme(); |
225 |
4 |
ColourSchemeI cs = ColourSchemeMapper |
226 |
|
.getJalviewColourScheme(colourSchemeName, alignment); |
227 |
4 |
af.changeColour(cs); |
228 |
4 |
af.getViewport().setFeaturesDisplayed(jf.getDisplayedFeatures()); |
229 |
|
|
230 |
4 |
formatAdapter = new AppletFormatAdapter(af.alignPanel, |
231 |
|
exportSettings); |
232 |
4 |
String jsonOutput = formatAdapter.formatSequences(FileFormat.Json, |
233 |
|
af.alignPanel.getAlignment(), false); |
234 |
|
|
235 |
4 |
formatAdapter = new AppletFormatAdapter(); |
236 |
4 |
testAlignment = formatAdapter.readFile(jsonOutput, |
237 |
|
DataSourceType.PASTE, FileFormat.Json); |
238 |
4 |
testJsonFile = (JSONFile) formatAdapter.getAlignFile(); |
239 |
4 |
System.out.println(jsonOutput); |
240 |
|
} catch (IOException e) |
241 |
|
{ |
242 |
0 |
e.printStackTrace(); |
243 |
|
} |
244 |
|
|
245 |
|
} |
246 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
247 |
10 |
@BeforeMethod(alwaysRun = true)... |
248 |
|
public void methodSetup() |
249 |
|
{ |
250 |
10 |
passedCount = 0; |
251 |
|
} |
252 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (7) |
Complexity: 1 |
Complexity Density: 0.14 |
|
253 |
4 |
@AfterTest(alwaysRun = true)... |
254 |
|
public void tearDown() throws Exception |
255 |
|
{ |
256 |
4 |
testJsonFile = null; |
257 |
4 |
alignment = null; |
258 |
4 |
expectedSeqs = null; |
259 |
4 |
expectedAnnots = null; |
260 |
4 |
expectedGrps = null; |
261 |
4 |
testAlignment = null; |
262 |
4 |
jf = null; |
263 |
|
} |
264 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
265 |
1 |
@Test(groups = { "Functional" })... |
266 |
|
public void roundTripTest() |
267 |
|
{ |
268 |
1 |
assertNotNull("JSON roundtrip test failed!", testJsonFile); |
269 |
|
} |
270 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (7) |
Complexity: 1 |
Complexity Density: 0.14 |
1PASS
|
|
271 |
1 |
@Test(groups = { "Functional" })... |
272 |
|
public void testSeqParsed() |
273 |
|
{ |
274 |
1 |
assertNotNull("Couldn't read supplied alignment data.", testAlignment); |
275 |
1 |
Assert.assertNotNull(testAlignment.getSequences()); |
276 |
1 |
for (SequenceI seq : testAlignment.getSequences()) |
277 |
|
{ |
278 |
5 |
SequenceI expectedSeq = expectedSeqs.get(seq.getName()); |
279 |
5 |
AssertJUnit.assertTrue( |
280 |
|
"Failed Sequence Test for >>> " + seq.getName(), |
281 |
|
isSeqMatched(expectedSeq, seq)); |
282 |
5 |
passedCount++; |
283 |
|
} |
284 |
1 |
AssertJUnit.assertEquals("Some Sequences did not pass the test", |
285 |
|
TEST_SEQ_HEIGHT, passedCount); |
286 |
|
} |
287 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (7) |
Complexity: 1 |
Complexity Density: 0.14 |
1PASS
|
|
288 |
1 |
@Test(groups = { "Functional" })... |
289 |
|
public void hiddenColsTest() |
290 |
|
{ |
291 |
1 |
HiddenColumns cs = testJsonFile.getHiddenColumns(); |
292 |
1 |
Assert.assertNotNull(cs); |
293 |
|
|
294 |
1 |
Iterator<int[]> it = cs.iterator(); |
295 |
1 |
Iterator<int[]> colselit = expectedColSel.iterator(); |
296 |
1 |
Assert.assertTrue(it.hasNext()); |
297 |
1 |
Assert.assertEquals(cs.getNumberOfRegions(), TEST_CS_HEIGHT); |
298 |
1 |
Assert.assertEquals(it.next(), colselit.next(), |
299 |
|
"Mismatched hidden columns!"); |
300 |
|
} |
301 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
1PASS
|
|
302 |
1 |
@Test(groups = { "Functional" })... |
303 |
|
public void hiddenSeqsTest() |
304 |
|
{ |
305 |
1 |
Assert.assertNotNull(testJsonFile.getHiddenSequences(), |
306 |
|
"Hidden sequence Expected but found Null"); |
307 |
1 |
Assert.assertEquals(jf.getHiddenSequences().length, 1, |
308 |
|
"Hidden sequence"); |
309 |
|
} |
310 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
1PASS
|
|
311 |
1 |
@Test(groups = { "Functional" })... |
312 |
|
public void colorSchemeTest() |
313 |
|
{ |
314 |
1 |
Assert.assertNotNull(testJsonFile.getGlobalColourScheme(), |
315 |
|
"Colourscheme is null, parsing failed!"); |
316 |
1 |
Assert.assertEquals(testJsonFile.getGlobalColourScheme(), "Zappo", |
317 |
|
"Zappo colour scheme expected!"); |
318 |
|
} |
319 |
|
|
320 |
|
|
321 |
|
|
322 |
|
|
323 |
|
|
|
|
| 94.7% |
Uncovered Elements: 1 (19) |
Complexity: 2 |
Complexity Density: 0.11 |
1PASS
|
|
324 |
1 |
@Test(groups = { "Functional" })... |
325 |
|
public void testBioJSONRoundTripWithColourSchemeNone() |
326 |
|
{ |
327 |
1 |
AppletFormatAdapter formatAdapter = new AppletFormatAdapter(); |
328 |
|
|
329 |
1 |
Alignment _alignment; |
330 |
1 |
try |
331 |
|
{ |
332 |
|
|
333 |
1 |
_alignment = (Alignment) formatAdapter.readFile(TEST_JSON_FILE, |
334 |
|
DataSourceType.FILE, FileFormat.Json); |
335 |
1 |
JSONFile bioJsonFile = (JSONFile) formatAdapter.getAlignFile(); |
336 |
1 |
AlignFrame alignFrame = new AlignFrame(_alignment, |
337 |
|
bioJsonFile.getHiddenSequences(), |
338 |
|
bioJsonFile.getHiddenColumns(), AlignFrame.DEFAULT_WIDTH, |
339 |
|
AlignFrame.DEFAULT_HEIGHT); |
340 |
|
|
341 |
|
|
342 |
|
|
343 |
|
|
344 |
|
|
345 |
1 |
SequenceGroup sg = new SequenceGroup(); |
346 |
1 |
sg.addSequence(_alignment.getSequenceAt(0), false); |
347 |
1 |
sg.setColourScheme(null); |
348 |
1 |
ColourSchemeI cs = ColourSchemeMapper |
349 |
|
.getJalviewColourScheme(ResidueColourScheme.NONE, _alignment); |
350 |
1 |
alignFrame.changeColour(cs); |
351 |
1 |
alignFrame.getViewport() |
352 |
|
.setFeaturesDisplayed(bioJsonFile.getDisplayedFeatures()); |
353 |
1 |
formatAdapter = new AppletFormatAdapter(alignFrame.alignPanel, |
354 |
|
exportSettings); |
355 |
|
|
356 |
1 |
String jsonOutput = formatAdapter.formatSequences(FileFormat.Json, |
357 |
|
alignFrame.alignPanel.getAlignment(), false); |
358 |
|
|
359 |
1 |
formatAdapter = new AppletFormatAdapter(); |
360 |
1 |
formatAdapter.readFile(jsonOutput, DataSourceType.PASTE, |
361 |
|
FileFormat.Json); |
362 |
|
|
363 |
1 |
JSONFile _bioJsonFile = (JSONFile) formatAdapter.getAlignFile(); |
364 |
1 |
Assert.assertEquals(_bioJsonFile.getGlobalColourScheme(), |
365 |
|
ResidueColourScheme.NONE); |
366 |
|
} catch (IOException e) |
367 |
|
{ |
368 |
0 |
e.printStackTrace(); |
369 |
|
} |
370 |
|
} |
371 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
1PASS
|
|
372 |
1 |
@Test(groups = { "Functional" })... |
373 |
|
public void isShowSeqFeaturesSet() |
374 |
|
{ |
375 |
1 |
Assert.assertTrue(testJsonFile.isShowSeqFeatures(), |
376 |
|
"Sequence feature isDisplayed setting expected to be true"); |
377 |
|
} |
378 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 1 |
Complexity Density: 0.17 |
1PASS
|
|
379 |
1 |
@Test(groups = { "Functional" })... |
380 |
|
public void testGrpParsed() |
381 |
|
{ |
382 |
1 |
Assert.assertNotNull(testAlignment.getGroups()); |
383 |
1 |
for (SequenceGroup seqGrp : testAlignment.getGroups()) |
384 |
|
{ |
385 |
1 |
SequenceGroup expectedGrp = expectedGrps.get(seqGrp.getName()); |
386 |
1 |
AssertJUnit.assertTrue( |
387 |
|
"Failed SequenceGroup Test for >>> " + seqGrp.getName(), |
388 |
|
isGroupMatched(expectedGrp, seqGrp)); |
389 |
1 |
passedCount++; |
390 |
|
} |
391 |
1 |
AssertJUnit.assertEquals("Some SequenceGroups did not pass the test", |
392 |
|
TEST_GRP_HEIGHT, passedCount); |
393 |
|
} |
394 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 1 |
Complexity Density: 0.17 |
1PASS
|
|
395 |
1 |
@Test(groups = { "Functional" })... |
396 |
|
public void testAnnotationParsed() |
397 |
|
{ |
398 |
1 |
Assert.assertNotNull(testAlignment.getAlignmentAnnotation()); |
399 |
1 |
for (AlignmentAnnotation annot : testAlignment.getAlignmentAnnotation()) |
400 |
|
{ |
401 |
1 |
AlignmentAnnotation expectedAnnot = expectedAnnots.get(annot.label); |
402 |
1 |
AssertJUnit.assertTrue( |
403 |
|
"Failed AlignmentAnnotation Test for >>> " + annot.label, |
404 |
|
isAnnotationMatched(expectedAnnot, annot)); |
405 |
1 |
passedCount++; |
406 |
|
} |
407 |
1 |
AssertJUnit.assertEquals("Some Sequences did not pass the test", |
408 |
|
TEST_ANOT_HEIGHT, passedCount); |
409 |
|
} |
410 |
|
|
|
|
| 71.4% |
Uncovered Elements: 4 (14) |
Complexity: 8 |
Complexity Density: 1 |
|
411 |
1 |
public boolean isAnnotationMatched(AlignmentAnnotation eAnnot,... |
412 |
|
AlignmentAnnotation annot) |
413 |
|
{ |
414 |
1 |
if (!eAnnot.label.equals(annot.label) |
415 |
|
|| !eAnnot.description.equals(annot.description) |
416 |
|
|| eAnnot.annotations.length != annot.annotations.length) |
417 |
|
{ |
418 |
0 |
return false; |
419 |
|
} |
420 |
|
|
421 |
36 |
for (int x = 0; x < annot.annotations.length; x++) |
422 |
|
{ |
423 |
35 |
Annotation y = annot.annotations[x]; |
424 |
35 |
Annotation z = annot.annotations[x]; |
425 |
|
|
426 |
35 |
if (!y.displayCharacter.equals(z.displayCharacter) |
427 |
|
|| y.value != z.value |
428 |
|
|| y.secondaryStructure != z.secondaryStructure) |
429 |
|
{ |
430 |
0 |
return false; |
431 |
|
} |
432 |
|
} |
433 |
1 |
return true; |
434 |
|
} |
435 |
|
|
|
|
| 66.7% |
Uncovered Elements: 2 (6) |
Complexity: 6 |
Complexity Density: 1.5 |
|
436 |
5 |
boolean isSeqMatched(SequenceI expectedSeq, SequenceI actualSeq)... |
437 |
|
{ |
438 |
5 |
System.out.println("Testing >>> " + actualSeq.getName()); |
439 |
|
|
440 |
5 |
if (expectedSeq.getName().equals(actualSeq.getName()) |
441 |
|
&& expectedSeq.getSequenceAsString() |
442 |
|
.equals(actualSeq.getSequenceAsString()) |
443 |
|
&& expectedSeq.getStart() == actualSeq.getStart() |
444 |
|
&& expectedSeq.getEnd() == actualSeq.getEnd() |
445 |
|
&& featuresMatched(expectedSeq, actualSeq)) |
446 |
|
{ |
447 |
5 |
return true; |
448 |
|
} |
449 |
0 |
return false; |
450 |
|
} |
451 |
|
|
|
|
| 86.7% |
Uncovered Elements: 2 (15) |
Complexity: 9 |
Complexity Density: 0.69 |
|
452 |
2 |
public boolean isGroupMatched(SequenceGroup expectedGrp,... |
453 |
|
SequenceGroup actualGrp) |
454 |
|
{ |
455 |
|
|
456 |
2 |
System.out.println("Testing >>> " + actualGrp.getName()); |
457 |
2 |
System.out.println(expectedGrp.getName() + " | " + actualGrp.getName()); |
458 |
2 |
System.out.println(expectedGrp.getColourText() + " | " |
459 |
|
+ actualGrp.getColourText()); |
460 |
2 |
System.out.println(expectedGrp.getDisplayBoxes() + " | " |
461 |
|
+ actualGrp.getDisplayBoxes()); |
462 |
2 |
System.out.println(expectedGrp.getIgnoreGapsConsensus() + " | " |
463 |
|
+ actualGrp.getIgnoreGapsConsensus()); |
464 |
2 |
System.out.println(expectedGrp.getSequences().size() + " | " |
465 |
|
+ actualGrp.getSequences().size()); |
466 |
2 |
System.out.println( |
467 |
|
expectedGrp.getStartRes() + " | " + actualGrp.getStartRes()); |
468 |
2 |
System.out.println( |
469 |
|
expectedGrp.getEndRes() + " | " + actualGrp.getEndRes()); |
470 |
2 |
System.out.println(expectedGrp.cs.getColourScheme() + " | " |
471 |
|
+ actualGrp.cs.getColourScheme()); |
472 |
|
|
473 |
2 |
boolean colourSchemeMatches = (expectedGrp.cs.getColourScheme() == null |
474 |
|
&& actualGrp.cs.getColourScheme() == null) |
475 |
|
|| expectedGrp.cs.getColourScheme().getClass() |
476 |
|
.equals(actualGrp.cs.getColourScheme().getClass()); |
477 |
2 |
if (expectedGrp.getName().equals(actualGrp.getName()) |
478 |
|
&& expectedGrp.getColourText() == actualGrp.getColourText() |
479 |
|
&& expectedGrp.getDisplayBoxes() == actualGrp.getDisplayBoxes() |
480 |
|
&& expectedGrp.getIgnoreGapsConsensus() == actualGrp |
481 |
|
.getIgnoreGapsConsensus() |
482 |
|
&& colourSchemeMatches |
483 |
|
&& expectedGrp.getSequences().size() == actualGrp.getSequences() |
484 |
|
.size() |
485 |
|
&& expectedGrp.getStartRes() == actualGrp.getStartRes() |
486 |
|
&& expectedGrp.getEndRes() == actualGrp.getEndRes()) |
487 |
|
{ |
488 |
2 |
return true; |
489 |
|
} |
490 |
0 |
return false; |
491 |
|
} |
492 |
|
|
|
|
| 64% |
Uncovered Elements: 9 (25) |
Complexity: 6 |
Complexity Density: 0.32 |
|
493 |
5 |
private boolean featuresMatched(SequenceI seq1, SequenceI seq2)... |
494 |
|
{ |
495 |
5 |
try |
496 |
|
{ |
497 |
5 |
if (seq1 == null && seq2 == null) |
498 |
|
{ |
499 |
0 |
return true; |
500 |
|
} |
501 |
|
|
502 |
5 |
List<SequenceFeature> inFeature = seq1.getFeatures().getAllFeatures(); |
503 |
5 |
List<SequenceFeature> outFeature = seq2.getFeatures() |
504 |
|
.getAllFeatures(); |
505 |
|
|
506 |
5 |
if (inFeature.size() != outFeature.size()) |
507 |
|
{ |
508 |
0 |
System.err.println("Feature count in: " + inFeature.size() |
509 |
|
+ ", out: " + outFeature.size()); |
510 |
0 |
return false; |
511 |
|
} |
512 |
|
|
513 |
5 |
SequenceFeatures.sortFeatures(inFeature, true); |
514 |
5 |
SequenceFeatures.sortFeatures(outFeature, true); |
515 |
5 |
int i = 0; |
516 |
5 |
for (SequenceFeature in : inFeature) |
517 |
|
{ |
518 |
4 |
SequenceFeature out = outFeature.get(i); |
519 |
|
|
520 |
|
|
521 |
|
|
522 |
|
|
523 |
|
|
524 |
4 |
if (!in.equals(out)) |
525 |
|
{ |
526 |
0 |
System.err.println( |
527 |
|
"Mismatch of " + in.toString() + " " + out.toString()); |
528 |
0 |
return false; |
529 |
|
} |
530 |
|
|
531 |
|
|
532 |
|
|
533 |
|
|
534 |
|
|
535 |
|
|
536 |
|
|
537 |
|
|
538 |
|
|
539 |
|
|
540 |
|
|
541 |
|
|
542 |
|
|
543 |
|
|
544 |
|
|
545 |
|
|
546 |
4 |
i++; |
547 |
|
} |
548 |
|
} catch (Exception e) |
549 |
|
{ |
550 |
0 |
e.printStackTrace(); |
551 |
|
} |
552 |
|
|
553 |
5 |
return true; |
554 |
|
} |
555 |
|
|
|
|
| 0% |
Uncovered Elements: 26 (26) |
Complexity: 12 |
Complexity Density: 0.75 |
|
556 |
0 |
boolean mapsMatch(Map<String, Object> m1, Map<String, Object> m2)... |
557 |
|
{ |
558 |
0 |
if (m1 == null || m2 == null) |
559 |
|
{ |
560 |
0 |
if (m1 != null || m2 != null) |
561 |
|
{ |
562 |
0 |
System.err.println( |
563 |
|
"only one SequenceFeature.otherDetails is not null"); |
564 |
0 |
return false; |
565 |
|
} |
566 |
|
else |
567 |
|
{ |
568 |
0 |
return true; |
569 |
|
} |
570 |
|
} |
571 |
0 |
if (m1.size() != m2.size()) |
572 |
|
{ |
573 |
0 |
System.err.println("otherDetails map different sizes"); |
574 |
0 |
return false; |
575 |
|
} |
576 |
0 |
for (String key : m1.keySet()) |
577 |
|
{ |
578 |
0 |
if (!m2.containsKey(key)) |
579 |
|
{ |
580 |
0 |
System.err.println(key + " in only one otherDetails"); |
581 |
0 |
return false; |
582 |
|
} |
583 |
0 |
if (m1.get(key) == null && m2.get(key) != null |
584 |
|
|| m1.get(key) != null && m2.get(key) == null |
585 |
|
|| !m1.get(key).equals(m2.get(key))) |
586 |
|
{ |
587 |
0 |
System.err.println(key + " values in otherDetails don't match"); |
588 |
0 |
return false; |
589 |
|
} |
590 |
|
} |
591 |
0 |
return true; |
592 |
|
} |
593 |
|
|
594 |
|
|
595 |
|
|
596 |
|
|
597 |
|
@throws |
598 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (18) |
Complexity: 1 |
Complexity Density: 0.06 |
1PASS
|
|
599 |
1 |
@Test(groups = { "Functional" })... |
600 |
|
public void testGrpParsed_colourNone() throws IOException |
601 |
|
{ |
602 |
1 |
AlignmentI copy = new Alignment(testAlignment); |
603 |
1 |
SequenceGroup sg = testAlignment.getGroups().get(0); |
604 |
1 |
SequenceGroup copySg = new SequenceGroup(new ArrayList<SequenceI>(), |
605 |
|
sg.getName(), null, sg.getDisplayBoxes(), sg.getDisplayText(), |
606 |
|
sg.getColourText(), sg.getStartRes(), sg.getEndRes()); |
607 |
1 |
for (SequenceI seq : sg.getSequences()) |
608 |
|
{ |
609 |
4 |
int seqIndex = testAlignment.findIndex(seq); |
610 |
4 |
copySg.addSequence(copy.getSequenceAt(seqIndex), false); |
611 |
|
} |
612 |
1 |
copy.addGroup(copySg); |
613 |
|
|
614 |
1 |
AlignFrame af = new AlignFrame(copy, copy.getWidth(), copy.getHeight()); |
615 |
1 |
AppletFormatAdapter formatAdapter = new AppletFormatAdapter( |
616 |
|
af.alignPanel); |
617 |
1 |
String jsonOutput = formatAdapter.formatSequences(FileFormat.Json, copy, |
618 |
|
false); |
619 |
1 |
formatAdapter = new AppletFormatAdapter(); |
620 |
1 |
AlignmentI newAlignment = formatAdapter.readFile(jsonOutput, |
621 |
|
DataSourceType.PASTE, FileFormat.Json); |
622 |
|
|
623 |
1 |
Assert.assertNotNull(newAlignment.getGroups()); |
624 |
1 |
for (SequenceGroup seqGrp : newAlignment.getGroups()) |
625 |
|
{ |
626 |
1 |
SequenceGroup expectedGrp = copySg; |
627 |
1 |
AssertJUnit.assertTrue( |
628 |
|
"Failed SequenceGroup Test for >>> " + seqGrp.getName(), |
629 |
|
isGroupMatched(expectedGrp, seqGrp)); |
630 |
1 |
passedCount++; |
631 |
|
} |
632 |
1 |
AssertJUnit.assertEquals("Some SequenceGroups did not pass the test", |
633 |
|
TEST_GRP_HEIGHT, passedCount); |
634 |
|
} |
635 |
|
} |