18 #include "TestSamCoordOutput.h"
19 #include "TestValidate.h"
20 #include "SamCoordOutput.h"
21 #include "SamRecordPool.h"
24 void testSamCoordOutput()
27 SamCoordOutputTest::testSamCoordOutput();
31 void SamCoordOutputTest::testSamCoordOutput()
45 #ifdef __ZLIB_AVAILABLE__
51 validateHeader(samHeader);
54 assert(!outputBuffer.add(rec1));
57 rec1 = pool.getRecord();
58 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
60 rec2 = pool.getRecord();
61 assert(inSam.
ReadRecord(samHeader, *rec2) ==
true);
63 rec3 = pool.getRecord();
64 assert(inSam.
ReadRecord(samHeader, *rec3) ==
true);
66 assert(pool.getRecord() == NULL);
70 assert(outputBuffer.add(rec1));
71 assert(outputBuffer.add(rec2));
72 assert(outputBuffer.add(rec3));
76 assert(!outputBuffer.flush(0, 100));
79 outputBuffer.setOutputFile(&outSam, &samHeader);
82 assert(outSam.
OpenForWrite(
"results/TestSamCoordOutput.sam"));
86 rec1 = pool.getRecord();
87 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
89 assert(outputBuffer.add(rec1));
91 rec1 = pool.getRecord();
96 assert(outputBuffer.flush(0, 1011));
99 rec1 = pool.getRecord();
100 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
101 validateRead5(*rec1);
102 assert(outputBuffer.add(rec1));
104 rec1 = pool.getRecord();
105 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
106 validateRead6(*rec1);
107 assert(outputBuffer.add(rec1));
113 rec1 = pool.getRecord();
114 assert(rec1 != NULL);
117 assert(outputBuffer.flush(0, 1012));
120 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
121 validateRead7(*rec1);
122 assert(outputBuffer.add(rec1));
123 assert(pool.getRecord() == NULL);
126 assert(outputBuffer.flush(0, -1));
129 rec1 = pool.getRecord();
130 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
131 validateRead8(*rec1);
132 assert(outputBuffer.add(rec1));
133 assert(pool.getRecord() == NULL);
136 assert(outputBuffer.flush(2, 0));
139 rec1 = pool.getRecord();
140 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
141 validateRead9(*rec1);
142 assert(outputBuffer.add(rec1));
143 rec1 = pool.getRecord();
144 assert(inSam.
ReadRecord(samHeader, *rec1) ==
true);
145 validateRead10(*rec1);
146 assert(outputBuffer.add(rec1));
147 assert(pool.getRecord() == NULL);
150 assert(outputBuffer.flush(-1, -1));
Class for buffering up output reads to ensure that it is sorted.
Allows the user to easily read/write a SAM/BAM file.
bool ReadHeader(SamFileHeader &header)
Reads the header section from the file and stores it in the passed in header.
bool ReadRecord(SamFileHeader &header, SamRecord &record)
Reads the next record from the file & stores it in the passed in record.
bool OpenForRead(const char *filename, SamFileHeader *header=NULL)
Open a sam/bam file for reading with the specified filename, determing the type of file and SAM/BAM b...
bool OpenForWrite(const char *filename, SamFileHeader *header=NULL)
Open a sam/bam file for writing with the specified filename, determining SAM/BAM from the extension (...
bool WriteHeader(SamFileHeader &header)
Writes the specified header into the file.
Class providing an easy to use interface to get/set/operate on the fields in a SAM/BAM record.