libStatGen Software  1
FastQFileTest.cpp
00001 /*
00002  *  Copyright (C) 2010  Regents of the University of Michigan
00003  *
00004  *   This program is free software: you can redistribute it and/or modify
00005  *   it under the terms of the GNU General Public License as published by
00006  *   the Free Software Foundation, either version 3 of the License, or
00007  *   (at your option) any later version.
00008  *
00009  *   This program is distributed in the hope that it will be useful,
00010  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *   GNU General Public License for more details.
00013  *
00014  *   You should have received a copy of the GNU General Public License
00015  *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016  */
00017 
00018 #include "FastQFile.h"
00019 #include <assert.h>
00020 
00021 const String FIRST_SEQID_LINE = "@Valid with comment";
00022 const String FIRST_SEQID = "Valid";
00023 const String FIRST_RAW_SEQ = "ACTGNactng.0123";
00024 const String FIRST_PLUS_LINE = "+";
00025 const String FIRST_QUALITY = "!#\"$%&'()*+,-./";
00026 const String SECOND_SEQID_LINE = "@Valid1 with comment";
00027 const String SECOND_SEQID = "Valid1";
00028 const String SECOND_RAW_SEQ = "ACTGACTNactngaac";
00029 const String SECOND_PLUS_LINE = "+";
00030 const String SECOND_QUALITY = "0123456789:;<=>@";
00031 const String THIRD_SEQID_LINE = "@Valid2";
00032 const String THIRD_SEQID = "Valid2";
00033 const String THIRD_RAW_SEQ = "A123.0321.011";
00034 const String THIRD_PLUS_LINE = "+";
00035 const String THIRD_QUALITY = "?@ABCDEFGHIJK";
00036 const String FOURTH_SEQID_LINE = "@Valid3";
00037 const String FOURTH_SEQID = "Valid3";
00038 const String FOURTH_RAW_SEQ = "ACTGACTNactngACTGACTNactng";
00039 const String FOURTH_PLUS_LINE = "+";
00040 const String FOURTH_QUALITY = "LMNOPQRSTUVWXYZ[\\]^_'abcde";
00041 const String FIFTH_SEQID_LINE = "@Valid4";
00042 const String FIFTH_SEQID = "Valid4";
00043 const String FIFTH_RAW_SEQ = "ACTGACTNactngACTGACTNactng";
00044 const String FIFTH_PLUS_LINE = "+";
00045 const String FIFTH_QUALITY = "fghijklmnopqrstuvwxyz{|}~~";
00046 const String SIXTH_SEQID_LINE = "@";
00047 const String SIXTH_SEQID = "";
00048 const String SIXTH_RAW_SEQ = "ACTGACTNactng";
00049 const String SIXTH_PLUS_LINE = "+";
00050 const String SIXTH_QUALITY = "?@ABCDEFGHIJK";
00051 const String SEVENTH_SEQID_LINE = "Line no start with @";
00052 const String SEVENTH_SEQID = "";
00053 const String SEVENTH_RAW_SEQ = "ACTGACTNactng";
00054 const String SEVENTH_PLUS_LINE = "+";
00055 const String SEVENTH_QUALITY = "LMNOPQRSTUVWX";
00056 const String EIGHTH_SEQID_LINE = "@ a";
00057 const String EIGHTH_SEQID = "";
00058 const String EIGHTH_RAW_SEQ = "ACTGACTNactng";
00059 const String EIGHTH_PLUS_LINE = "+";
00060 const String EIGHTH_QUALITY = "YZ[\\]^_'abcde";
00061 const String NINTH_SEQID_LINE = "@ ";
00062 const String NINTH_SEQID = "";
00063 const String NINTH_RAW_SEQ = "ACTGACTNactng";
00064 const String NINTH_PLUS_LINE = "+";
00065 const String NINTH_QUALITY = "fghijklmnopqr";
00066 const String TENTH_SEQID_LINE = "@Valid";
00067 const String TENTH_SEQID = "Valid";
00068 const String TENTH_RAW_SEQ = "ACTGNactng";
00069 const String TENTH_PLUS_LINE = "+";
00070 const String TENTH_QUALITY = "!#\"$%&'()*";
00071 const String ELEVENTH_SEQID_LINE = "@RawError1";
00072 const String ELEVENTH_SEQID = "RawError1";
00073 const String ELEVENTH_RAW_SEQ = "ACTNaHtng0aBZa";
00074 const String ELEVENTH_PLUS_LINE = "+";
00075 const String ELEVENTH_QUALITY = "ACTNactng0aBaZ";
00076 const String TWELFTH_SEQID_LINE = "@RawError2";
00077 const String TWELFTH_SEQID = "RawError2";
00078 const String TWELFTH_RAW_SEQ = "aaa";
00079 const String TWELFTH_PLUS_LINE = "+";
00080 const String TWELFTH_QUALITY = "aaa";
00081 const String THIRTEENTH_SEQID_LINE = "@RawError3";
00082 const String THIRTEENTH_SEQID = "RawError3";
00083 const String THIRTEENTH_RAW_SEQ = "ACTGACTNactng";
00084 const String THIRTEENTH_PLUS_LINE = "+";
00085 const String THIRTEENTH_QUALITY = "ACTGACTNactng";
00086 const String FOURTEENTH_SEQID_LINE = "@QualityError1";
00087 const String FOURTEENTH_SEQID = "QualityError1";
00088 const String FOURTEENTH_RAW_SEQ = "ACTGCacgnc";
00089 const String FOURTEENTH_PLUS_LINE = "+";
00090 const String FOURTEENTH_QUALITY = "ac gcacg n";
00091 const String FIFTEENTH_SEQID_LINE = "@QualityError2";
00092 const String FIFTEENTH_SEQID = "QualityError2";
00093 const String FIFTEENTH_RAW_SEQ = "ACTGCacgnc";
00094 const String FIFTEENTH_PLUS_LINE = "+";
00095 const String FIFTEENTH_QUALITY = "actgc@cgnc";
00096 const String SIXTEENTH_SEQID_LINE = "@QualityError3";
00097 const String SIXTEENTH_SEQID = "QualityError3";
00098 const String SIXTEENTH_RAW_SEQ = "ACTGCacgnc";
00099 const String SIXTEENTH_PLUS_LINE = "+";
00100 const String SIXTEENTH_QUALITY = "actgc77acgnc";
00101 const String SEVENTEENTH_SEQID_LINE = "@PlusValid1";
00102 const String SEVENTEENTH_SEQID = "PlusValid1";
00103 const String SEVENTEENTH_RAW_SEQ = "ACTGCacgnc";
00104 const String SEVENTEENTH_PLUS_LINE = "+PlusValid1";
00105 const String SEVENTEENTH_QUALITY = "actgcacgnc";
00106 const String EIGHTEENTH_SEQID_LINE = "@PlusValid2";
00107 const String EIGHTEENTH_SEQID = "PlusValid2";
00108 const String EIGHTEENTH_RAW_SEQ = "ACTGCacgnc";
00109 const String EIGHTEENTH_PLUS_LINE = "+PlusValid2 Added comment";
00110 const String EIGHTEENTH_QUALITY = "actgcacgnc";
00111 const String NINETEENTH_SEQID_LINE = "@PlusError1";
00112 const String NINETEENTH_SEQID = "PlusError1";
00113 const String NINETEENTH_RAW_SEQ = "ACTGCacgnc";
00114 const String NINETEENTH_PLUS_LINE = "+PlusError2";
00115 const String NINETEENTH_QUALITY = "actgcacgnc";
00116 
00117 const String TWENTIETH_SEQID_LINE = "@InvalidColor";
00118 const String TWENTIETH_SEQID = "InvalidColor";
00119 const String TWENTIETH_RAW_SEQ = "0123.0321.011";
00120 const String TWENTIETH_PLUS_LINE = "+";
00121 const String TWENTIETH_QUALITY = "0123.0321.011";
00122 
00123 
00124 const String TWENTY_FIRST_SEQID_LINE = "@PlusError2";
00125 const String TWENTY_FIRST_SEQID = "PlusError2";
00126 const String TWENTY_FIRST_RAW_SEQ = "ACTGCacgnc";
00127 const String TWENTY_FIRST_PLUS_LINE = "";
00128 const String TWENTY_FIRST_QUALITY = "";
00129 
00130 void testReadUnOpenedFile()
00131 {
00132    FastQFile fastqfile;
00133 
00134    assert(fastqfile.isOpen() == false);
00135    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_ORDER_ERROR);
00136    assert(fastqfile.isOpen() == false);
00137 }
00138 
00139 void testOpenFile()
00140 {
00141    FastQFile fastqfile;
00142 
00143    // Test for non-existent file.
00144    assert(fastqfile.isOpen() == false);
00145    assert(fastqfile.openFile("noexist.txt", BaseAsciiMap::UNKNOWN) == FastQStatus::FASTQ_OPEN_ERROR);
00146    assert(fastqfile.isOpen() == false);
00147 
00148 
00149 }
00150 
00151 
00152 void testCloseFile()
00153 {
00154    FastQFile fastqfile;
00155 
00156    // Test closing a file even though there isn't one open - counts as success.
00157    assert(fastqfile.isOpen() == false);
00158    assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
00159    assert(fastqfile.isOpen() == false);
00160 }
00161 
00162 
00163 void testReadSequence()
00164 {
00165    FastQFile fastqfile;
00166    
00167    assert(fastqfile.isOpen() == false);
00168    assert(fastqfile.openFile("testFile.txt") == FastQStatus::FASTQ_SUCCESS);
00169 
00170    assert(fastqfile.isOpen() == true);
00171 
00172    assert(fastqfile.getSpaceType() == BaseAsciiMap::UNKNOWN);
00173 
00174    // Read Sequence from test file.
00175    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00176    assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
00177    assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
00178    assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
00179    assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
00180    assert(fastqfile.myQualityString == FIRST_QUALITY);
00181    assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
00182 
00183    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00184    assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
00185    assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
00186    assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
00187    assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
00188    assert(fastqfile.myQualityString == SECOND_QUALITY);
00189 
00190    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00191    assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
00192    assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
00193    assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
00194    assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
00195    assert(fastqfile.myQualityString == THIRD_QUALITY);
00196 
00197    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00198    assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
00199    assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
00200    assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
00201    assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
00202    assert(fastqfile.myQualityString == FOURTH_QUALITY);
00203 
00204    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00205    assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
00206    assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
00207    assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
00208    assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
00209    assert(fastqfile.myQualityString == FIFTH_QUALITY);
00210 
00211    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00212    assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
00213    assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
00214    assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
00215    assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
00216    assert(fastqfile.myQualityString == SIXTH_QUALITY);
00217 
00218    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00219    assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
00220    assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
00221    assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
00222    assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
00223    assert(fastqfile.myQualityString == SEVENTH_QUALITY);
00224 
00225    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00226    assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
00227    assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
00228    assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
00229    assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
00230    assert(fastqfile.myQualityString == EIGHTH_QUALITY);
00231 
00232    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00233    assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
00234    assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
00235    assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
00236    assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
00237    assert(fastqfile.myQualityString == NINTH_QUALITY);
00238 
00239    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00240    assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
00241    assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
00242    assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
00243    assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
00244    assert(fastqfile.myQualityString == TENTH_QUALITY);
00245 
00246    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00247    assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
00248    assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
00249    assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
00250    assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
00251    assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
00252 
00253    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00254    assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
00255    assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
00256    assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
00257    assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
00258    assert(fastqfile.myQualityString == TWELFTH_QUALITY);
00259 
00260    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00261    assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
00262    assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
00263    assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
00264    assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
00265    assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
00266 
00267    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00268    assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
00269    assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
00270    assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
00271    assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
00272    assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
00273 
00274    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00275    assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
00276    assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
00277    assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
00278    assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
00279    assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
00280 
00281    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00282    assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
00283    assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
00284    assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
00285    assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
00286    assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
00287 
00288    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00289    assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
00290    assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
00291    assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
00292    assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
00293    assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
00294 
00295    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00296    assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
00297    assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
00298    assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
00299    assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
00300    assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
00301 
00302    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00303    assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
00304    assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
00305    assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
00306    assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
00307    assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
00308 
00309    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00310    assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
00311    assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
00312    assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
00313    assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
00314    assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
00315 
00316    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00317    assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
00318    assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
00319    assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
00320    assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
00321    assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
00322 
00323    // Close the file, and verify isOpen = false;
00324    assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
00325    assert(fastqfile.isOpen() == false);
00326    
00327 
00328    //////////////////////////////////
00329    // Repeat test specifying base space
00330    assert(fastqfile.isOpen() == false);
00331    assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::BASE_SPACE) == FastQStatus::FASTQ_SUCCESS);
00332 
00333    assert(fastqfile.isOpen() == true);
00334 
00335    assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
00336 
00337    // Read Sequence from test file.
00338    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00339    assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
00340    assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
00341    assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
00342    assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
00343    assert(fastqfile.myQualityString == FIRST_QUALITY);
00344    assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
00345 
00346    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00347    assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
00348    assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
00349    assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
00350    assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
00351    assert(fastqfile.myQualityString == SECOND_QUALITY);
00352 
00353    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00354    assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
00355    assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
00356    assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
00357    assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
00358    assert(fastqfile.myQualityString == THIRD_QUALITY);
00359 
00360    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00361    assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
00362    assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
00363    assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
00364    assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
00365    assert(fastqfile.myQualityString == FOURTH_QUALITY);
00366 
00367    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00368    assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
00369    assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
00370    assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
00371    assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
00372    assert(fastqfile.myQualityString == FIFTH_QUALITY);
00373 
00374    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00375    assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
00376    assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
00377    assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
00378    assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
00379    assert(fastqfile.myQualityString == SIXTH_QUALITY);
00380 
00381    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00382    assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
00383    assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
00384    assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
00385    assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
00386    assert(fastqfile.myQualityString == SEVENTH_QUALITY);
00387 
00388    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00389    assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
00390    assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
00391    assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
00392    assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
00393    assert(fastqfile.myQualityString == EIGHTH_QUALITY);
00394 
00395    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00396    assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
00397    assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
00398    assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
00399    assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
00400    assert(fastqfile.myQualityString == NINTH_QUALITY);
00401 
00402    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00403    assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
00404    assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
00405    assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
00406    assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
00407    assert(fastqfile.myQualityString == TENTH_QUALITY);
00408 
00409    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00410    assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
00411    assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
00412    assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
00413    assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
00414    assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
00415 
00416    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00417    assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
00418    assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
00419    assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
00420    assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
00421    assert(fastqfile.myQualityString == TWELFTH_QUALITY);
00422 
00423    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00424    assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
00425    assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
00426    assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
00427    assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
00428    assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
00429 
00430    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00431    assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
00432    assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
00433    assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
00434    assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
00435    assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
00436 
00437    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00438    assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
00439    assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
00440    assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
00441    assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
00442    assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
00443 
00444    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00445    assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
00446    assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
00447    assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
00448    assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
00449    assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
00450 
00451    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00452    assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
00453    assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
00454    assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
00455    assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
00456    assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
00457 
00458    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00459    assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
00460    assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
00461    assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
00462    assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
00463    assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
00464 
00465    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00466    assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
00467    assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
00468    assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
00469    assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
00470    assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
00471 
00472    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00473    assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
00474    assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
00475    assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
00476    assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
00477    assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
00478 
00479    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00480    assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
00481    assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
00482    assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
00483    assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
00484    assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
00485 
00486    // Close the file, and verify isOpen = false;
00487    assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
00488    assert(fastqfile.isOpen() == false);
00489    
00490 
00491    ////////////////////////////////
00492    // Repeat test specifying color space
00493    assert(fastqfile.isOpen() == false);
00494    assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::COLOR_SPACE) == FastQStatus::FASTQ_SUCCESS);
00495 
00496    assert(fastqfile.isOpen() == true);
00497 
00498    assert(fastqfile.getSpaceType() == BaseAsciiMap::COLOR_SPACE);
00499 
00500    // Read Sequence from test file.
00501    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00502    assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
00503    assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
00504    assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
00505    assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
00506    assert(fastqfile.myQualityString == FIRST_QUALITY);
00507    assert(fastqfile.getSpaceType() == BaseAsciiMap::COLOR_SPACE);
00508 
00509    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00510    assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
00511    assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
00512    assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
00513    assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
00514    assert(fastqfile.myQualityString == SECOND_QUALITY);
00515 
00516    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00517    assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
00518    assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
00519    assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
00520    assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
00521    assert(fastqfile.myQualityString == THIRD_QUALITY);
00522 
00523    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00524    assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
00525    assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
00526    assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
00527    assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
00528    assert(fastqfile.myQualityString == FOURTH_QUALITY);
00529 
00530    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00531    assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
00532    assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
00533    assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
00534    assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
00535    assert(fastqfile.myQualityString == FIFTH_QUALITY);
00536 
00537    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00538    assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
00539    assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
00540    assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
00541    assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
00542    assert(fastqfile.myQualityString == SIXTH_QUALITY);
00543 
00544    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00545    assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
00546    assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
00547    assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
00548    assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
00549    assert(fastqfile.myQualityString == SEVENTH_QUALITY);
00550 
00551    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00552    assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
00553    assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
00554    assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
00555    assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
00556    assert(fastqfile.myQualityString == EIGHTH_QUALITY);
00557 
00558    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00559    assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
00560    assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
00561    assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
00562    assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
00563    assert(fastqfile.myQualityString == NINTH_QUALITY);
00564 
00565    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00566    assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
00567    assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
00568    assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
00569    assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
00570    assert(fastqfile.myQualityString == TENTH_QUALITY);
00571 
00572    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00573    assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
00574    assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
00575    assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
00576    assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
00577    assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
00578 
00579    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00580    assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
00581    assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
00582    assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
00583    assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
00584    assert(fastqfile.myQualityString == TWELFTH_QUALITY);
00585 
00586    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00587    assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
00588    assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
00589    assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
00590    assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
00591    assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
00592 
00593    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00594    assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
00595    assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
00596    assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
00597    assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
00598    assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
00599 
00600    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00601    assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
00602    assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
00603    assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
00604    assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
00605    assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
00606 
00607    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00608    assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
00609    assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
00610    assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
00611    assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
00612    assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
00613 
00614    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00615    assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
00616    assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
00617    assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
00618    assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
00619    assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
00620 
00621    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00622    assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
00623    assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
00624    assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
00625    assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
00626    assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
00627 
00628    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00629    assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
00630    assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
00631    assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
00632    assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
00633    assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
00634 
00635    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00636    assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
00637    assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
00638    assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
00639    assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
00640    assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
00641 
00642    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00643    assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
00644    assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
00645    assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
00646    assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
00647    assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
00648 
00649    // Close the file, and verify isOpen = false;
00650    assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
00651    assert(fastqfile.isOpen() == false);   
00652 
00653    ////////////////////////////////
00654    // Repeat test specifying Unknown space
00655    assert(fastqfile.isOpen() == false);
00656    assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::UNKNOWN) == FastQStatus::FASTQ_SUCCESS);
00657 
00658    assert(fastqfile.isOpen() == true);
00659 
00660    assert(fastqfile.getSpaceType() == BaseAsciiMap::UNKNOWN);
00661 
00662    // Read Sequence from test file.
00663    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00664    assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
00665    assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
00666    assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
00667    assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
00668    assert(fastqfile.myQualityString == FIRST_QUALITY);
00669    assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
00670 
00671    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00672    assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
00673    assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
00674    assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
00675    assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
00676    assert(fastqfile.myQualityString == SECOND_QUALITY);
00677 
00678    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00679    assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
00680    assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
00681    assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
00682    assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
00683    assert(fastqfile.myQualityString == THIRD_QUALITY);
00684 
00685    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00686    assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
00687    assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
00688    assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
00689    assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
00690    assert(fastqfile.myQualityString == FOURTH_QUALITY);
00691 
00692    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00693    assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
00694    assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
00695    assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
00696    assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
00697    assert(fastqfile.myQualityString == FIFTH_QUALITY);
00698 
00699    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00700    assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
00701    assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
00702    assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
00703    assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
00704    assert(fastqfile.myQualityString == SIXTH_QUALITY);
00705 
00706    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00707    assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
00708    assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
00709    assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
00710    assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
00711    assert(fastqfile.myQualityString == SEVENTH_QUALITY);
00712 
00713    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00714    assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
00715    assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
00716    assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
00717    assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
00718    assert(fastqfile.myQualityString == EIGHTH_QUALITY);
00719 
00720    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00721    assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
00722    assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
00723    assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
00724    assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
00725    assert(fastqfile.myQualityString == NINTH_QUALITY);
00726 
00727    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00728    assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
00729    assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
00730    assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
00731    assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
00732    assert(fastqfile.myQualityString == TENTH_QUALITY);
00733 
00734    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00735    assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
00736    assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
00737    assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
00738    assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
00739    assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
00740 
00741    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00742    assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
00743    assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
00744    assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
00745    assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
00746    assert(fastqfile.myQualityString == TWELFTH_QUALITY);
00747 
00748    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00749    assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
00750    assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
00751    assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
00752    assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
00753    assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
00754 
00755    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00756    assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
00757    assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
00758    assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
00759    assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
00760    assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
00761 
00762    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00763    assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
00764    assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
00765    assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
00766    assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
00767    assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
00768 
00769    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00770    assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
00771    assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
00772    assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
00773    assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
00774    assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
00775 
00776    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00777    assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
00778    assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
00779    assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
00780    assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
00781    assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
00782 
00783    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00784    assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
00785    assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
00786    assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
00787    assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
00788    assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
00789 
00790    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00791    assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
00792    assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
00793    assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
00794    assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
00795    assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
00796 
00797    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00798    assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
00799    assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
00800    assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
00801    assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
00802    assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
00803 
00804    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00805    assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
00806    assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
00807    assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
00808    assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
00809    assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
00810 
00811    // Close the file, and verify isOpen = false;
00812    assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
00813    assert(fastqfile.isOpen() == false);
00814    
00815 
00816    ////////////////////////////////
00817    // Repeat test specifying to not check for unique sequence id.
00818    fastqfile.disableSeqIDCheck();
00819    assert(fastqfile.isOpen() == false);
00820    assert(fastqfile.openFile("testFile.txt", BaseAsciiMap::UNKNOWN) == FastQStatus::FASTQ_SUCCESS);
00821 
00822    assert(fastqfile.isOpen() == true);
00823 
00824    assert(fastqfile.getSpaceType() == BaseAsciiMap::UNKNOWN);
00825 
00826    // Read Sequence from test file.
00827    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00828    assert(fastqfile.mySequenceIdLine == FIRST_SEQID_LINE);
00829    assert(fastqfile.mySequenceIdentifier == FIRST_SEQID);
00830    assert(fastqfile.myRawSequence == FIRST_RAW_SEQ);
00831    assert(fastqfile.myPlusLine == FIRST_PLUS_LINE);
00832    assert(fastqfile.myQualityString == FIRST_QUALITY);
00833    assert(fastqfile.getSpaceType() == BaseAsciiMap::BASE_SPACE);
00834 
00835    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00836    assert(fastqfile.mySequenceIdLine == SECOND_SEQID_LINE);
00837    assert(fastqfile.mySequenceIdentifier == SECOND_SEQID);
00838    assert(fastqfile.myRawSequence == SECOND_RAW_SEQ);
00839    assert(fastqfile.myPlusLine == SECOND_PLUS_LINE);
00840    assert(fastqfile.myQualityString == SECOND_QUALITY);
00841 
00842    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00843    assert(fastqfile.mySequenceIdLine == THIRD_SEQID_LINE);
00844    assert(fastqfile.mySequenceIdentifier == THIRD_SEQID);
00845    assert(fastqfile.myRawSequence == THIRD_RAW_SEQ);
00846    assert(fastqfile.myPlusLine == THIRD_PLUS_LINE);
00847    assert(fastqfile.myQualityString == THIRD_QUALITY);
00848 
00849    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00850    assert(fastqfile.mySequenceIdLine == FOURTH_SEQID_LINE);
00851    assert(fastqfile.mySequenceIdentifier == FOURTH_SEQID);
00852    assert(fastqfile.myRawSequence == FOURTH_RAW_SEQ);
00853    assert(fastqfile.myPlusLine == FOURTH_PLUS_LINE);
00854    assert(fastqfile.myQualityString == FOURTH_QUALITY);
00855 
00856    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00857    assert(fastqfile.mySequenceIdLine == FIFTH_SEQID_LINE);
00858    assert(fastqfile.mySequenceIdentifier == FIFTH_SEQID);
00859    assert(fastqfile.myRawSequence == FIFTH_RAW_SEQ);
00860    assert(fastqfile.myPlusLine == FIFTH_PLUS_LINE);
00861    assert(fastqfile.myQualityString == FIFTH_QUALITY);
00862 
00863    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00864    assert(fastqfile.mySequenceIdLine == SIXTH_SEQID_LINE);
00865    assert(fastqfile.mySequenceIdentifier == SIXTH_SEQID);
00866    assert(fastqfile.myRawSequence == SIXTH_RAW_SEQ);
00867    assert(fastqfile.myPlusLine == SIXTH_PLUS_LINE);
00868    assert(fastqfile.myQualityString == SIXTH_QUALITY);
00869 
00870    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00871    assert(fastqfile.mySequenceIdLine == SEVENTH_SEQID_LINE);
00872    assert(fastqfile.mySequenceIdentifier == SEVENTH_SEQID);
00873    assert(fastqfile.myRawSequence == SEVENTH_RAW_SEQ);
00874    assert(fastqfile.myPlusLine == SEVENTH_PLUS_LINE);
00875    assert(fastqfile.myQualityString == SEVENTH_QUALITY);
00876 
00877    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00878    assert(fastqfile.mySequenceIdLine == EIGHTH_SEQID_LINE);
00879    assert(fastqfile.mySequenceIdentifier == EIGHTH_SEQID);
00880    assert(fastqfile.myRawSequence == EIGHTH_RAW_SEQ);
00881    assert(fastqfile.myPlusLine == EIGHTH_PLUS_LINE);
00882    assert(fastqfile.myQualityString == EIGHTH_QUALITY);
00883 
00884    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00885    assert(fastqfile.mySequenceIdLine == NINTH_SEQID_LINE);
00886    assert(fastqfile.mySequenceIdentifier == NINTH_SEQID);
00887    assert(fastqfile.myRawSequence == NINTH_RAW_SEQ);
00888    assert(fastqfile.myPlusLine == NINTH_PLUS_LINE);
00889    assert(fastqfile.myQualityString == NINTH_QUALITY);
00890 
00891    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00892    assert(fastqfile.mySequenceIdLine == TENTH_SEQID_LINE);
00893    assert(fastqfile.mySequenceIdentifier == TENTH_SEQID);
00894    assert(fastqfile.myRawSequence == TENTH_RAW_SEQ);
00895    assert(fastqfile.myPlusLine == TENTH_PLUS_LINE);
00896    assert(fastqfile.myQualityString == TENTH_QUALITY);
00897 
00898    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00899    assert(fastqfile.mySequenceIdLine == ELEVENTH_SEQID_LINE);
00900    assert(fastqfile.mySequenceIdentifier == ELEVENTH_SEQID);
00901    assert(fastqfile.myRawSequence == ELEVENTH_RAW_SEQ);
00902    assert(fastqfile.myPlusLine == ELEVENTH_PLUS_LINE);
00903    assert(fastqfile.myQualityString == ELEVENTH_QUALITY);
00904 
00905    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00906    assert(fastqfile.mySequenceIdLine == TWELFTH_SEQID_LINE);
00907    assert(fastqfile.mySequenceIdentifier == TWELFTH_SEQID);
00908    assert(fastqfile.myRawSequence == TWELFTH_RAW_SEQ);
00909    assert(fastqfile.myPlusLine == TWELFTH_PLUS_LINE);
00910    assert(fastqfile.myQualityString == TWELFTH_QUALITY);
00911 
00912    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00913    assert(fastqfile.mySequenceIdLine == THIRTEENTH_SEQID_LINE);
00914    assert(fastqfile.mySequenceIdentifier == THIRTEENTH_SEQID);
00915    assert(fastqfile.myRawSequence == THIRTEENTH_RAW_SEQ);
00916    assert(fastqfile.myPlusLine == THIRTEENTH_PLUS_LINE);
00917    assert(fastqfile.myQualityString == THIRTEENTH_QUALITY);
00918 
00919    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00920    assert(fastqfile.mySequenceIdLine == FOURTEENTH_SEQID_LINE);
00921    assert(fastqfile.mySequenceIdentifier == FOURTEENTH_SEQID);
00922    assert(fastqfile.myRawSequence == FOURTEENTH_RAW_SEQ);
00923    assert(fastqfile.myPlusLine == FOURTEENTH_PLUS_LINE);
00924    assert(fastqfile.myQualityString == FOURTEENTH_QUALITY);
00925 
00926    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00927    assert(fastqfile.mySequenceIdLine == FIFTEENTH_SEQID_LINE);
00928    assert(fastqfile.mySequenceIdentifier == FIFTEENTH_SEQID);
00929    assert(fastqfile.myRawSequence == FIFTEENTH_RAW_SEQ);
00930    assert(fastqfile.myPlusLine == FIFTEENTH_PLUS_LINE);
00931    assert(fastqfile.myQualityString == FIFTEENTH_QUALITY);
00932 
00933    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00934    assert(fastqfile.mySequenceIdLine == SIXTEENTH_SEQID_LINE);
00935    assert(fastqfile.mySequenceIdentifier == SIXTEENTH_SEQID);
00936    assert(fastqfile.myRawSequence == SIXTEENTH_RAW_SEQ);
00937    assert(fastqfile.myPlusLine == SIXTEENTH_PLUS_LINE);
00938    assert(fastqfile.myQualityString == SIXTEENTH_QUALITY);
00939 
00940    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00941    assert(fastqfile.mySequenceIdLine == SEVENTEENTH_SEQID_LINE);
00942    assert(fastqfile.mySequenceIdentifier == SEVENTEENTH_SEQID);
00943    assert(fastqfile.myRawSequence == SEVENTEENTH_RAW_SEQ);
00944    assert(fastqfile.myPlusLine == SEVENTEENTH_PLUS_LINE);
00945    assert(fastqfile.myQualityString == SEVENTEENTH_QUALITY);
00946 
00947    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_SUCCESS);
00948    assert(fastqfile.mySequenceIdLine == EIGHTEENTH_SEQID_LINE);
00949    assert(fastqfile.mySequenceIdentifier == EIGHTEENTH_SEQID);
00950    assert(fastqfile.myRawSequence == EIGHTEENTH_RAW_SEQ);
00951    assert(fastqfile.myPlusLine == EIGHTEENTH_PLUS_LINE);
00952    assert(fastqfile.myQualityString == EIGHTEENTH_QUALITY);
00953 
00954    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00955    assert(fastqfile.mySequenceIdLine == NINETEENTH_SEQID_LINE);
00956    assert(fastqfile.mySequenceIdentifier == NINETEENTH_SEQID);
00957    assert(fastqfile.myRawSequence == NINETEENTH_RAW_SEQ);
00958    assert(fastqfile.myPlusLine == NINETEENTH_PLUS_LINE);
00959    assert(fastqfile.myQualityString == NINETEENTH_QUALITY);
00960 
00961    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00962    assert(fastqfile.mySequenceIdLine == TWENTIETH_SEQID_LINE);
00963    assert(fastqfile.mySequenceIdentifier == TWENTIETH_SEQID);
00964    assert(fastqfile.myRawSequence == TWENTIETH_RAW_SEQ);
00965    assert(fastqfile.myPlusLine == TWENTIETH_PLUS_LINE);
00966    assert(fastqfile.myQualityString == TWENTIETH_QUALITY);
00967 
00968    assert(fastqfile.readFastQSequence() == FastQStatus::FASTQ_INVALID);
00969    assert(fastqfile.mySequenceIdLine == TWENTY_FIRST_SEQID_LINE);
00970    assert(fastqfile.mySequenceIdentifier == TWENTY_FIRST_SEQID);
00971    assert(fastqfile.myRawSequence == TWENTY_FIRST_RAW_SEQ);
00972    assert(fastqfile.myPlusLine == TWENTY_FIRST_PLUS_LINE);
00973    assert(fastqfile.myQualityString == TWENTY_FIRST_QUALITY);
00974 
00975    // Close the file, and verify isOpen = false;
00976    assert(fastqfile.closeFile() == FastQStatus::FASTQ_SUCCESS);
00977    assert(fastqfile.isOpen() == false);
00978    
00979 
00980 }
00981 
00982 int main(int argc, char ** argv)
00983 {   
00984    testReadUnOpenedFile();
00985    testOpenFile();
00986    testCloseFile();
00987    testReadSequence();
00988 }
00989 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends