00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "SamFile.h"
00019 #include "WriteFiles.h"
00020 #include "Validate.h"
00021
00022 #include <assert.h>
00023 #include <stdio.h>
00024
00025 void testWrite()
00026 {
00027 testHeaderWrite();
00028 testWriteCopiedHeader();
00029 }
00030
00031 void testHeaderWrite()
00032 {
00033 SamFile samOut;
00034
00035 samOut.OpenForWrite("results/MyTestOut.sam");
00036
00037
00038 SamFileHeader samHeader;
00039
00040 std::string headerString = "";
00041
00042
00043 assert(samHeader.getHD() == NULL);
00044 assert(samHeader.getPG("1") == NULL);
00045 assert(strcmp(samHeader.getTagSO(), "") == 0);
00046
00047
00048 assert(samHeader.removeHD() == true);
00049 assert(samHeader.getHD() == NULL);
00050 assert(strcmp(samHeader.getHDTagValue("VN"), "") == 0);
00051 assert(samHeader.getHeaderString(headerString) == true);
00052 assert(headerString == "");
00053
00054 char type[3] = "HD";
00055 char tag[3] = "VN";
00056
00057 assert(strcmp(samHeader.getHDTagValue("VN"), "") == 0);
00058 assert(samHeader.addHeaderLine(type, tag, "1.0") == true);
00059 assert(samHeader.getHeaderString(headerString) == true);
00060 assert(headerString == "@HD\tVN:1.0\n");
00061
00062
00063 assert(strcmp(samHeader.getHDTagValue("VN"), "1.0") == 0);
00064
00065 type[0] = 'S';
00066 type[1] = 'Q';
00067 tag[0] = 'L';
00068 tag[1] = 'N';
00069
00070 assert(samHeader.addHeaderLine(type, tag, "123") == false);
00071 assert(samHeader.getHeaderString(headerString) == true);
00072 assert(headerString == "@HD\tVN:1.0\n");
00073
00074
00075 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "") == 0);
00076
00077
00078 std::string line = "@SQ\tSN:123";
00079 assert(samHeader.addHeaderLine(line.c_str()) == false);
00080 assert(samHeader.getHeaderString(headerString) == true);
00081 assert(headerString == "@HD\tVN:1.0\n");
00082
00083
00084 line = "@SQ\tLN:123\tSN:chr20";
00085 assert(samHeader.addHeaderLine(line.c_str()) == true);
00086 assert(samHeader.getHeaderString(headerString) == true);
00087 assert(headerString == "@HD\tVN:1.0\n@SQ\tLN:123\tSN:chr20\n");
00088
00089 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00090
00091
00092 samHeader = samHeader;
00093 assert(samHeader.addHeaderLine(line.c_str()) == false);
00094 assert(samHeader.getHeaderString(headerString) == true);
00095 assert(headerString == "@HD\tVN:1.0\n@SQ\tLN:123\tSN:chr20\n");
00096
00097 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00098
00099 samHeader.copy(samHeader);
00100 assert(samHeader.addHeaderLine(line.c_str()) == false);
00101 assert(samHeader.getHeaderString(headerString) == true);
00102 assert(headerString == "@HD\tVN:1.0\n@SQ\tLN:123\tSN:chr20\n");
00103
00104 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00105
00106
00107 assert(samHeader.addHeaderLine("@HD\tVN:1.1") == false);
00108 assert(samHeader.getHeaderString(headerString) == true);
00109 assert(headerString == "@HD\tVN:1.0\n@SQ\tLN:123\tSN:chr20\n");
00110
00111 assert(strcmp(samHeader.getHDTagValue("VN"), "1.0") == 0);
00112
00113
00114 SamFileHeader newHeader = samHeader;
00115 assert(newHeader.getHeaderString(headerString) == true);
00116 assert(headerString == "@HD\tVN:1.0\n@SQ\tLN:123\tSN:chr20\n");
00117
00118 assert(strcmp(newHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00119
00120
00121
00122 assert(samHeader.setHDTag("VN", "1.1") == true);
00123 assert(samHeader.getHeaderString(headerString) == true);
00124 assert(headerString == "@HD\tVN:1.1\n@SQ\tLN:123\tSN:chr20\n");
00125
00126 assert(strcmp(samHeader.getHDTagValue("VN"), "1.1") == 0);
00127
00128
00129 assert(samHeader.setHDTag("VN", "") == true);
00130 assert(samHeader.getHeaderString(headerString) == true);
00131 assert(headerString == "@SQ\tLN:123\tSN:chr20\n");
00132
00133 assert(strcmp(samHeader.getHDTagValue("VN"), "") == 0);
00134
00135
00136 assert(samHeader.setSQTag("SN", "", "chr20") == false);
00137 assert(samHeader.getHeaderString(headerString) == true);
00138 assert(headerString == "@SQ\tLN:123\tSN:chr20\n");
00139
00140 assert(strcmp(samHeader.getSQTagValue("SN", "chr20"), "chr20") == 0);
00141 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00142
00143
00144 assert(samHeader.setSQTag("LN", "", "chr20") == true);
00145 assert(samHeader.getHeaderString(headerString) == true);
00146
00147 assert(headerString == "");
00148
00149 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "") == 0);
00150 assert(strcmp(samHeader.getSQTagValue("SN", "chr20"), "chr20") == 0);
00151
00152
00153 assert(samHeader.setSQTag("LN", "124", "chr20") == true);
00154 assert(samHeader.getHeaderString(headerString) == true);
00155 assert(headerString == "@SQ\tLN:124\tSN:chr20\n");
00156
00157 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "124") == 0);
00158 assert(strcmp(samHeader.getSQTagValue("SN", "chr20"), "chr20") == 0);
00159
00160
00161 assert(samHeader.removeSQ("chr20") == true);
00162
00163 assert(samHeader.getHeaderString(headerString) == true);
00164 assert(headerString == "");
00165
00166 assert(strcmp(samHeader.getSQTagValue("SN", "chr20"), "") == 0);
00167 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "") == 0);
00168
00169
00170 SamHeaderSQ* sq = new SamHeaderSQ();
00171 assert(sq->setTag("LN", "123") == true);
00172 assert(sq->setTag("SN", "chr20") == true);
00173 assert(samHeader.addSQ(sq) == true);
00174 assert(samHeader.getHeaderString(headerString) == true);
00175 assert(headerString == "@SQ\tLN:123\tSN:chr20\n");
00176
00177 assert(strcmp(samHeader.getSQTagValue("SN", "chr20"), "chr20") == 0);
00178 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00179
00180
00181 assert(sq->setTag("LN", "222") == true);
00182 assert(samHeader.getHeaderString(headerString) == true);
00183 assert(headerString == "@SQ\tLN:222\tSN:chr20\n");
00184
00185 assert(strcmp(samHeader.getSQTagValue("SN", "chr20"), "chr20") == 0);
00186 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "222") == 0);
00187
00188
00189
00190 SamHeaderSQ* sq2 = new SamHeaderSQ();
00191 assert(sq2->setTag("LN", "333") == true);
00192 assert(sq2->setTag("SN", "chr20") == true);
00193 assert(samHeader.addSQ(sq2) == false);
00194 assert(samHeader.getHeaderString(headerString) == true);
00195 assert(headerString == "@SQ\tLN:222\tSN:chr20\n");
00196
00197 assert(strcmp(samHeader.getSQTagValue("SN", "chr20"), "chr20") == 0);
00198 assert(strcmp(samHeader.getSQTagValue("LN", "chr20"), "222") == 0);
00199 delete sq2;
00200
00201
00202 assert(samHeader.setSQTag("AS", "HG18", "chr20") == true);
00203 assert(samHeader.getHeaderString(headerString) == true);
00204 assert(headerString == "@SQ\tLN:222\tSN:chr20\tAS:HG18\n");
00205
00206 assert(strcmp(samHeader.getSQTagValue("AS", "chr20"), "HG18") == 0);
00207
00208
00209 assert(samHeader.setSQTag("AS", "HG19", "chr20") == true);
00210 assert(samHeader.getHeaderString(headerString) == true);
00211 assert(headerString == "@SQ\tLN:222\tSN:chr20\tAS:HG19\n");
00212
00213 assert(strcmp(samHeader.getSQTagValue("AS", "chr20"), "HG19") == 0);
00214
00215
00216 sq2 = new SamHeaderSQ();
00217 assert(sq2->setTag("LN", "333") == true);
00218 assert(sq2->setTag("SN", "chr1") == true);
00219 assert(samHeader.addSQ(sq2) == true);
00220 assert(samHeader.getHeaderString(headerString) == true);
00221 assert(headerString ==
00222 "@SQ\tLN:222\tSN:chr20\tAS:HG19\n@SQ\tLN:333\tSN:chr1\n");
00223
00224 assert(strcmp(samHeader.getSQTagValue("SN", "chr1"), "chr1") == 0);
00225 assert(strcmp(samHeader.getSQTagValue("LN", "chr1"), "333") == 0);
00226
00227
00228 assert(samHeader.removeSQ("chr100") == true);
00229 assert(samHeader.getHeaderString(headerString) == true);
00230 assert(headerString ==
00231 "@SQ\tLN:222\tSN:chr20\tAS:HG19\n@SQ\tLN:333\tSN:chr1\n");
00232
00233
00234 sq2->reset();
00235
00236 assert(samHeader.getHeaderString(headerString) == true);
00237 assert(headerString == "@SQ\tLN:222\tSN:chr20\tAS:HG19\n");
00238 assert(strcmp(samHeader.getSQTagValue("SN", "chr1"), "") == 0);
00239 assert(strcmp(samHeader.getSQTagValue("LN", "chr1"), "") == 0);
00240
00241
00242
00243
00244 SamHeaderHD* hd = samHeader.getHD();
00245 assert(hd != NULL);
00246
00247 assert(strcmp(samHeader.getTagSO(), "") == 0);
00248
00249
00250 assert(hd->setTag("VN", "2.1") == true);
00251
00252 assert(samHeader.getHeaderString(headerString) == true);
00253 assert(headerString == "@HD\tVN:2.1\n@SQ\tLN:222\tSN:chr20\tAS:HG19\n");
00254 assert(strcmp(samHeader.getHDTagValue("VN"), "2.1") == 0);
00255
00256
00257 assert(hd->setTag("SO", "coordinate") == true);
00258
00259 assert(samHeader.getHeaderString(headerString) == true);
00260 assert(headerString ==
00261 "@HD\tVN:2.1\tSO:coordinate\n@SQ\tLN:222\tSN:chr20\tAS:HG19\n");
00262 assert(strcmp(samHeader.getHDTagValue("SO"), "coordinate") == 0);
00263
00264
00265 samHeader.resetHeader();
00266 assert(samHeader.getHeaderString(headerString) == true);
00267 assert(headerString == "");
00268
00269
00270 assert(samHeader.setHDTag("SO", "queryname") == true);
00271 assert(strcmp(samHeader.getHDTagValue("SO"), "queryname") == 0);
00272 assert(samHeader.getHeaderString(headerString) == true);
00273
00274 assert(headerString == "");
00275
00276
00277 assert(samHeader.setHDTag("VN", "3.1") == true);
00278 assert(strcmp(samHeader.getHDTagValue("SO"), "queryname") == 0);
00279 assert(strcmp(samHeader.getHDTagValue("VN"), "3.1") == 0);
00280 assert(samHeader.getHeaderString(headerString) == true);
00281 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n");
00282
00283
00284
00285 assert(samHeader.removePG("1") == true);
00286 assert(samHeader.getHeaderString(headerString) == true);
00287 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n");
00288
00289
00290 SamHeaderPG* pg = NULL;
00291 assert(samHeader.addPG(pg) == false);
00292 assert(samHeader.getHeaderString(headerString) == true);
00293 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n");
00294
00295
00296 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "") == 0);
00297 assert(samHeader.setPGTag("ID", "pid", "pid") == true);
00298 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "pid") == 0);
00299 assert(samHeader.getHeaderString(headerString) == true);
00300 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\n");
00301
00302
00303 assert(samHeader.setPGTag("ID", "pid1", "pid") == false);
00304 assert(samHeader.getHeaderString(headerString) == true);
00305 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\n");
00306 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "pid") == 0);
00307
00308
00309 pg = NULL;
00310 assert(samHeader.addPG(pg) == false);
00311 assert(samHeader.getHeaderString(headerString) == true);
00312 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\n");
00313
00314
00315 pg = new SamHeaderPG();
00316 assert(pg->setTag("ID", "pid") == true);
00317 assert(samHeader.addPG(pg) == false);
00318 assert(samHeader.getHeaderString(headerString) == true);
00319 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\n");
00320 delete pg;
00321
00322
00323 pg = samHeader.getPG("pid1");
00324 assert(pg == NULL);
00325
00326
00327 assert(strcmp(samHeader.getPGTagValue("CL", "pid"), "") == 0);
00328
00329
00330 pg = samHeader.getPG("pid");
00331 assert(pg != NULL);
00332 assert(strcmp(pg->getTagValue("ID"), "pid") == 0);
00333
00334 assert(pg->setTag("VN", "pg1") == true);
00335 assert(strcmp(samHeader.getPGTagValue("VN", "pid"), "pg1") == 0);
00336 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "pid") == 0);
00337 assert(samHeader.getHeaderString(headerString) == true);
00338 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\tVN:pg1\n");
00339
00340
00341 assert(pg->setTag("ID", "pid1") == false);
00342 assert(strcmp(samHeader.getPGTagValue("VN", "pid"), "pg1") == 0);
00343 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "pid") == 0);
00344 assert(samHeader.getHeaderString(headerString) == true);
00345 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\tVN:pg1\n");
00346
00347
00348 assert(samHeader.setPGTag("VN", "pg", "pid") == true);
00349 assert(strcmp(samHeader.getPGTagValue("VN", "pid"), "pg") == 0);
00350 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "pid") == 0);
00351 assert(samHeader.getHeaderString(headerString) == true);
00352 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\tVN:pg\n");
00353
00354
00355 assert(pg->setTag("VN", "") == true);
00356 assert(strcmp(samHeader.getPGTagValue("VN", "pid"), "") == 0);
00357 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "pid") == 0);
00358 assert(samHeader.getHeaderString(headerString) == true);
00359 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\n");
00360
00361
00362 assert(samHeader.removePG("pid1") == true);
00363 assert(samHeader.getHeaderString(headerString) == true);
00364 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:pid\n");
00365 assert(strcmp(samHeader.getPGTagValue("VN", "pid"), "") == 0);
00366 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "pid") == 0);
00367
00368
00369 assert(samHeader.removePG("pid") == true);
00370 assert(samHeader.getHeaderString(headerString) == true);
00371 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n");
00372 assert(strcmp(samHeader.getPGTagValue("VN", "pid"), "") == 0);
00373 assert(strcmp(samHeader.getPGTagValue("ID", "pid"), "") == 0);
00374
00375
00376 pg = new SamHeaderPG();
00377 assert(pg->setTag("ID", "newID") == true);
00378 assert(samHeader.addPG(pg) == true);
00379 assert(samHeader.getHeaderString(headerString) == true);
00380 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00381
00382
00383 assert(samHeader.addHeaderLine("@PG\tID:newID") == false);
00384 assert(samHeader.getHeaderString(headerString) == true);
00385 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00386
00387 assert(strcmp(samHeader.getPGTagValue("ID", "newID"), "newID") == 0);
00388
00389
00390 pg = new SamHeaderPG();
00391 assert(pg->setTag("ID", "newID1") == true);
00392 assert(samHeader.addPG(pg) == true);
00393 assert(samHeader.getHeaderString(headerString) == true);
00394 assert(headerString ==
00395 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@PG\tID:newID1\n");
00396
00397
00398 pg = new SamHeaderPG();
00399 assert(pg->setTag("ID", "pid") == true);
00400 assert(samHeader.addPG(pg) == true);
00401 assert(samHeader.getHeaderString(headerString) == true);
00402 assert(headerString ==
00403 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@PG\tID:newID1\n@PG\tID:pid\n");
00404
00405
00406 assert(samHeader.removePG("newID1") == true);
00407 assert(samHeader.getHeaderString(headerString) == true);
00408 assert(headerString ==
00409 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@PG\tID:pid\n");
00410
00411
00412 assert(samHeader.removePG("pid") == true);
00413 assert(samHeader.getHeaderString(headerString) == true);
00414 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00415
00416
00417 assert(samHeader.setPGTag("VN", "1.0", "newID") == true);
00418 assert(strcmp(samHeader.getPGTagValue("VN", "newID"), "1.0") == 0);
00419 assert(strcmp(samHeader.getPGTagValue("ID", "newID"), "newID") == 0);
00420 assert(samHeader.getHeaderString(headerString) == true);
00421 assert(headerString ==
00422 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\tVN:1.0\n");
00423
00424
00425 assert(samHeader.setPGTag("VN", "", "newID") == true);
00426 assert(strcmp(samHeader.getPGTagValue("VN", "newID"), "") == 0);
00427 assert(strcmp(samHeader.getPGTagValue("ID", "newID"), "newID") == 0);
00428 assert(samHeader.getHeaderString(headerString) == true);
00429 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00430
00431
00432
00433 assert(samHeader.setSQTag("AS", "HG18", "newName") == true);
00434 assert(samHeader.getHeaderString(headerString) == true);
00435
00436 assert(headerString ==
00437 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00438 assert(strcmp(samHeader.getSQTagValue("AS", "newName"), "HG18") == 0);
00439 assert(strcmp(samHeader.getSQTagValue("SN", "newName"), "newName") == 0);
00440
00441 assert(samHeader.setSQTag("SN", "newName", "newName") == true);
00442 assert(samHeader.getHeaderString(headerString) == true);
00443
00444 assert(headerString ==
00445 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00446 assert(strcmp(samHeader.getSQTagValue("SN", "newName"), "newName") == 0);
00447 assert(strcmp(samHeader.getSQTagValue("AS", "newName"), "HG18") == 0);
00448
00449 sq = samHeader.getSQ("newName");
00450 assert(sq != NULL);
00451
00452 assert(sq->setTag("LN", "111") == true);
00453 assert(strcmp(samHeader.getSQTagValue("SN", "newName"), "newName") == 0);
00454 assert(strcmp(samHeader.getSQTagValue("AS", "newName"), "HG18") == 0);
00455 assert(strcmp(samHeader.getSQTagValue("LN", "newName"), "111") == 0);
00456 assert(samHeader.getHeaderString(headerString) == true);
00457 assert(headerString ==
00458 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00459
00460
00461
00462 assert(samHeader.setRGTag("ID", "rgID", "rgID") == true);
00463 assert(samHeader.getHeaderString(headerString) == true);
00464
00465 assert(headerString ==
00466 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00467 assert(strcmp(samHeader.getRGTagValue("ID", "rgID"), "rgID") == 0);
00468
00469
00470 assert(samHeader.setRGTag("SM", "sm1", "rgID") == true);
00471 assert(samHeader.getHeaderString(headerString) == true);
00472 assert(headerString ==
00473 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n");
00474 assert(strcmp(samHeader.getRGTagValue("ID", "rgID"), "rgID") == 0);
00475
00476
00477 assert(samHeader.setRGTag("ID", "rgID1", "rgID") == false);
00478 assert(samHeader.getHeaderString(headerString) == true);
00479 assert(headerString ==
00480 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n");
00481 assert(strcmp(samHeader.getRGTagValue("ID", "rgID"), "rgID") == 0);
00482
00483
00484 assert(newHeader.getHeaderString(headerString) == true);
00485 assert(headerString == "@HD\tVN:1.0\n@SQ\tLN:123\tSN:chr20\n");
00486
00487 assert(strcmp(newHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00488
00489
00490 assert(samHeader.setRGTag("SM", "sample1", "rgID1") == true);
00491 assert(samHeader.getHeaderString(headerString) == true);
00492
00493 assert(headerString ==
00494 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n");
00495 assert(strcmp(samHeader.getRGTagValue("ID", "rgID1"), "rgID1") == 0);
00496 assert(strcmp(samHeader.getRGTagValue("SM", "rgID1"), "sample1") == 0);
00497
00498
00499 assert(samHeader.setRGTag("SM", "sample", "rgID1") == true);
00500 assert(samHeader.getHeaderString(headerString) == true);
00501 assert(headerString ==
00502 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00503 assert(strcmp(samHeader.getRGTagValue("ID", "rgID1"), "rgID1") == 0);
00504 assert(strcmp(samHeader.getRGTagValue("SM", "rgID1"), "sample") == 0);
00505
00506
00507 assert(samHeader.removeRG("rgID2") == true);
00508 assert(samHeader.getHeaderString(headerString) == true);
00509 assert(headerString ==
00510 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00511
00512
00513 SamHeaderRG* rg = new SamHeaderRG();
00514
00515 assert(samHeader.addRG(rg) == false);
00516 assert(samHeader.getHeaderString(headerString) == true);
00517 assert(headerString ==
00518 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00519
00520 assert(rg->setTag("ID", "rgID2") == true);
00521 assert(rg->setTag("SM", "sm2") == true);
00522 assert(samHeader.getHeaderString(headerString) == true);
00523 assert(headerString ==
00524 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00525
00526 assert(samHeader.addRG(rg) == true);
00527 assert(samHeader.getHeaderString(headerString) == true);
00528 assert(headerString ==
00529 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n@RG\tID:rgID2\tSM:sm2\n");
00530 assert(strcmp(samHeader.getRGTagValue("ID", "rgID2"), "rgID2") == 0);
00531
00532
00533 rg = new SamHeaderRG();
00534 assert(rg->setTag("ID", "rgID2") == true);
00535 assert(samHeader.addRG(rg) == false);
00536 assert(samHeader.getHeaderString(headerString) == true);
00537 assert(headerString ==
00538 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n@RG\tID:rgID2\tSM:sm2\n");
00539
00540
00541
00542 assert(samHeader.removeRG("rgID2") == true);
00543 assert(samHeader.getHeaderString(headerString) == true);
00544 assert(headerString ==
00545 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00546
00547
00548 assert(strcmp(samHeader.getRGTagValue("DS", "rgID"), "") == 0);
00549 assert(samHeader.getHeaderString(headerString) == true);
00550 assert(headerString ==
00551 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00552
00553
00554 assert(strcmp(samHeader.getRGTagValue("ID", "rgID2"), "") == 0);
00555 assert(samHeader.getHeaderString(headerString) == true);
00556 assert(headerString ==
00557 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00558
00559
00560 assert(strcmp(samHeader.getRGTagValue("ID", "rgID22"), "") == 0);
00561 assert(samHeader.getHeaderString(headerString) == true);
00562 assert(headerString ==
00563 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00564
00565
00566 rg = NULL;
00567 assert(samHeader.addRG(rg) == false);
00568 assert(samHeader.getHeaderString(headerString) == true);
00569 assert(headerString ==
00570 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n");
00571
00572
00573 rg = new SamHeaderRG();
00574 assert(rg->setTag("ID", "rgID2") == true);
00575 assert(rg->setTag("SM", "sm2") == true);
00576 assert(samHeader.addRG(rg) == true);
00577 assert(samHeader.getHeaderString(headerString) == true);
00578 assert(headerString ==
00579 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n@RG\tID:rgID2\tSM:sm2\n");
00580
00581
00582 assert(samHeader.addHeaderLine("@RG\tID:rgID\tSM:sm5") == false);
00583 assert(samHeader.getHeaderString(headerString) == true);
00584 assert(headerString == "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample\n@RG\tID:rgID2\tSM:sm2\n");
00585
00586 assert(strcmp(samHeader.getRGTagValue("SM", "rgID"), "sm1") == 0);
00587
00588
00589
00590 rg = samHeader.getRG("rgID1");
00591 assert(rg != NULL);
00592 assert(rg->setTag("SM", "sample1") == true);
00593 assert(samHeader.getHeaderString(headerString) == true);
00594 assert(headerString ==
00595 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n");
00596
00597
00598 assert(rg->setTag("ID", "rgID111") == false);
00599 assert(samHeader.getHeaderString(headerString) == true);
00600 assert(headerString ==
00601 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n");
00602
00603
00604
00605 assert(strcmp(samHeader.getNextComment(), "") == 0);
00606 assert(samHeader.getHeaderString(headerString) == true);
00607 assert(headerString ==
00608 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n");
00609
00610
00611 const char* hdrlinechar;
00612 std::string hdrline;
00613 assert(samHeader.getNextHeaderLine(hdrline));
00614 hdrlinechar = hdrline.c_str();
00615
00616 std::string tmpString = "@SQ\tSN:queryname\tVN:3.1\n";
00617 assert(hdrline == "@HD\tSO:queryname\tVN:3.1\n");
00618 assert(strcmp(hdrlinechar,
00619 "@HD\tSO:queryname\tVN:3.1\n") == 0);
00620
00621 assert(samHeader.getNextHeaderLine(hdrline));
00622 assert(hdrline == "@PG\tID:newID\n");
00623 assert(samHeader.getNextHeaderLine(hdrline));
00624 assert(hdrline == "@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00625 assert(samHeader.getNextHeaderLine(hdrline));
00626 assert(hdrline == "@RG\tID:rgID\tSM:sm1\n");
00627 assert(samHeader.getNextHeaderLine(hdrline));
00628 assert(hdrline == "@RG\tID:rgID1\tSM:sample1\n");
00629 assert(samHeader.getNextHeaderLine(hdrline));
00630 assert(hdrline == "@RG\tID:rgID2\tSM:sm2\n");
00631 assert(!samHeader.getNextHeaderLine(hdrline));
00632 assert(hdrline == "");
00633 assert(!samHeader.getNextHeaderLine(hdrline));
00634 assert(hdrline == "");
00635 assert(samHeader.getHeaderString(headerString) == true);
00636 assert(headerString ==
00637 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n");
00638
00639
00640 assert(samHeader.getNextHeaderRecord() == NULL);
00641
00642
00643 samHeader.resetHeaderRecordIter();
00644
00645
00646 SamHeaderRecord* hdrRec = samHeader.getNextHeaderRecord();
00647 assert(hdrRec != NULL);
00648 assert(strcmp(hdrRec->getTypeString(), "HD") == 0);
00649 assert(hdrRec->getType() == SamHeaderRecord::HD);
00650 assert(strcmp(hdrRec->getTagValue("SO"), "queryname") == 0);
00651 assert(strcmp(hdrRec->getTagValue("VN"), "3.1") == 0);
00652 hdrRec = samHeader.getNextHeaderRecord();
00653 assert(hdrRec != NULL);
00654 assert(strcmp(hdrRec->getTypeString(), "PG") == 0);
00655 assert(hdrRec->getType() == SamHeaderRecord::PG);
00656 assert(strcmp(hdrRec->getTagValue("ID"), "newID") == 0);
00657 hdrRec = samHeader.getNextHeaderRecord();
00658 assert(hdrRec != NULL);
00659 assert(strcmp(hdrRec->getTypeString(), "SQ") == 0);
00660 assert(hdrRec->getType() == SamHeaderRecord::SQ);
00661 assert(strcmp(hdrRec->getTagValue("SN"), "newName") == 0);
00662 assert(strcmp(hdrRec->getTagValue("AS"), "HG18") == 0);
00663 assert(strcmp(hdrRec->getTagValue("LN"), "111") == 0);
00664 hdrRec = samHeader.getNextHeaderRecord();
00665 assert(hdrRec != NULL);
00666 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00667 assert(hdrRec->getType() == SamHeaderRecord::RG);
00668 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00669 assert(strcmp(hdrRec->getTagValue("SM"), "sm1") == 0);
00670
00671
00672
00673 hdrRec = samHeader.getNextSQRecord();
00674 assert(hdrRec != NULL);
00675 assert(strcmp(hdrRec->getTypeString(), "SQ") == 0);
00676 assert(hdrRec->getType() == SamHeaderRecord::SQ);
00677 assert(strcmp(hdrRec->getTagValue("SN"), "newName") == 0);
00678 assert(strcmp(hdrRec->getTagValue("AS"), "HG18") == 0);
00679 assert(strcmp(hdrRec->getTagValue("LN"), "111") == 0);
00680
00681 hdrRec = samHeader.getNextSQRecord();
00682 assert(hdrRec == NULL);
00683
00684
00685
00686 hdrRec = samHeader.getNextRGRecord();
00687 assert(hdrRec != NULL);
00688 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00689 assert(hdrRec->getType() == SamHeaderRecord::RG);
00690 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00691 assert(strcmp(hdrRec->getTagValue("SM"), "sm1") == 0);
00692
00693 hdrRec = samHeader.getNextRGRecord();
00694 assert(hdrRec != NULL);
00695 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00696 assert(hdrRec->getType() == SamHeaderRecord::RG);
00697 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00698 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00699
00700 hdrRec = samHeader.getNextPGRecord();
00701 assert(hdrRec != NULL);
00702 assert(strcmp(hdrRec->getTypeString(), "PG") == 0);
00703 assert(hdrRec->getType() == SamHeaderRecord::PG);
00704 assert(strcmp(hdrRec->getTagValue("ID"), "newID") == 0);
00705
00706 hdrRec = samHeader.getNextRGRecord();
00707 assert(hdrRec != NULL);
00708 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00709 assert(hdrRec->getType() == SamHeaderRecord::RG);
00710 assert(strcmp(hdrRec->getTagValue("ID"), "rgID2") == 0);
00711 assert(strcmp(hdrRec->getTagValue("SM"), "sm2") == 0);
00712
00713 hdrRec = samHeader.getNextRGRecord();
00714 assert(hdrRec == NULL);
00715
00716 samHeader.resetRGRecordIter();
00717
00718 hdrRec = samHeader.getNextRGRecord();
00719 assert(hdrRec != NULL);
00720 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00721 assert(hdrRec->getType() == SamHeaderRecord::RG);
00722 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00723 assert(strcmp(hdrRec->getTagValue("SM"), "sm1") == 0);
00724
00725 hdrRec = samHeader.getNextPGRecord();
00726 assert(hdrRec == NULL);
00727
00728 hdrRec = samHeader.getNextSQRecord();
00729 assert(hdrRec == NULL);
00730
00731 samHeader.resetSQRecordIter();
00732
00733 hdrRec = samHeader.getNextPGRecord();
00734 assert(hdrRec == NULL);
00735
00736 hdrRec = samHeader.getNextSQRecord();
00737 assert(hdrRec != NULL);
00738 assert(strcmp(hdrRec->getTypeString(), "SQ") == 0);
00739 assert(hdrRec->getType() == SamHeaderRecord::SQ);
00740 assert(strcmp(hdrRec->getTagValue("SN"), "newName") == 0);
00741 assert(strcmp(hdrRec->getTagValue("AS"), "HG18") == 0);
00742 assert(strcmp(hdrRec->getTagValue("LN"), "111") == 0);
00743
00744 hdrRec = samHeader.getNextSQRecord();
00745 assert(hdrRec == NULL);
00746
00747 samHeader.resetPGRecordIter();
00748
00749 hdrRec = samHeader.getNextSQRecord();
00750 assert(hdrRec == NULL);
00751
00752 hdrRec = samHeader.getNextRGRecord();
00753 assert(hdrRec != NULL);
00754 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00755 assert(hdrRec->getType() == SamHeaderRecord::RG);
00756 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00757 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00758
00759 hdrRec = samHeader.getNextPGRecord();
00760 assert(hdrRec != NULL);
00761 assert(strcmp(hdrRec->getTypeString(), "PG") == 0);
00762 assert(hdrRec->getType() == SamHeaderRecord::PG);
00763 assert(strcmp(hdrRec->getTagValue("ID"), "newID") == 0);
00764
00765
00766 hdrRec = samHeader.getNextHeaderRecord();
00767 assert(hdrRec != NULL);
00768 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00769 assert(hdrRec->getType() == SamHeaderRecord::RG);
00770 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00771 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00772 hdrRec = samHeader.getNextHeaderRecord();
00773 assert(hdrRec != NULL);
00774 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00775 assert(hdrRec->getType() == SamHeaderRecord::RG);
00776 assert(strcmp(hdrRec->getTagValue("ID"), "rgID2") == 0);
00777 assert(strcmp(hdrRec->getTagValue("SM"), "sm2") == 0);
00778 hdrRec = samHeader.getNextHeaderRecord();
00779 assert(hdrRec == NULL);
00780 hdrRec = samHeader.getNextHeaderRecord();
00781 assert(hdrRec == NULL);
00782 assert(!samHeader.getNextHeaderLine(hdrline));
00783 assert(hdrline == "");
00784 assert(!samHeader.getNextHeaderLine(hdrline));
00785 assert(hdrline == "");
00786
00787 assert(samHeader.getHeaderString(headerString) == true);
00788 assert(headerString ==
00789 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n");
00790
00791
00792 assert(samHeader.addComment("My Comment") == true);
00793 assert(samHeader.getHeaderString(headerString) == true);
00794 assert(headerString ==
00795 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n@CO\tMy Comment\n");
00796
00797
00798 hdrRec = samHeader.getNextHeaderRecord();
00799 assert(hdrRec == NULL);
00800
00801
00802 assert(samHeader.getNextHeaderLine(hdrline));
00803 assert(hdrline == "@CO\tMy Comment\n");
00804 assert(!samHeader.getNextHeaderLine(hdrline));
00805 assert(hdrline == "");
00806 assert(!samHeader.getNextHeaderLine(hdrline));
00807 assert(hdrline == "");
00808
00809
00810 assert(strcmp(samHeader.getNextComment(), "My Comment") == 0);
00811 assert(strcmp(samHeader.getNextComment(), "") == 0);
00812 assert(strcmp(samHeader.getNextComment(), "") == 0);
00813
00814
00815 assert(samHeader.addComment("My Comment2") == true);
00816 assert(samHeader.getHeaderString(headerString) == true);
00817 assert(headerString ==
00818 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n@CO\tMy Comment\n@CO\tMy Comment2\n");
00819
00820 newHeader = samHeader;
00821 assert(newHeader.getHeaderString(headerString) == true);
00822 assert(headerString ==
00823 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n@CO\tMy Comment\n@CO\tMy Comment2\n");
00824
00825
00826 assert(samHeader.getNextHeaderLine(hdrline));
00827 assert(hdrline == "@CO\tMy Comment2\n");
00828 assert(!samHeader.getNextHeaderLine(hdrline));
00829 assert(hdrline == "");
00830 assert(!samHeader.getNextHeaderLine(hdrline));
00831 assert(hdrline == "");
00832
00833
00834 assert(strcmp(samHeader.getNextComment(), "My Comment2") == 0);
00835 assert(strcmp(samHeader.getNextComment(), "") == 0);
00836 assert(strcmp(samHeader.getNextComment(), "") == 0);
00837
00838
00839 samHeader.resetHeaderRecordIter();
00840
00841
00842 assert(strcmp(samHeader.getNextComment(), "") == 0);
00843 assert(strcmp(samHeader.getNextComment(), "") == 0);
00844
00845
00846 samHeader.resetCommentIter();
00847
00848
00849
00850 hdrRec = samHeader.getNextHeaderRecord();
00851 assert(hdrRec != NULL);
00852 assert(strcmp(hdrRec->getTypeString(), "HD") == 0);
00853 assert(hdrRec->getType() == SamHeaderRecord::HD);
00854 assert(strcmp(hdrRec->getTagValue("SO"), "queryname") == 0);
00855 assert(strcmp(hdrRec->getTagValue("VN"), "3.1") == 0);
00856 assert(samHeader.getNextHeaderLine(hdrline));
00857 assert(hdrline == "@PG\tID:newID\n");
00858 assert(samHeader.getNextHeaderLine(hdrline));
00859 assert(hdrline == "@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00860 hdrRec = samHeader.getNextHeaderRecord();
00861 assert(hdrRec != NULL);
00862 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00863 assert(hdrRec->getType() == SamHeaderRecord::RG);
00864 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00865 hdrRec = samHeader.getNextHeaderRecord();
00866 assert(hdrRec != NULL);
00867 assert(strcmp(samHeader.getNextComment(), "My Comment") == 0);
00868 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00869 assert(hdrRec->getType() == SamHeaderRecord::RG);
00870 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00871 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00872 assert(samHeader.getNextHeaderLine(hdrline));
00873 assert(hdrline == "@RG\tID:rgID2\tSM:sm2\n");
00874 hdrRec = samHeader.getNextHeaderRecord();
00875 assert(hdrRec == NULL);
00876 assert(samHeader.getNextHeaderLine(hdrline));
00877 assert(hdrline == "@CO\tMy Comment\n");
00878 hdrRec = samHeader.getNextHeaderRecord();
00879 assert(hdrRec == NULL);
00880 assert(samHeader.getNextHeaderLine(hdrline));
00881 assert(hdrline == "@CO\tMy Comment2\n");
00882 assert(!samHeader.getNextHeaderLine(hdrline));
00883 assert(hdrline == "");
00884 assert(strcmp(samHeader.getNextComment(), "My Comment2") == 0);
00885 assert(!samHeader.getNextHeaderLine(hdrline));
00886 assert(hdrline == "");
00887 hdrRec = samHeader.getNextHeaderRecord();
00888 assert(hdrRec == NULL);
00889 assert(strcmp(samHeader.getNextComment(), "") == 0);
00890 assert(strcmp(samHeader.getNextComment(), "") == 0);
00891
00892 samOut.WriteHeader(samHeader);
00893
00894
00895 samHeader.resetHeader();
00896 assert(samHeader.getHeaderString(headerString) == true);
00897 assert(headerString == "");
00898 assert(!samHeader.getNextHeaderLine(hdrline));
00899 assert(hdrline == "");
00900 assert(strcmp(samHeader.getHDTagValue("SO"), "") == 0);
00901 assert(strcmp(samHeader.getHDTagValue("VN"), "") == 0);
00902
00903
00904 hd = new SamHeaderHD();
00905 assert(hd->addKey("3.1") == false);
00906 assert(strcmp(hd->getTagValue("VN"), "") == 0);
00907 assert(hd->isActiveHeaderRecord() == false);
00908
00909 assert(hd->setTag("VN", "3.1") == true);
00910 assert(hd->isActiveHeaderRecord() == true);
00911 assert(strcmp(hd->getTagValue("VN"), "3.1") == 0);
00912
00913
00914 assert(newHeader.getHeaderString(headerString) == true);
00915 assert(headerString ==
00916 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n@RG\tID:rgID\tSM:sm1\n@RG\tID:rgID1\tSM:sample1\n@RG\tID:rgID2\tSM:sm2\n@CO\tMy Comment\n@CO\tMy Comment2\n");
00917
00918 assert(strcmp(newHeader.getSQTagValue("LN", "chr20"), "") == 0);
00919 }
00920
00921
00922 void testWriteCopiedHeader()
00923 {
00924 SamFile samIn;
00925 assert(samIn.OpenForRead("testFiles/testBam.bam"));
00926
00927 SamFile samOut;
00928 assert(samOut.OpenForWrite("results/MyTestOut2.bam"));
00929 SamFile samOut2;
00930 assert(samOut2.OpenForWrite("results/MyTestOut2.sam"));
00931
00932
00933 SamFileHeader samHeader;
00934 assert(samIn.ReadHeader(samHeader));
00935 validateHeader(samHeader);
00936
00937 SamFileHeader newHeader;
00938
00939 std::string hdrLine;
00940 assert(samHeader.getNextHeaderLine(hdrLine));
00941 newHeader.addHeaderLine("@HD\tVN:1.02");
00942 bool hdrStatus = true;
00943 while(hdrStatus)
00944 {
00945 newHeader.addHeaderLine(hdrLine.c_str());
00946 hdrStatus = samHeader.getNextHeaderLine(hdrLine);
00947 }
00948
00949
00950 assert(samOut.WriteHeader(newHeader));
00951 assert(samOut2.WriteHeader(newHeader));
00952
00953 SamRecord samRecord;
00954
00955
00956 while(samIn.ReadRecord(samHeader, samRecord))
00957 {
00958
00959 assert(samOut.WriteRecord(newHeader, samRecord));
00960 assert(samOut2.WriteRecord(newHeader, samRecord));
00961 }
00962
00963 assert(samIn.GetStatus() == SamStatus::NO_MORE_RECS);
00964
00965
00966 samOut.Close();
00967 samOut2.Close();
00968
00969 SamFileReader bamRead("results/MyTestOut2.bam");
00970 SamFileReader samRead("results/MyTestOut2.sam");
00971
00972
00973 assert(samRead.ReadHeader(samHeader));
00974 validateHeaderFields(samHeader);
00975 std::string headerString = "";
00976 assert(samHeader.getHeaderString(headerString) == true);
00977 assert(headerString == "@HD\tVN:1.02\n@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");
00978
00979 assert(bamRead.ReadHeader(samHeader));
00980 validateHeaderFields(samHeader);
00981 headerString = "";
00982 assert(samHeader.getHeaderString(headerString) == true);
00983 assert(headerString == "@HD\tVN:1.02\n@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");
00984
00985 assert(samHeader.getNextHeaderLine(hdrLine));
00986 std::string expectedString = "@HD\tVN:1.02\n";
00987
00988 assert(expectedString == hdrLine);
00989
00990
00991
00992
00993 }
00994