18 #include "ReadFiles.h"
19 #include "TestValidate.h"
34 testFlagRead(
"testFiles/testSam.sam");
48 testFlagRead(
"testFiles/testBam.bam");
57 validateHeader(samHeader);
59 testCopyHeader(samHeader);
61 testModHeader(samHeader);
64 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
65 validateRead1(samRecord);
69 validateRead1ModQuality(samRecord);
72 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
73 validateRead2(samRecord);
75 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
76 validateRead3(samRecord);
78 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
79 validateRead4(samRecord);
81 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
82 validateRead5(samRecord);
84 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
85 validateRead6(samRecord);
87 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
88 validateRead7(samRecord);
90 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
91 validateRead8(samRecord);
93 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
94 validateRead9(samRecord);
96 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
97 validateRead10(samRecord);
101 void testAddHeaderAndTagToFile(
const char* inputName,
const char* outputName)
112 assert(samHeader.
addHeaderLine(
"@RG\tID:myID\tSM:mySM") ==
false);
113 assert(samHeader.
addHeaderLine(
"@RG\tID:myID3\tSM:mySM") ==
true);
119 assert(inSam.
ReadRecord(samHeader, samRecord));
124 assert(samRecord.
addTag(
"RR",
'Z',
"myID1"));
125 assert(samRecord.
addTag(
"RR",
'Z',
"myID2"));
134 assert(inSam.
ReadRecord(samHeader, samRecord));
135 assert(inSam.
ReadRecord(samHeader, samRecord));
142 assert(newMDTag ==
"2T1N0");
143 assert(SamTags::updateMDTag(samRecord, reference));
150 void testValidateSortedRead()
154 assert(inSam.
OpenForRead(
"testFiles/testSam.sam"));
165 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
166 validateRead1(samRecord);
169 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
170 validateRead2(samRecord);
173 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
174 validateRead3(samRecord);
177 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
178 validateRead4(samRecord);
181 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
182 validateRead5(samRecord);
185 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
186 validateRead6(samRecord);
189 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
190 validateRead7(samRecord);
193 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
194 validateRead8(samRecord);
197 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
198 validateRead9(samRecord);
201 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
202 validateRead10(samRecord);
207 assert(inSam.
OpenForRead(
"testFiles/testSam.sam"));
216 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
217 validateRead1(samRecord);
220 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
221 validateRead2(samRecord);
224 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
225 validateRead3(samRecord);
228 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
229 validateRead4(samRecord);
232 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
233 validateRead5(samRecord);
236 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
237 validateRead6(samRecord);
240 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
241 validateRead7(samRecord);
244 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
245 validateRead8(samRecord);
248 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
249 validateRead9(samRecord);
252 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
253 validateRead10(samRecord);
257 assert(inSam.
OpenForRead(
"testFiles/testSam.sam"));
266 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
267 validateRead1(samRecord);
269 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
270 validateRead2(samRecord);
272 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
273 validateRead3(samRecord);
275 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
276 validateRead4(samRecord);
278 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
279 validateRead5(samRecord);
281 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
282 validateRead6(samRecord);
284 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
285 validateRead7(samRecord);
287 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
288 validateRead8(samRecord);
290 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
291 validateRead9(samRecord);
293 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
294 validateRead10(samRecord);
298 assert(inSam.
OpenForRead(
"testFiles/testSamSOcoord.sam"));
307 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
308 validateRead1(samRecord);
311 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
312 validateRead2(samRecord);
315 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
316 validateRead3(samRecord);
319 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
320 validateRead4(samRecord);
323 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
324 validateRead5(samRecord);
327 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
328 validateRead6(samRecord);
331 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
332 validateRead7(samRecord);
335 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
336 validateRead8(samRecord);
339 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
340 validateRead9(samRecord);
343 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
344 validateRead10(samRecord);
349 assert(inSam.
OpenForRead(
"testFiles/testSamSOquery.sam"));
358 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
359 validateRead1(samRecord);
362 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
363 validateRead2(samRecord);
366 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
367 validateRead3(samRecord);
370 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
371 validateRead4(samRecord);
374 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
375 validateRead5(samRecord);
378 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
379 validateRead6(samRecord);
382 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
383 validateRead7(samRecord);
386 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
387 validateRead8(samRecord);
390 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
391 validateRead9(samRecord);
394 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
395 validateRead10(samRecord);
399 assert(inSam.
OpenForRead(
"testFiles/testSamSOinvalid.sam"));
408 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
409 validateRead1(samRecord);
411 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
412 validateRead2(samRecord);
414 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
415 validateRead3(samRecord);
417 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
418 validateRead4(samRecord);
420 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
421 validateRead5(samRecord);
423 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
424 validateRead6(samRecord);
426 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
427 validateRead7(samRecord);
429 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
430 validateRead8(samRecord);
432 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
433 validateRead9(samRecord);
435 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
436 validateRead10(samRecord);
441 void validateRead1ModQuality(
SamRecord& samRecord)
446 int expectedBlockSize = 89;
447 const char* expectedReferenceName =
"1";
448 const char* expectedMateReferenceName =
"1";
449 const char* expectedMateReferenceNameOrEqual =
"=";
458 unsigned char* varPtr;
460 expectedRecordPtr->myBlockSize = expectedBlockSize;
461 expectedRecordPtr->myReferenceID = 0;
462 expectedRecordPtr->myPosition = 1010;
463 expectedRecordPtr->myReadNameLength = 23;
464 expectedRecordPtr->myMapQuality = 0;
465 expectedRecordPtr->myBin = 4681;
466 expectedRecordPtr->myCigarLength = 2;
467 expectedRecordPtr->myFlag = 73;
468 expectedRecordPtr->myReadLength = 5;
469 expectedRecordPtr->myMateReferenceID = 0;
470 expectedRecordPtr->myMatePosition = 1010;
471 expectedRecordPtr->myInsertSize = 0;
483 assert(samRecord.
getBlockSize() == expectedRecordPtr->myBlockSize);
484 assert(samRecord.
getReferenceID() == expectedRecordPtr->myReferenceID);
489 expectedRecordPtr->myReadNameLength);
490 assert(samRecord.
getMapQuality() == expectedRecordPtr->myMapQuality);
491 assert(samRecord.
getBin() == expectedRecordPtr->myBin);
492 assert(samRecord.
getCigarLength() == expectedRecordPtr->myCigarLength);
493 assert(samRecord.
getFlag() == expectedRecordPtr->myFlag);
494 assert(samRecord.
getReadLength() == expectedRecordPtr->myReadLength);
496 expectedRecordPtr->myMateReferenceID);
498 expectedMateReferenceName) == 0);
500 expectedMateReferenceNameOrEqual) == 0);
502 expectedRecordPtr->myMatePosition + 1);
504 expectedRecordPtr->myMatePosition);
505 assert(samRecord.
getInsertSize() == expectedRecordPtr->myInsertSize);
506 assert(strcmp(samRecord.
getReadName(),
"1:1011:F:255+17M15D20M") == 0);
507 assert(strcmp(samRecord.
getCigar(),
"5M2D") == 0);
508 assert(strcmp(samRecord.
getSequence(),
"CCGAA") == 0);
509 assert(strcmp(samRecord.
getQuality(),
"ABCDE") == 0);
523 assert(tag[0] ==
'A');
524 assert(tag[1] ==
'M');
526 assert(*(
char*)value == 0);
528 assert(tag[0] ==
'M');
529 assert(tag[1] ==
'D');
531 assert(*(
String*)value ==
"37");
533 assert(tag[0] ==
'N');
534 assert(tag[1] ==
'M');
536 assert(*(
char*)value == 0);
538 assert(tag[0] ==
'X');
539 assert(tag[1] ==
'T');
541 assert(*(
char*)value ==
'R');
549 assert(bufferPtr->myBlockSize == expectedRecordPtr->myBlockSize);
550 assert(bufferPtr->myReferenceID == expectedRecordPtr->myReferenceID);
551 assert(bufferPtr->myPosition == expectedRecordPtr->myPosition);
552 assert(bufferPtr->myReadNameLength == expectedRecordPtr->myReadNameLength);
553 assert(bufferPtr->myMapQuality == expectedRecordPtr->myMapQuality);
554 assert(bufferPtr->myBin == expectedRecordPtr->myBin);
555 assert(bufferPtr->myCigarLength == expectedRecordPtr->myCigarLength);
556 assert(bufferPtr->myFlag == expectedRecordPtr->myFlag);
557 assert(bufferPtr->myReadLength == expectedRecordPtr->myReadLength);
558 assert(bufferPtr->myMateReferenceID ==
559 expectedRecordPtr->myMateReferenceID);
560 assert(bufferPtr->myMatePosition == expectedRecordPtr->myMatePosition);
561 assert(bufferPtr->myInsertSize == expectedRecordPtr->myInsertSize);
565 varPtr = (
unsigned char*)(&(bufferPtr->myData[0]));
568 for(
int i = 0; i < expectedRecordPtr->myReadNameLength; i++)
576 assert(*(
unsigned int*)varPtr == 80);
580 assert(*(
unsigned int*)varPtr == 34);
586 assert(*varPtr == 0x22);
589 assert(*varPtr == 0x41);
592 assert(*varPtr == 0x10);
596 for(
int i = 0; i < expectedRecordPtr->myReadLength; i++)
598 assert(*varPtr == samRecord.
getQuality()[i] - 33);
603 assert(*varPtr ==
'A');
605 assert(*varPtr ==
'M');
607 assert(*varPtr ==
'C');
609 assert(*varPtr == 0);
611 assert(*varPtr ==
'M');
613 assert(*varPtr ==
'D');
615 assert(*varPtr ==
'Z');
617 assert(*varPtr ==
'3');
619 assert(*varPtr ==
'7');
621 assert(*varPtr == 0);
623 assert(*varPtr ==
'N');
625 assert(*varPtr ==
'M');
627 assert(*varPtr ==
'C');
629 assert(*varPtr == 0);
631 assert(*varPtr ==
'X');
633 assert(*varPtr ==
'T');
635 assert(*varPtr ==
'A');
637 assert(*varPtr ==
'R');
645 std::string headerString =
"";
647 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:11\tLN:134452384\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\tLB:library2\n@CO\tComment 1\n@CO\tComment 2\n");
650 assert(samHeader.
setRGTag(
"LB",
"",
"myID2") ==
true);
655 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:11\tLN:134452384\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@CO\tComment 1\n@CO\tComment 2\n");
659 assert(hd->
setTag(
"VN",
"1.3") ==
true);
660 assert(samHeader.
addHD(hd) ==
true);
663 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:11\tLN:134452384\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@HD\tVN:1.3\n@CO\tComment 1\n@CO\tComment 2\n");
667 assert(hd2->
setTag(
"VN",
"1.4") ==
true);
668 assert(samHeader.
addHD(hd2) ==
false);
672 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:11\tLN:134452384\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@HD\tVN:1.3\n@CO\tComment 1\n@CO\tComment 2\n");
675 assert(samHeader.
removeHD() ==
true);
678 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:11\tLN:134452384\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@CO\tComment 1\n@CO\tComment 2\n");
681 assert(strcmp(samHeader.
getSQTagValue(
"LN",
"11"),
"134452384") == 0);
682 assert(samHeader.
removeSQ(
"11") ==
true);
683 assert(strcmp(samHeader.
getSQTagValue(
"LN",
"11"),
"") == 0);
685 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@CO\tComment 1\n@CO\tComment 2\n");
689 assert(samHeader.
addHD(hd) ==
false);
694 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@CO\tComment 1\n@CO\tComment 2\n");
698 assert(samHeader.
addSQ(sq) ==
false);
700 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@CO\tComment 1\n@CO\tComment 2\n");
703 assert(samHeader.
addHD(hd2) ==
true);
707 assert(headerString ==
"@SQ\tSN:1\tLN:247249719\n@SQ\tSN:2\tLN:242951149\n@SQ\tSN:3\tLN:199501827\n@SQ\tSN:4\tLN:191273063\n@SQ\tSN:5\tLN:180857866\n@SQ\tSN:6\tLN:170899992\n@SQ\tSN:7\tLN:158821424\n@SQ\tSN:8\tLN:146274826\n@SQ\tSN:9\tLN:140273252\n@SQ\tSN:10\tLN:135374737\n@SQ\tSN:12\tLN:132349534\n@SQ\tSN:13\tLN:114142980\n@SQ\tSN:14\tLN:106368585\n@SQ\tSN:15\tLN:100338915\n@SQ\tSN:16\tLN:88827254\n@SQ\tSN:17\tLN:78774742\n@SQ\tSN:18\tLN:76117153\n@SQ\tSN:19\tLN:63811651\n@SQ\tSN:20\tLN:62435964\n@SQ\tSN:21\tLN:46944323\n@SQ\tSN:22\tLN:49691432\n@SQ\tSN:X\tLN:154913754\n@RG\tID:myID\tLB:library\tSM:sample\n@RG\tID:myID2\tSM:sample2\n@HD\tVN:1.4\n@CO\tComment 1\n@CO\tComment 2\n");
716 void testFlagRead(
const char* fileName)
727 validateHeader(samHeader);
730 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
731 validateRead1(samRecord);
733 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
742 validateHeader(samHeader);
745 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
746 validateRead2(samRecord);
748 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
758 validateHeader(samHeader);
761 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
771 validateHeader(samHeader);
774 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
775 validateRead2(samRecord);
777 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
787 validateHeader(samHeader);
790 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
791 validateRead2(samRecord);
793 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
794 validateRead8(samRecord);
796 assert(inSam.
ReadRecord(samHeader, samRecord) ==
true);
797 validateRead10(samRecord);
799 assert(inSam.
ReadRecord(samHeader, samRecord) ==
false);
811 while(recPtr != NULL)
818 while(nextComment != SamFileHeader::EMPTY_RETURN)
824 validateHeader(samHeader2);