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
00434
00435 assert(samHeader.setSQTag("AS", "HG18", "newName") == true);
00436 assert(samHeader.getHeaderString(headerString) == true);
00437
00438 assert(headerString ==
00439 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00440 assert(strcmp(samHeader.getSQTagValue("AS", "newName"), "HG18") == 0);
00441 assert(strcmp(samHeader.getSQTagValue("SN", "newName"), "newName") == 0);
00442
00443 assert(samHeader.setSQTag("SN", "newName", "newName") == true);
00444 assert(samHeader.getHeaderString(headerString) == true);
00445
00446 assert(headerString ==
00447 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n");
00448 assert(strcmp(samHeader.getSQTagValue("SN", "newName"), "newName") == 0);
00449 assert(strcmp(samHeader.getSQTagValue("AS", "newName"), "HG18") == 0);
00450
00451 sq = samHeader.getSQ("newName");
00452 assert(sq != NULL);
00453
00454 assert(sq->setTag("LN", "111") == true);
00455 assert(strcmp(samHeader.getSQTagValue("SN", "newName"), "newName") == 0);
00456 assert(strcmp(samHeader.getSQTagValue("AS", "newName"), "HG18") == 0);
00457 assert(strcmp(samHeader.getSQTagValue("LN", "newName"), "111") == 0);
00458 assert(samHeader.getHeaderString(headerString) == true);
00459 assert(headerString ==
00460 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00461
00462
00463
00464 assert(samHeader.setRGTag("ID", "rgID", "rgID") == true);
00465 assert(samHeader.getHeaderString(headerString) == true);
00466
00467 assert(headerString ==
00468 "@HD\tSO:queryname\tVN:3.1\n@PG\tID:newID\n@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00469 assert(strcmp(samHeader.getRGTagValue("ID", "rgID"), "rgID") == 0);
00470
00471
00472 assert(samHeader.setRGTag("SM", "sm1", "rgID") == true);
00473 assert(samHeader.getHeaderString(headerString) == true);
00474
00475 assert(headerString ==
00476 "@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");
00477 assert(strcmp(samHeader.getRGTagValue("ID", "rgID"), "rgID") == 0);
00478
00479
00480 assert(samHeader.setRGTag("ID", "rgID1", "rgID") == false);
00481 assert(samHeader.getHeaderString(headerString) == true);
00482 assert(headerString ==
00483 "@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");
00484 assert(strcmp(samHeader.getRGTagValue("ID", "rgID"), "rgID") == 0);
00485
00486
00487 assert(newHeader.getHeaderString(headerString) == true);
00488 assert(headerString == "@HD\tVN:1.0\n@SQ\tLN:123\tSN:chr20\n");
00489
00490 assert(strcmp(newHeader.getSQTagValue("LN", "chr20"), "123") == 0);
00491
00492
00493
00494 assert(samHeader.setRGTag("SM", "sample1", "rgID1") == true);
00495 assert(samHeader.getHeaderString(headerString) == true);
00496
00497 assert(headerString ==
00498 "@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");
00499 assert(strcmp(samHeader.getRGTagValue("ID", "rgID1"), "rgID1") == 0);
00500 assert(strcmp(samHeader.getRGTagValue("SM", "rgID1"), "sample1") == 0);
00501
00502
00503 assert(samHeader.setRGTag("SM", "sample", "rgID1") == true);
00504 assert(samHeader.getHeaderString(headerString) == true);
00505 assert(headerString ==
00506 "@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");
00507 assert(strcmp(samHeader.getRGTagValue("ID", "rgID1"), "rgID1") == 0);
00508 assert(strcmp(samHeader.getRGTagValue("SM", "rgID1"), "sample") == 0);
00509
00510
00511 assert(samHeader.removeRG("rgID2") == true);
00512 assert(samHeader.getHeaderString(headerString) == true);
00513 assert(headerString ==
00514 "@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");
00515
00516
00517 SamHeaderRG* rg = new SamHeaderRG();
00518
00519 assert(samHeader.addRG(rg) == false);
00520 assert(samHeader.getHeaderString(headerString) == true);
00521 assert(headerString ==
00522 "@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");
00523
00524 assert(rg->setTag("ID", "rgID2") == true);
00525 assert(rg->setTag("SM", "sm2") == true);
00526 assert(samHeader.getHeaderString(headerString) == true);
00527 assert(headerString ==
00528 "@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");
00529
00530 assert(samHeader.addRG(rg) == true);
00531 assert(samHeader.getHeaderString(headerString) == true);
00532 assert(headerString ==
00533 "@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");
00534 assert(strcmp(samHeader.getRGTagValue("ID", "rgID2"), "rgID2") == 0);
00535
00536
00537 rg = new SamHeaderRG();
00538 assert(rg->setTag("ID", "rgID2") == true);
00539 assert(samHeader.addRG(rg) == false);
00540 assert(samHeader.getHeaderString(headerString) == true);
00541 assert(headerString ==
00542 "@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");
00543
00544
00545
00546 assert(samHeader.removeRG("rgID2") == true);
00547 assert(samHeader.getHeaderString(headerString) == true);
00548 assert(headerString ==
00549 "@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");
00550
00551
00552 assert(strcmp(samHeader.getRGTagValue("DS", "rgID"), "") == 0);
00553 assert(samHeader.getHeaderString(headerString) == true);
00554 assert(headerString ==
00555 "@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");
00556
00557
00558 assert(strcmp(samHeader.getRGTagValue("ID", "rgID2"), "") == 0);
00559 assert(samHeader.getHeaderString(headerString) == true);
00560 assert(headerString ==
00561 "@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");
00562
00563
00564 assert(strcmp(samHeader.getRGTagValue("ID", "rgID22"), "") == 0);
00565 assert(samHeader.getHeaderString(headerString) == true);
00566 assert(headerString ==
00567 "@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");
00568
00569
00570 rg = NULL;
00571 assert(samHeader.addRG(rg) == false);
00572 assert(samHeader.getHeaderString(headerString) == true);
00573 assert(headerString ==
00574 "@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");
00575
00576
00577 rg = new SamHeaderRG();
00578 assert(rg->setTag("ID", "rgID2") == true);
00579 assert(rg->setTag("SM", "sm2") == true);
00580 assert(samHeader.addRG(rg) == true);
00581 assert(samHeader.getHeaderString(headerString) == true);
00582 assert(headerString ==
00583 "@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");
00584
00585
00586 assert(samHeader.addHeaderLine("@RG\tID:rgID\tSM:sm5") == false);
00587 assert(samHeader.getHeaderString(headerString) == true);
00588 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");
00589
00590 assert(strcmp(samHeader.getRGTagValue("SM", "rgID"), "sm1") == 0);
00591
00592
00593
00594 rg = samHeader.getRG("rgID1");
00595 assert(rg != NULL);
00596 assert(rg->setTag("SM", "sample1") == true);
00597 assert(samHeader.getHeaderString(headerString) == true);
00598 assert(headerString ==
00599 "@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");
00600
00601
00602 assert(rg->setTag("ID", "rgID111") == false);
00603 assert(samHeader.getHeaderString(headerString) == true);
00604 assert(headerString ==
00605 "@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");
00606
00607
00608
00609 assert(strcmp(samHeader.getNextComment(), "") == 0);
00610 assert(samHeader.getHeaderString(headerString) == true);
00611 assert(headerString ==
00612 "@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");
00613
00614
00615 const char* hdrlinechar;
00616 std::string hdrline;
00617 assert(samHeader.getNextHeaderLine(hdrline));
00618 hdrlinechar = hdrline.c_str();
00619
00620 std::string tmpString = "@SQ\tSN:queryname\tVN:3.1\n";
00621 assert(hdrline == "@HD\tSO:queryname\tVN:3.1\n");
00622 assert(strcmp(hdrlinechar,
00623 "@HD\tSO:queryname\tVN:3.1\n") == 0);
00624
00625 assert(samHeader.getNextHeaderLine(hdrline));
00626 assert(hdrline == "@PG\tID:newID\n");
00627 assert(samHeader.getNextHeaderLine(hdrline));
00628 assert(hdrline == "@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00629 assert(samHeader.getNextHeaderLine(hdrline));
00630 assert(hdrline == "@RG\tID:rgID\tSM:sm1\n");
00631 assert(samHeader.getNextHeaderLine(hdrline));
00632 assert(hdrline == "@RG\tID:rgID1\tSM:sample1\n");
00633 assert(samHeader.getNextHeaderLine(hdrline));
00634 assert(hdrline == "@RG\tID:rgID2\tSM:sm2\n");
00635 assert(!samHeader.getNextHeaderLine(hdrline));
00636 assert(hdrline == "");
00637 assert(!samHeader.getNextHeaderLine(hdrline));
00638 assert(hdrline == "");
00639 assert(samHeader.getHeaderString(headerString) == true);
00640 assert(headerString ==
00641 "@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");
00642
00643
00644 assert(samHeader.getNextHeaderRecord() == NULL);
00645
00646
00647 samHeader.resetHeaderRecordIter();
00648
00649
00650 SamHeaderRecord* hdrRec = samHeader.getNextHeaderRecord();
00651 assert(hdrRec != NULL);
00652 assert(strcmp(hdrRec->getTypeString(), "HD") == 0);
00653 assert(hdrRec->getType() == SamHeaderRecord::HD);
00654 assert(strcmp(hdrRec->getTagValue("SO"), "queryname") == 0);
00655 assert(strcmp(hdrRec->getTagValue("VN"), "3.1") == 0);
00656 hdrRec = samHeader.getNextHeaderRecord();
00657 assert(hdrRec != NULL);
00658 assert(strcmp(hdrRec->getTypeString(), "PG") == 0);
00659 assert(hdrRec->getType() == SamHeaderRecord::PG);
00660 assert(strcmp(hdrRec->getTagValue("ID"), "newID") == 0);
00661 hdrRec = samHeader.getNextHeaderRecord();
00662 assert(hdrRec != NULL);
00663 assert(strcmp(hdrRec->getTypeString(), "SQ") == 0);
00664 assert(hdrRec->getType() == SamHeaderRecord::SQ);
00665 assert(strcmp(hdrRec->getTagValue("SN"), "newName") == 0);
00666 assert(strcmp(hdrRec->getTagValue("AS"), "HG18") == 0);
00667 assert(strcmp(hdrRec->getTagValue("LN"), "111") == 0);
00668 hdrRec = samHeader.getNextHeaderRecord();
00669 assert(hdrRec != NULL);
00670 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00671 assert(hdrRec->getType() == SamHeaderRecord::RG);
00672 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00673 assert(strcmp(hdrRec->getTagValue("SM"), "sm1") == 0);
00674
00675
00676
00677 hdrRec = samHeader.getNextSQRecord();
00678 assert(hdrRec != NULL);
00679 assert(strcmp(hdrRec->getTypeString(), "SQ") == 0);
00680 assert(hdrRec->getType() == SamHeaderRecord::SQ);
00681 assert(strcmp(hdrRec->getTagValue("SN"), "newName") == 0);
00682 assert(strcmp(hdrRec->getTagValue("AS"), "HG18") == 0);
00683 assert(strcmp(hdrRec->getTagValue("LN"), "111") == 0);
00684
00685 hdrRec = samHeader.getNextSQRecord();
00686 assert(hdrRec == NULL);
00687
00688
00689
00690 hdrRec = samHeader.getNextRGRecord();
00691 assert(hdrRec != NULL);
00692 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00693 assert(hdrRec->getType() == SamHeaderRecord::RG);
00694 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00695 assert(strcmp(hdrRec->getTagValue("SM"), "sm1") == 0);
00696
00697 hdrRec = samHeader.getNextRGRecord();
00698 assert(hdrRec != NULL);
00699 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00700 assert(hdrRec->getType() == SamHeaderRecord::RG);
00701 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00702 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00703
00704 hdrRec = samHeader.getNextPGRecord();
00705 assert(hdrRec != NULL);
00706 assert(strcmp(hdrRec->getTypeString(), "PG") == 0);
00707 assert(hdrRec->getType() == SamHeaderRecord::PG);
00708 assert(strcmp(hdrRec->getTagValue("ID"), "newID") == 0);
00709
00710 hdrRec = samHeader.getNextRGRecord();
00711 assert(hdrRec != NULL);
00712 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00713 assert(hdrRec->getType() == SamHeaderRecord::RG);
00714 assert(strcmp(hdrRec->getTagValue("ID"), "rgID2") == 0);
00715 assert(strcmp(hdrRec->getTagValue("SM"), "sm2") == 0);
00716
00717 hdrRec = samHeader.getNextRGRecord();
00718 assert(hdrRec == NULL);
00719
00720 samHeader.resetRGRecordIter();
00721
00722 hdrRec = samHeader.getNextRGRecord();
00723 assert(hdrRec != NULL);
00724 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00725 assert(hdrRec->getType() == SamHeaderRecord::RG);
00726 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00727 assert(strcmp(hdrRec->getTagValue("SM"), "sm1") == 0);
00728
00729 hdrRec = samHeader.getNextPGRecord();
00730 assert(hdrRec == NULL);
00731
00732 hdrRec = samHeader.getNextSQRecord();
00733 assert(hdrRec == NULL);
00734
00735 samHeader.resetSQRecordIter();
00736
00737 hdrRec = samHeader.getNextPGRecord();
00738 assert(hdrRec == NULL);
00739
00740 hdrRec = samHeader.getNextSQRecord();
00741 assert(hdrRec != NULL);
00742 assert(strcmp(hdrRec->getTypeString(), "SQ") == 0);
00743 assert(hdrRec->getType() == SamHeaderRecord::SQ);
00744 assert(strcmp(hdrRec->getTagValue("SN"), "newName") == 0);
00745 assert(strcmp(hdrRec->getTagValue("AS"), "HG18") == 0);
00746 assert(strcmp(hdrRec->getTagValue("LN"), "111") == 0);
00747
00748 hdrRec = samHeader.getNextSQRecord();
00749 assert(hdrRec == NULL);
00750
00751 samHeader.resetPGRecordIter();
00752
00753 hdrRec = samHeader.getNextSQRecord();
00754 assert(hdrRec == NULL);
00755
00756 hdrRec = samHeader.getNextRGRecord();
00757 assert(hdrRec != NULL);
00758 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00759 assert(hdrRec->getType() == SamHeaderRecord::RG);
00760 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00761 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00762
00763 hdrRec = samHeader.getNextPGRecord();
00764 assert(hdrRec != NULL);
00765 assert(strcmp(hdrRec->getTypeString(), "PG") == 0);
00766 assert(hdrRec->getType() == SamHeaderRecord::PG);
00767 assert(strcmp(hdrRec->getTagValue("ID"), "newID") == 0);
00768
00769
00770 hdrRec = samHeader.getNextHeaderRecord();
00771 assert(hdrRec != NULL);
00772 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00773 assert(hdrRec->getType() == SamHeaderRecord::RG);
00774 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00775 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00776 hdrRec = samHeader.getNextHeaderRecord();
00777 assert(hdrRec != NULL);
00778 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00779 assert(hdrRec->getType() == SamHeaderRecord::RG);
00780 assert(strcmp(hdrRec->getTagValue("ID"), "rgID2") == 0);
00781 assert(strcmp(hdrRec->getTagValue("SM"), "sm2") == 0);
00782 hdrRec = samHeader.getNextHeaderRecord();
00783 assert(hdrRec == NULL);
00784 hdrRec = samHeader.getNextHeaderRecord();
00785 assert(hdrRec == NULL);
00786 assert(!samHeader.getNextHeaderLine(hdrline));
00787 assert(hdrline == "");
00788 assert(!samHeader.getNextHeaderLine(hdrline));
00789 assert(hdrline == "");
00790
00791 assert(samHeader.getHeaderString(headerString) == true);
00792 assert(headerString ==
00793 "@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");
00794
00795
00796 assert(samHeader.addComment("My Comment") == true);
00797 assert(samHeader.getHeaderString(headerString) == true);
00798 assert(headerString ==
00799 "@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");
00800
00801
00802 hdrRec = samHeader.getNextHeaderRecord();
00803 assert(hdrRec == NULL);
00804
00805
00806 assert(samHeader.getNextHeaderLine(hdrline));
00807 assert(hdrline == "@CO\tMy Comment\n");
00808 assert(!samHeader.getNextHeaderLine(hdrline));
00809 assert(hdrline == "");
00810 assert(!samHeader.getNextHeaderLine(hdrline));
00811 assert(hdrline == "");
00812
00813
00814 assert(strcmp(samHeader.getNextComment(), "My Comment") == 0);
00815 assert(strcmp(samHeader.getNextComment(), "") == 0);
00816 assert(strcmp(samHeader.getNextComment(), "") == 0);
00817
00818
00819 assert(samHeader.addComment("My Comment2") == true);
00820 assert(samHeader.getHeaderString(headerString) == true);
00821 assert(headerString ==
00822 "@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");
00823
00824 newHeader = samHeader;
00825 assert(newHeader.getHeaderString(headerString) == true);
00826 assert(headerString ==
00827 "@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");
00828
00829
00830 assert(samHeader.getNextHeaderLine(hdrline));
00831 assert(hdrline == "@CO\tMy Comment2\n");
00832 assert(!samHeader.getNextHeaderLine(hdrline));
00833 assert(hdrline == "");
00834 assert(!samHeader.getNextHeaderLine(hdrline));
00835 assert(hdrline == "");
00836
00837
00838 assert(strcmp(samHeader.getNextComment(), "My Comment2") == 0);
00839 assert(strcmp(samHeader.getNextComment(), "") == 0);
00840 assert(strcmp(samHeader.getNextComment(), "") == 0);
00841
00842
00843 samHeader.resetHeaderRecordIter();
00844
00845
00846 assert(strcmp(samHeader.getNextComment(), "") == 0);
00847 assert(strcmp(samHeader.getNextComment(), "") == 0);
00848
00849
00850 samHeader.resetCommentIter();
00851
00852
00853
00854 hdrRec = samHeader.getNextHeaderRecord();
00855 assert(hdrRec != NULL);
00856 assert(strcmp(hdrRec->getTypeString(), "HD") == 0);
00857 assert(hdrRec->getType() == SamHeaderRecord::HD);
00858 assert(strcmp(hdrRec->getTagValue("SO"), "queryname") == 0);
00859 assert(strcmp(hdrRec->getTagValue("VN"), "3.1") == 0);
00860 assert(samHeader.getNextHeaderLine(hdrline));
00861 assert(hdrline == "@PG\tID:newID\n");
00862 assert(samHeader.getNextHeaderLine(hdrline));
00863 assert(hdrline == "@SQ\tSN:newName\tAS:HG18\tLN:111\n");
00864 hdrRec = samHeader.getNextHeaderRecord();
00865 assert(hdrRec != NULL);
00866 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00867 assert(hdrRec->getType() == SamHeaderRecord::RG);
00868 assert(strcmp(hdrRec->getTagValue("ID"), "rgID") == 0);
00869 hdrRec = samHeader.getNextHeaderRecord();
00870 assert(hdrRec != NULL);
00871 assert(strcmp(samHeader.getNextComment(), "My Comment") == 0);
00872 assert(strcmp(hdrRec->getTypeString(), "RG") == 0);
00873 assert(hdrRec->getType() == SamHeaderRecord::RG);
00874 assert(strcmp(hdrRec->getTagValue("ID"), "rgID1") == 0);
00875 assert(strcmp(hdrRec->getTagValue("SM"), "sample1") == 0);
00876 assert(samHeader.getNextHeaderLine(hdrline));
00877 assert(hdrline == "@RG\tID:rgID2\tSM:sm2\n");
00878 hdrRec = samHeader.getNextHeaderRecord();
00879 assert(hdrRec == NULL);
00880 assert(samHeader.getNextHeaderLine(hdrline));
00881 assert(hdrline == "@CO\tMy Comment\n");
00882 hdrRec = samHeader.getNextHeaderRecord();
00883 assert(hdrRec == NULL);
00884 assert(samHeader.getNextHeaderLine(hdrline));
00885 assert(hdrline == "@CO\tMy Comment2\n");
00886 assert(!samHeader.getNextHeaderLine(hdrline));
00887 assert(hdrline == "");
00888 assert(strcmp(samHeader.getNextComment(), "My Comment2") == 0);
00889 assert(!samHeader.getNextHeaderLine(hdrline));
00890 assert(hdrline == "");
00891 hdrRec = samHeader.getNextHeaderRecord();
00892 assert(hdrRec == NULL);
00893 assert(strcmp(samHeader.getNextComment(), "") == 0);
00894 assert(strcmp(samHeader.getNextComment(), "") == 0);
00895
00896 samOut.WriteHeader(samHeader);
00897
00898
00899 samHeader.resetHeader();
00900 assert(samHeader.getHeaderString(headerString) == true);
00901 assert(headerString == "");
00902 assert(!samHeader.getNextHeaderLine(hdrline));
00903 assert(hdrline == "");
00904 assert(strcmp(samHeader.getHDTagValue("SO"), "") == 0);
00905 assert(strcmp(samHeader.getHDTagValue("VN"), "") == 0);
00906
00907
00908 hd = new SamHeaderHD();
00909 assert(hd->addKey("3.1") == false);
00910 assert(strcmp(hd->getTagValue("VN"), "") == 0);
00911 assert(hd->isActiveHeaderRecord() == false);
00912
00913 assert(hd->setTag("VN", "3.1") == true);
00914 assert(hd->isActiveHeaderRecord() == true);
00915 assert(strcmp(hd->getTagValue("VN"), "3.1") == 0);
00916
00917
00918 assert(newHeader.getHeaderString(headerString) == true);
00919 assert(headerString ==
00920 "@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");
00921
00922 assert(strcmp(newHeader.getSQTagValue("LN", "chr20"), "") == 0);
00923 }
00924
00925
00926 void testWriteCopiedHeader()
00927 {
00928 SamFile samIn;
00929 assert(samIn.OpenForRead("testFiles/testBam.bam"));
00930
00931 SamFile samOut;
00932 assert(samOut.OpenForWrite("results/MyTestOut2.bam"));
00933 SamFile samOut2;
00934 assert(samOut2.OpenForWrite("results/MyTestOut2.sam"));
00935
00936
00937 SamFileHeader samHeader;
00938 assert(samIn.ReadHeader(samHeader));
00939 validateHeader(samHeader);
00940
00941 SamFileHeader newHeader;
00942
00943 std::string hdrLine;
00944 assert(samHeader.getNextHeaderLine(hdrLine));
00945 newHeader.addHeaderLine("@HD\tVN:1.02");
00946 bool hdrStatus = true;
00947 while(hdrStatus)
00948 {
00949 newHeader.addHeaderLine(hdrLine.c_str());
00950 hdrStatus = samHeader.getNextHeaderLine(hdrLine);
00951 }
00952
00953
00954 assert(samOut.WriteHeader(newHeader));
00955 assert(samOut2.WriteHeader(newHeader));
00956
00957 SamRecord samRecord;
00958
00959
00960 while(samIn.ReadRecord(samHeader, samRecord))
00961 {
00962
00963 assert(samOut.WriteRecord(newHeader, samRecord));
00964 assert(samOut2.WriteRecord(newHeader, samRecord));
00965 }
00966
00967 assert(samIn.GetStatus() == SamStatus::NO_MORE_RECS);
00968
00969
00970 samOut.Close();
00971 samOut2.Close();
00972
00973 SamFileReader bamRead("results/MyTestOut2.bam");
00974 SamFileReader samRead("results/MyTestOut2.sam");
00975
00976
00977 assert(samRead.ReadHeader(samHeader));
00978 validateHeaderFields(samHeader);
00979 std::string headerString = "";
00980 assert(samHeader.getHeaderString(headerString) == true);
00981 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");
00982
00983 assert(bamRead.ReadHeader(samHeader));
00984 validateHeaderFields(samHeader);
00985 headerString = "";
00986 assert(samHeader.getHeaderString(headerString) == true);
00987 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");
00988
00989 assert(samHeader.getNextHeaderLine(hdrLine));
00990 std::string expectedString = "@HD\tVN:1.02\n";
00991
00992 assert(expectedString == hdrLine);
00993
00994
00995
00996
00997 }
00998