00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "BamIndex.h"
00019 #include "Validate.h"
00020
00021 #include <assert.h>
00022
00023 void testBamIndex()
00024 {
00025
00026 BamIndex bamIndex;
00027 bamIndex.readIndex("testFiles/sortedBam.bam.bai");
00028
00029
00030 Chunk testChunk;
00031 SortedChunkList chunkList;
00032 assert(bamIndex.getChunksForRegion(1, -1, -1, chunkList) == true);
00033 assert(!chunkList.empty());
00034 testChunk = chunkList.pop();
00035 assert(chunkList.empty());
00036 assert(testChunk.chunk_beg == 0x4e7);
00037 assert(testChunk.chunk_end == 0x599);
00038
00039
00040 assert(bamIndex.getChunksForRegion(0, -1, -1, chunkList) == true);
00041 assert(!chunkList.empty());
00042 testChunk = chunkList.pop();
00043 assert(chunkList.empty());
00044 assert(testChunk.chunk_beg == 0x360);
00045 assert(testChunk.chunk_end == 0x4e7);
00046
00047
00048
00049 assert(bamIndex.getChunksForRegion(2, -1, -1, chunkList) == true);
00050 assert(!chunkList.empty());
00051 testChunk = chunkList.pop();
00052 assert(chunkList.empty());
00053 assert(testChunk.chunk_beg == 0x599);
00054 assert(testChunk.chunk_end == 0x5ea);
00055
00056
00057
00058
00059 assert(bamIndex.getChunksForRegion(3, -1, -1, chunkList) == true);
00060 assert(chunkList.empty());
00061
00062
00063 SamFile inFile;
00064 assert(inFile.OpenForRead("testFiles/sortedBam.bam"));
00065 assert(inFile.ReadBamIndex("testFiles/sortedBam.bam.bai"));
00066 SamFileHeader samHeader;
00067 assert(inFile.ReadHeader(samHeader));
00068 SamRecord samRecord;
00069
00070
00071
00072 assert(inFile.SetReadSection(-1));
00073 assert(inFile.ReadRecord(samHeader, samRecord));
00074 validateRead8(samRecord);
00075 assert(inFile.ReadRecord(samHeader, samRecord));
00076 validateRead10(samRecord);
00077 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00078
00079
00080
00081 assert(inFile.SetReadSection(2));
00082 assert(inFile.ReadRecord(samHeader, samRecord));
00083 validateRead9(samRecord);
00084 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00085
00086
00087
00088 assert(inFile.SetReadSection(0));
00089 assert(inFile.ReadRecord(samHeader, samRecord));
00090 validateRead3(samRecord);
00091 assert(inFile.ReadRecord(samHeader, samRecord));
00092 validateRead4(samRecord);
00093 assert(inFile.ReadRecord(samHeader, samRecord));
00094 validateRead1(samRecord);
00095 assert(inFile.ReadRecord(samHeader, samRecord));
00096 validateRead2(samRecord);
00097 assert(inFile.ReadRecord(samHeader, samRecord));
00098 validateRead6(samRecord);
00099 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00100
00101
00102
00103 assert(inFile.SetReadSection(1));
00104 assert(inFile.ReadRecord(samHeader, samRecord));
00105 validateRead5(samRecord);
00106 assert(inFile.ReadRecord(samHeader, samRecord));
00107 validateRead7(samRecord);
00108 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00109
00110
00111 for(int i = 3; i < 23; i++)
00112 {
00113 assert(inFile.SetReadSection(i));
00114 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00115 }
00116
00117
00118
00119 assert(inFile.SetReadSection("1", 1010, 1012));
00120 assert(inFile.ReadRecord(samHeader, samRecord));
00121 validateRead1(samRecord);
00122 assert(inFile.GetNumOverlaps(samRecord) == 2);
00123 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
00124 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
00125 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
00126 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
00127 assert(inFile.ReadRecord(samHeader, samRecord));
00128 validateRead2(samRecord);
00129 assert(inFile.GetNumOverlaps(samRecord) == 0);
00130 assert(samRecord.getNumOverlaps(1010, 1012) == 0);
00131 assert(samRecord.getNumOverlaps(1010, 1020) == 0);
00132 assert(samRecord.getNumOverlaps(1010, 1011) == 0);
00133 assert(samRecord.getNumOverlaps(1011, 1012) == 0);
00134 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00135
00136 assert(inFile.SetReadSection("1", 1010, 1020));
00137 assert(inFile.ReadRecord(samHeader, samRecord));
00138 validateRead1(samRecord);
00139 assert(inFile.GetNumOverlaps(samRecord) == 5);
00140 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
00141 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
00142 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
00143 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
00144 assert(inFile.ReadRecord(samHeader, samRecord));
00145 validateRead2(samRecord);
00146 assert(inFile.GetNumOverlaps(samRecord) == 0);
00147 assert(samRecord.getNumOverlaps(1010, 1012) == 0);
00148 assert(samRecord.getNumOverlaps(1010, 1020) == 0);
00149 assert(samRecord.getNumOverlaps(1010, 1011) == 0);
00150 assert(samRecord.getNumOverlaps(1011, 1012) == 0);
00151 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00152
00153 assert(inFile.SetReadSection("1", 1010, 1011));
00154 assert(inFile.ReadRecord(samHeader, samRecord));
00155 validateRead1(samRecord);
00156 assert(inFile.GetNumOverlaps(samRecord) == 1);
00157 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
00158 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
00159 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
00160 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
00161 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00162
00163 assert(inFile.SetReadSection("1", 1011, 1012));
00164 assert(inFile.ReadRecord(samHeader, samRecord));
00165 validateRead1(samRecord);
00166 assert(inFile.GetNumOverlaps(samRecord) == 1);
00167 assert(samRecord.getNumOverlaps(1010, 1012) == 2);
00168 assert(samRecord.getNumOverlaps(1010, 1020) == 5);
00169 assert(samRecord.getNumOverlaps(1010, 1011) == 1);
00170 assert(samRecord.getNumOverlaps(1011, 1012) == 1);
00171 assert(inFile.ReadRecord(samHeader, samRecord));
00172 validateRead2(samRecord);
00173 assert(inFile.GetNumOverlaps(samRecord) == 0);
00174 assert(samRecord.getNumOverlaps(1010, 1012) == 0);
00175 assert(samRecord.getNumOverlaps(1010, 1020) == 0);
00176 assert(samRecord.getNumOverlaps(1010, 1011) == 0);
00177 assert(samRecord.getNumOverlaps(1011, 1012) == 0);
00178 assert(inFile.ReadRecord(samHeader, samRecord) == false);
00179
00180 }