libStatGen Software  1
FastQFileTest.cpp
1 /*
2  * Copyright (C) 2010 Regents of the University of Michigan
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #include "FastQFile.h"
19 #include <assert.h>
20 
21 const String FIRST_SEQID_LINE = "@Valid with comment";
22 const String FIRST_SEQID = "Valid";
23 const String FIRST_RAW_SEQ = "ACTGNactng.0123";
24 const String FIRST_PLUS_LINE = "+";
25 const String FIRST_QUALITY = "!#\"$%&'()*+,-./";
26 const String SECOND_SEQID_LINE = "@Valid1 with comment";
27 const String SECOND_SEQID = "Valid1";
28 const String SECOND_RAW_SEQ = "ACTGACTNactngaac";
29 const String SECOND_PLUS_LINE = "+";
30 const String SECOND_QUALITY = "0123456789:;<=>@";
31 const String THIRD_SEQID_LINE = "@Valid2";
32 const String THIRD_SEQID = "Valid2";
33 const String THIRD_RAW_SEQ = "A123.0321.011";
34 const String THIRD_PLUS_LINE = "+";
35 const String THIRD_QUALITY = "?@ABCDEFGHIJK";
36 const String FOURTH_SEQID_LINE = "@Valid3";
37 const String FOURTH_SEQID = "Valid3";
38 const String FOURTH_RAW_SEQ = "ACTGACTNactngACTGACTNactng";
39 const String FOURTH_PLUS_LINE = "+";
40 const String FOURTH_QUALITY = "LMNOPQRSTUVWXYZ[\\]^_'abcde";
41 const String FIFTH_SEQID_LINE = "@Valid4";
42 const String FIFTH_SEQID = "Valid4";
43 const String FIFTH_RAW_SEQ = "ACTGACTNactngACTGACTNactng";
44 const String FIFTH_PLUS_LINE = "+";
45 const String FIFTH_QUALITY = "fghijklmnopqrstuvwxyz{|}~~";
46 const String SIXTH_SEQID_LINE = "@";
47 const String SIXTH_SEQID = "";
48 const String SIXTH_RAW_SEQ = "ACTGACTNactng";
49 const String SIXTH_PLUS_LINE = "+";
50 const String SIXTH_QUALITY = "?@ABCDEFGHIJK";
51 const String SEVENTH_SEQID_LINE = "Line no start with @";
52 const String SEVENTH_SEQID = "";
53 const String SEVENTH_RAW_SEQ = "ACTGACTNactng";
54 const String SEVENTH_PLUS_LINE = "+";
55 const String SEVENTH_QUALITY = "LMNOPQRSTUVWX";
56 const String EIGHTH_SEQID_LINE = "@ a";
57 const String EIGHTH_SEQID = "";
58 const String EIGHTH_RAW_SEQ = "ACTGACTNactng";
59 const String EIGHTH_PLUS_LINE = "+";
60 const String EIGHTH_QUALITY = "YZ[\\]^_'abcde";
61 const String NINTH_SEQID_LINE = "@ ";
62 const String NINTH_SEQID = "";
63 const String NINTH_RAW_SEQ = "ACTGACTNactng";
64 const String NINTH_PLUS_LINE = "+";
65 const String NINTH_QUALITY = "fghijklmnopqr";
66 const String TENTH_SEQID_LINE = "@Valid";
67 const String TENTH_SEQID = "Valid";
68 const String TENTH_RAW_SEQ = "ACTGNactng";
69 const String TENTH_PLUS_LINE = "+";
70 const String TENTH_QUALITY = "!#\"$%&'()*";
71 const String ELEVENTH_SEQID_LINE = "@RawError1";
72 const String ELEVENTH_SEQID = "RawError1";
73 const String ELEVENTH_RAW_SEQ = "ACTNaHtng0aBZa";
74 const String ELEVENTH_PLUS_LINE = "+";
75 const String ELEVENTH_QUALITY = "ACTNactng0aBaZ";
76 const String TWELFTH_SEQID_LINE = "@RawError2";
77 const String TWELFTH_SEQID = "RawError2";
78 const String TWELFTH_RAW_SEQ = "aaa";
79 const String TWELFTH_PLUS_LINE = "+";
80 const String TWELFTH_QUALITY = "aaa";
81 const String THIRTEENTH_SEQID_LINE = "@RawError3";
82 const String THIRTEENTH_SEQID = "RawError3";
83 const String THIRTEENTH_RAW_SEQ = "ACTGACTNactng";
84 const String THIRTEENTH_PLUS_LINE = "+";
85 const String THIRTEENTH_QUALITY = "ACTGACTNactng";
86 const String FOURTEENTH_SEQID_LINE = "@QualityError1";
87 const String FOURTEENTH_SEQID = "QualityError1";
88 const String FOURTEENTH_RAW_SEQ = "ACTGCacgnc";
89 const String FOURTEENTH_PLUS_LINE = "+";
90 const String FOURTEENTH_QUALITY = "ac gcacg n";
91 const String FIFTEENTH_SEQID_LINE = "@QualityError2";
92 const String FIFTEENTH_SEQID = "QualityError2";
93 const String FIFTEENTH_RAW_SEQ = "ACTGCacgnc";
94 const String FIFTEENTH_PLUS_LINE = "+";
95 const String FIFTEENTH_QUALITY = "actgc@cgnc";
96 const String SIXTEENTH_SEQID_LINE = "@QualityError3";
97 const String SIXTEENTH_SEQID = "QualityError3";
98 const String SIXTEENTH_RAW_SEQ = "ACTGCacgnc";
99 const String SIXTEENTH_PLUS_LINE = "+";
100 const String SIXTEENTH_QUALITY = "actgc77acgnc";
101 const String SEVENTEENTH_SEQID_LINE = "@PlusValid1";
102 const String SEVENTEENTH_SEQID = "PlusValid1";
103 const String SEVENTEENTH_RAW_SEQ = "ACTGCacgnc";
104 const String SEVENTEENTH_PLUS_LINE = "+PlusValid1";
105 const String SEVENTEENTH_QUALITY = "actgcacgnc";
106 const String EIGHTEENTH_SEQID_LINE = "@PlusValid2";
107 const String EIGHTEENTH_SEQID = "PlusValid2";
108 const String EIGHTEENTH_RAW_SEQ = "ACTGCacgnc";
109 const String EIGHTEENTH_PLUS_LINE = "+PlusValid2 Added comment";
110 const String EIGHTEENTH_QUALITY = "actgcacgnc";
111 const String NINETEENTH_SEQID_LINE = "@PlusError1";
112 const String NINETEENTH_SEQID = "PlusError1";
113 const String NINETEENTH_RAW_SEQ = "ACTGCacgnc";
114 const String NINETEENTH_PLUS_LINE = "+PlusError2";
115 const String NINETEENTH_QUALITY = "actgcacgnc";
116 
117 const String TWENTIETH_SEQID_LINE = "@InvalidColor";
118 const String TWENTIETH_SEQID = "InvalidColor";
119 const String TWENTIETH_RAW_SEQ = "0123.0321.011";
120 const String TWENTIETH_PLUS_LINE = "+";
121 const String TWENTIETH_QUALITY = "0123.0321.011";
122 
123 
124 const String TWENTY_FIRST_SEQID_LINE = "@PlusError2";
125 const String TWENTY_FIRST_SEQID = "PlusError2";
126 const String TWENTY_FIRST_RAW_SEQ = "ACTGCacgnc";
127 const String TWENTY_FIRST_PLUS_LINE = "";
128 const String TWENTY_FIRST_QUALITY = "";
129 
130 void testReadUnOpenedFile()
131 {
132  FastQFile fastqfile;
133 
134  assert(fastqfile.isOpen() == false);
135  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_ORDER_ERROR);
136  assert(fastqfile.isOpen() == false);
137 }
138 
139 void testOpenFile()
140 {
141  FastQFile fastqfile;
142 
143  // Test for non-existent file.
144  assert(fastqfile.isOpen() == false);
145  assert(fastqfile.openFile("noexist.txt", BaseAsciiMap::UNKNOWN) == FastQStatus::FASTQ_OPEN_ERROR);
146  assert(fastqfile.isOpen() == false);
147 
148 
149 }
150 
151 
152 void testCloseFile()
153 {
154  FastQFile fastqfile;
155 
156  // Test closing a file even though there isn't one open - counts as success.
157  assert(fastqfile.isOpen() == false);
158  assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
159  assert(fastqfile.isOpen() == false);
160 }
161 
162 
163 void testReadSequence()
164 {
165  FastQFile fastqfile;
166 
167  assert(fastqfile.isOpen() == false);
168  assert(fastqfile.openFile("testFile.txt") == FastQStatus::FASTQ_SUCCESS);
169 
170  assert(fastqfile.isOpen() == true);
171 
172  assert(fastqfile.getSpaceType() == BaseAsciiMap::UNKNOWN);
173 
174  // Read Sequence from test file.
175  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
176  assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
177  assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
178  assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
179  assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
180  assert(fastqfile.myQualityString == FIRST_QUALITY);
181  assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
182 
183  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
184  assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
185  assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
186  assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
187  assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
188  assert(fastqfile.myQualityString == SECOND_QUALITY);
189 
190  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
191  assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
192  assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
193  assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
194  assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
195  assert(fastqfile.myQualityString == THIRD_QUALITY);
196 
197  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
198  assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
199  assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
200  assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
201  assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
202  assert(fastqfile.myQualityString == FOURTH_QUALITY);
203 
204  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
205  assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
206  assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
207  assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
208  assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
209  assert(fastqfile.myQualityString == FIFTH_QUALITY);
210 
211  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
212  assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
213  assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
214  assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
215  assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
216  assert(fastqfile.myQualityString == SIXTH_QUALITY);
217 
218  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
219  assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
220  assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
221  assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
222  assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
223  assert(fastqfile.myQualityString == SEVENTH_QUALITY);
224 
225  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
226  assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
227  assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
228  assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
229  assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
230  assert(fastqfile.myQualityString == EIGHTH_QUALITY);
231 
232  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
233  assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
234  assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
235  assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
236  assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
237  assert(fastqfile.myQualityString == NINTH_QUALITY);
238 
239  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
240  assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
241  assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
242  assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
243  assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
244  assert(fastqfile.myQualityString == TENTH_QUALITY);
245 
246  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
247  assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
248  assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
249  assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
250  assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
251  assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
252 
253  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
254  assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
255  assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
256  assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
257  assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
258  assert(fastqfile.myQualityString == TWELFTH_QUALITY);
259 
260  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
261  assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
262  assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
263  assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
264  assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
265  assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
266 
267  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
268  assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
269  assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
270  assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
271  assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
272  assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
273 
274  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
275  assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
276  assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
277  assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
278  assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
279  assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
280 
281  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
282  assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
283  assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
284  assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
285  assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
286  assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
287 
288  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
289  assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
290  assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
291  assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
292  assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
293  assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
294 
295  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
296  assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
297  assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
298  assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
299  assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
300  assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
301 
302  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
303  assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
304  assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
305  assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
306  assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
307  assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
308 
309  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
310  assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
311  assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
312  assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
313  assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
314  assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
315 
316  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
317  assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
318  assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
319  assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
320  assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
321  assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
322 
323  // Close the file, and verify isOpen = false;
324  assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
325  assert(fastqfile.isOpen() == false);
326 
327 
328  //////////////////////////////////
329  // Repeat test specifying base space
330  assert(fastqfile.isOpen() == false);
331  assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::BASE_SPACE) == FastQStatus::FASTQ_SUCCESS);
332 
333  assert(fastqfile.isOpen() == true);
334 
335  assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
336 
337  // Read Sequence from test file.
338  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
339  assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
340  assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
341  assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
342  assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
343  assert(fastqfile.myQualityString == FIRST_QUALITY);
344  assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
345 
346  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
347  assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
348  assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
349  assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
350  assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
351  assert(fastqfile.myQualityString == SECOND_QUALITY);
352 
353  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
354  assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
355  assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
356  assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
357  assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
358  assert(fastqfile.myQualityString == THIRD_QUALITY);
359 
360  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
361  assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
362  assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
363  assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
364  assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
365  assert(fastqfile.myQualityString == FOURTH_QUALITY);
366 
367  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
368  assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
369  assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
370  assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
371  assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
372  assert(fastqfile.myQualityString == FIFTH_QUALITY);
373 
374  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
375  assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
376  assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
377  assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
378  assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
379  assert(fastqfile.myQualityString == SIXTH_QUALITY);
380 
381  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
382  assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
383  assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
384  assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
385  assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
386  assert(fastqfile.myQualityString == SEVENTH_QUALITY);
387 
388  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
389  assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
390  assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
391  assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
392  assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
393  assert(fastqfile.myQualityString == EIGHTH_QUALITY);
394 
395  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
396  assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
397  assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
398  assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
399  assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
400  assert(fastqfile.myQualityString == NINTH_QUALITY);
401 
402  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
403  assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
404  assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
405  assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
406  assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
407  assert(fastqfile.myQualityString == TENTH_QUALITY);
408 
409  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
410  assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
411  assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
412  assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
413  assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
414  assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
415 
416  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
417  assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
418  assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
419  assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
420  assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
421  assert(fastqfile.myQualityString == TWELFTH_QUALITY);
422 
423  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
424  assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
425  assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
426  assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
427  assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
428  assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
429 
430  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
431  assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
432  assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
433  assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
434  assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
435  assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
436 
437  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
438  assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
439  assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
440  assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
441  assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
442  assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
443 
444  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
445  assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
446  assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
447  assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
448  assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
449  assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
450 
451  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
452  assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
453  assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
454  assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
455  assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
456  assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
457 
458  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
459  assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
460  assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
461  assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
462  assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
463  assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
464 
465  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
466  assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
467  assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
468  assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
469  assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
470  assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
471 
472  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
473  assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
474  assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
475  assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
476  assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
477  assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
478 
479  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
480  assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
481  assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
482  assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
483  assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
484  assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
485 
486  // Close the file, and verify isOpen = false;
487  assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
488  assert(fastqfile.isOpen() == false);
489 
490 
491  ////////////////////////////////
492  // Repeat test specifying color space
493  assert(fastqfile.isOpen() == false);
494  assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::COLOR_SPACE) == FastQStatus::FASTQ_SUCCESS);
495 
496  assert(fastqfile.isOpen() == true);
497 
498  assert(fastqfile.getSpaceType() == BaseAsciiMap::COLOR_SPACE);
499 
500  // Read Sequence from test file.
501  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
502  assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
503  assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
504  assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
505  assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
506  assert(fastqfile.myQualityString == FIRST_QUALITY);
507  assert(fastqfile.getSpaceType() == BaseAsciiMap::COLOR_SPACE);
508 
509  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
510  assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
511  assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
512  assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
513  assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
514  assert(fastqfile.myQualityString == SECOND_QUALITY);
515 
516  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
517  assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
518  assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
519  assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
520  assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
521  assert(fastqfile.myQualityString == THIRD_QUALITY);
522 
523  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
524  assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
525  assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
526  assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
527  assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
528  assert(fastqfile.myQualityString == FOURTH_QUALITY);
529 
530  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
531  assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
532  assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
533  assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
534  assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
535  assert(fastqfile.myQualityString == FIFTH_QUALITY);
536 
537  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
538  assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
539  assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
540  assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
541  assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
542  assert(fastqfile.myQualityString == SIXTH_QUALITY);
543 
544  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
545  assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
546  assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
547  assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
548  assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
549  assert(fastqfile.myQualityString == SEVENTH_QUALITY);
550 
551  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
552  assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
553  assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
554  assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
555  assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
556  assert(fastqfile.myQualityString == EIGHTH_QUALITY);
557 
558  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
559  assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
560  assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
561  assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
562  assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
563  assert(fastqfile.myQualityString == NINTH_QUALITY);
564 
565  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
566  assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
567  assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
568  assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
569  assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
570  assert(fastqfile.myQualityString == TENTH_QUALITY);
571 
572  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
573  assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
574  assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
575  assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
576  assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
577  assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
578 
579  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
580  assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
581  assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
582  assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
583  assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
584  assert(fastqfile.myQualityString == TWELFTH_QUALITY);
585 
586  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
587  assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
588  assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
589  assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
590  assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
591  assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
592 
593  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
594  assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
595  assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
596  assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
597  assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
598  assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
599 
600  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
601  assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
602  assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
603  assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
604  assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
605  assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
606 
607  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
608  assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
609  assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
610  assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
611  assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
612  assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
613 
614  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
615  assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
616  assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
617  assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
618  assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
619  assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
620 
621  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
622  assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
623  assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
624  assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
625  assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
626  assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
627 
628  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
629  assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
630  assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
631  assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
632  assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
633  assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
634 
635  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
636  assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
637  assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
638  assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
639  assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
640  assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
641 
642  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
643  assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
644  assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
645  assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
646  assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
647  assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
648 
649  // Close the file, and verify isOpen = false;
650  assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
651  assert(fastqfile.isOpen() == false);
652 
653  ////////////////////////////////
654  // Repeat test specifying Unknown space
655  assert(fastqfile.isOpen() == false);
656  assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::UNKNOWN) == FastQStatus::FASTQ_SUCCESS);
657 
658  assert(fastqfile.isOpen() == true);
659 
660  assert(fastqfile.getSpaceType() == BaseAsciiMap::UNKNOWN);
661 
662  // Read Sequence from test file.
663  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
664  assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
665  assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
666  assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
667  assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
668  assert(fastqfile.myQualityString == FIRST_QUALITY);
669  assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
670 
671  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
672  assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
673  assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
674  assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
675  assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
676  assert(fastqfile.myQualityString == SECOND_QUALITY);
677 
678  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
679  assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
680  assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
681  assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
682  assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
683  assert(fastqfile.myQualityString == THIRD_QUALITY);
684 
685  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
686  assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
687  assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
688  assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
689  assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
690  assert(fastqfile.myQualityString == FOURTH_QUALITY);
691 
692  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
693  assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
694  assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
695  assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
696  assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
697  assert(fastqfile.myQualityString == FIFTH_QUALITY);
698 
699  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
700  assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
701  assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
702  assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
703  assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
704  assert(fastqfile.myQualityString == SIXTH_QUALITY);
705 
706  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
707  assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
708  assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
709  assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
710  assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
711  assert(fastqfile.myQualityString == SEVENTH_QUALITY);
712 
713  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
714  assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
715  assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
716  assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
717  assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
718  assert(fastqfile.myQualityString == EIGHTH_QUALITY);
719 
720  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
721  assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
722  assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
723  assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
724  assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
725  assert(fastqfile.myQualityString == NINTH_QUALITY);
726 
727  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
728  assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
729  assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
730  assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
731  assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
732  assert(fastqfile.myQualityString == TENTH_QUALITY);
733 
734  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
735  assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
736  assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
737  assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
738  assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
739  assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
740 
741  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
742  assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
743  assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
744  assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
745  assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
746  assert(fastqfile.myQualityString == TWELFTH_QUALITY);
747 
748  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
749  assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
750  assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
751  assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
752  assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
753  assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
754 
755  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
756  assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
757  assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
758  assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
759  assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
760  assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
761 
762  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
763  assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
764  assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
765  assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
766  assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
767  assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
768 
769  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
770  assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
771  assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
772  assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
773  assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
774  assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
775 
776  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
777  assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
778  assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
779  assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
780  assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
781  assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
782 
783  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
784  assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
785  assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
786  assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
787  assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
788  assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
789 
790  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
791  assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
792  assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
793  assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
794  assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
795  assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
796 
797  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
798  assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
799  assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
800  assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
801  assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
802  assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
803 
804  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
805  assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
806  assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
807  assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
808  assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
809  assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
810 
811  // Close the file, and verify isOpen = false;
812  assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
813  assert(fastqfile.isOpen() == false);
814 
815 
816  ////////////////////////////////
817  // Repeat test specifying to not check for unique sequence id.
818  fastqfile.disableSeqIDCheck();
819  assert(fastqfile.isOpen() == false);
820  assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::UNKNOWN) == FastQStatus::FASTQ_SUCCESS);
821 
822  assert(fastqfile.isOpen() == true);
823 
824  assert(fastqfile.getSpaceType() == BaseAsciiMap::UNKNOWN);
825 
826  // Read Sequence from test file.
827  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
828  assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
829  assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
830  assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
831  assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
832  assert(fastqfile.myQualityString == FIRST_QUALITY);
833  assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
834 
835  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
836  assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
837  assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
838  assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
839  assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
840  assert(fastqfile.myQualityString == SECOND_QUALITY);
841 
842  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
843  assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
844  assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
845  assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
846  assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
847  assert(fastqfile.myQualityString == THIRD_QUALITY);
848 
849  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
850  assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
851  assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
852  assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
853  assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
854  assert(fastqfile.myQualityString == FOURTH_QUALITY);
855 
856  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
857  assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
858  assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
859  assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
860  assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
861  assert(fastqfile.myQualityString == FIFTH_QUALITY);
862 
863  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
864  assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
865  assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
866  assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
867  assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
868  assert(fastqfile.myQualityString == SIXTH_QUALITY);
869 
870  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
871  assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
872  assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
873  assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
874  assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
875  assert(fastqfile.myQualityString == SEVENTH_QUALITY);
876 
877  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
878  assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
879  assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
880  assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
881  assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
882  assert(fastqfile.myQualityString == EIGHTH_QUALITY);
883 
884  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
885  assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
886  assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
887  assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
888  assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
889  assert(fastqfile.myQualityString == NINTH_QUALITY);
890 
891  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
892  assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
893  assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
894  assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
895  assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
896  assert(fastqfile.myQualityString == TENTH_QUALITY);
897 
898  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
899  assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
900  assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
901  assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
902  assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
903  assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
904 
905  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
906  assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
907  assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
908  assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
909  assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
910  assert(fastqfile.myQualityString == TWELFTH_QUALITY);
911 
912  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
913  assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
914  assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
915  assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
916  assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
917  assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
918 
919  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
920  assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
921  assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
922  assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
923  assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
924  assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
925 
926  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
927  assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
928  assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
929  assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
930  assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
931  assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
932 
933  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
934  assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
935  assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
936  assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
937  assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
938  assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
939 
940  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
941  assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
942  assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
943  assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
944  assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
945  assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
946 
947  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
948  assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
949  assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
950  assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
951  assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
952  assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
953 
954  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
955  assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
956  assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
957  assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
958  assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
959  assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
960 
961  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
962  assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
963  assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
964  assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
965  assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
966  assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
967 
968  assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
969  assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
970  assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
971  assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
972  assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
973  assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
974 
975  // Close the file, and verify isOpen = false;
976  assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
977  assert(fastqfile.isOpen() == false);
978 
979 
980 }
981 
982 int main(int argc, char ** argv)
983 {
984  testReadUnOpenedFile();
985  testOpenFile();
986  testCloseFile();
987  testReadSequence();
988 }
989 
bool isOpen()
Check to see if the file is open.
Definition: FastQFile.cpp:153
Color space only (0,1,2,3,.).
Definition: BaseAsciiMap.h:49
FastQStatus::Status readFastQSequence()
Read 1 FastQSequence, validating it.
Definition: FastQFile.cpp:299
void disableSeqIDCheck()
Disable Unique Sequence ID checking (Unique Sequence ID checking is enabled by default).
Definition: FastQFile.cpp:61
Base decision on the first raw seq character/type has yet to be determined.
Definition: BaseAsciiMap.h:47
FastQStatus::Status openFile(const char *fileName, BaseAsciiMap::SPACE_TYPE spaceType=BaseAsciiMap::UNKNOWN)
Open a FastQFile.
Definition: FastQFile.cpp:83
Bases only (A,C,G,T,N).
Definition: BaseAsciiMap.h:48
means the methods are called out of order, like trying to read a file before opening it...
Definition: FastQStatus.h:34
Class for reading/validating a fastq file.
Definition: FastQFile.h:29
means the file could not be opened.
Definition: FastQStatus.h:35
means that the sequence was invalid.
Definition: FastQStatus.h:33
FastQStatus::Status closeFile()
Close a FastQFile.
Definition: FastQFile.cpp:125
indicates method finished successfully.
Definition: FastQStatus.h:32
BaseAsciiMap::SPACE_TYPE getSpaceType()
Get the space type used for this file.
Definition: FastQFile.h:111