00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "TestCigarHelper.h"
00019 #include "TestValidate.h"
00020 #include "CigarHelper.h"
00021 #include <assert.h>
00022
00023 void testCigarHelper()
00024 {
00025
00026 CigarHelperTest::testCigarHelper();
00027 }
00028
00029
00030 void CigarHelperTest::testCigarHelper()
00031 {
00032 testSoftClipBeginByRefPos();
00033 testSoftClipEndByRefPos();
00034 }
00035
00036
00037 void CigarHelperTest::testSoftClipBeginByRefPos()
00038 {
00039 SamRecord record;
00040 CigarRoller newCigar;
00041 std::string newCigarString;
00042 int32_t newPos = 0;
00043
00044
00045
00046
00047
00048
00049
00050 const char* origCigar = "3H3S3M3D3M3I3M3P3M3D3M3S3H";
00051 record.setCigar(origCigar);
00052 record.set0BasedPosition(10);
00053 record.setSequence("gggAAATTTCCCTTTGGGAAAggg");
00054
00055
00056
00057 assert(CigarHelper::softClipBeginByRefPos(record, 10000, newCigar, newPos) == 23);
00058 newCigar.getCigarString(newCigarString);
00059 assert(strcmp(newCigarString.c_str(), "3H24S3H") == 0);
00060
00061
00062
00063 assert(CigarHelper::softClipBeginByRefPos(record, 1, newCigar, newPos) ==
00064 CigarHelper::NO_CLIP);
00065 newCigar.getCigarString(newCigarString);
00066 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00067
00068
00069
00070
00071
00072
00073
00074
00075 assert(CigarHelper::softClipBeginByRefPos(record, 10, newCigar, newPos) == 3);
00076 assert(newPos == 11);
00077 newCigar.getCigarString(newCigarString);
00078
00079 assert(strcmp(newCigarString.c_str(), "3H4S2M3D3M3I3M3P3M3D3M3S3H") == 0);
00080
00081
00082
00083 assert(CigarHelper::softClipBeginByRefPos(record, 11, newCigar, newPos) == 4);
00084 assert(newPos == 12);
00085 newCigar.getCigarString(newCigarString);
00086
00087 assert(strcmp(newCigarString.c_str(), "3H5S1M3D3M3I3M3P3M3D3M3S3H") == 0);
00088
00089
00090 assert(CigarHelper::softClipBeginByRefPos(record, 12, newCigar, newPos) == 5);
00091 assert(newPos == 16);
00092 newCigar.getCigarString(newCigarString);
00093
00094 assert(strcmp(newCigarString.c_str(), "3H6S3M3I3M3P3M3D3M3S3H") == 0);
00095
00096
00097 assert(CigarHelper::softClipBeginByRefPos(record, 13, newCigar, newPos) == 5);
00098 assert(newPos == 16);
00099 newCigar.getCigarString(newCigarString);
00100
00101 assert(strcmp(newCigarString.c_str(), "3H6S3M3I3M3P3M3D3M3S3H") == 0);
00102
00103
00104 assert(CigarHelper::softClipBeginByRefPos(record, 14, newCigar, newPos) == 5);
00105 assert(newPos == 16);
00106 newCigar.getCigarString(newCigarString);
00107
00108 assert(strcmp(newCigarString.c_str(), "3H6S3M3I3M3P3M3D3M3S3H") == 0);
00109
00110
00111 assert(CigarHelper::softClipBeginByRefPos(record, 15, newCigar, newPos) == 5);
00112 assert(newPos == 16);
00113 newCigar.getCigarString(newCigarString);
00114
00115 assert(strcmp(newCigarString.c_str(), "3H6S3M3I3M3P3M3D3M3S3H") == 0);
00116
00117
00118 assert(CigarHelper::softClipBeginByRefPos(record, 16, newCigar, newPos) == 6);
00119 assert(newPos == 17);
00120 newCigar.getCigarString(newCigarString);
00121
00122 assert(strcmp(newCigarString.c_str(), "3H7S2M3I3M3P3M3D3M3S3H") == 0);
00123
00124
00125 assert(CigarHelper::softClipBeginByRefPos(record, 17, newCigar, newPos) == 7);
00126 assert(newPos == 18);
00127 newCigar.getCigarString(newCigarString);
00128
00129 assert(strcmp(newCigarString.c_str(), "3H8S1M3I3M3P3M3D3M3S3H") == 0);
00130
00131
00132 assert(CigarHelper::softClipBeginByRefPos(record, 18, newCigar, newPos) == 11);
00133 assert(newPos == 19);
00134 newCigar.getCigarString(newCigarString);
00135
00136 assert(strcmp(newCigarString.c_str(), "3H12S3M3P3M3D3M3S3H") == 0);
00137
00138
00139 assert(CigarHelper::softClipBeginByRefPos(record, 19, newCigar, newPos) == 12);
00140 assert(newPos == 20);
00141 newCigar.getCigarString(newCigarString);
00142
00143 assert(strcmp(newCigarString.c_str(), "3H13S2M3P3M3D3M3S3H") == 0);
00144
00145
00146 assert(CigarHelper::softClipBeginByRefPos(record, 20, newCigar, newPos) == 13);
00147 assert(newPos == 21);
00148 newCigar.getCigarString(newCigarString);
00149
00150 assert(strcmp(newCigarString.c_str(), "3H14S1M3P3M3D3M3S3H") == 0);
00151
00152
00153 assert(CigarHelper::softClipBeginByRefPos(record, 21, newCigar, newPos) == 14);
00154 assert(newPos == 22);
00155 newCigar.getCigarString(newCigarString);
00156
00157 assert(strcmp(newCigarString.c_str(), "3H15S3M3D3M3S3H") == 0);
00158
00159
00160 assert(CigarHelper::softClipBeginByRefPos(record, 22, newCigar, newPos) == 15);
00161 assert(newPos == 23);
00162 newCigar.getCigarString(newCigarString);
00163
00164 assert(strcmp(newCigarString.c_str(), "3H16S2M3D3M3S3H") == 0);
00165
00166
00167 assert(CigarHelper::softClipBeginByRefPos(record, 23, newCigar, newPos) == 16);
00168 assert(newPos == 24);
00169 newCigar.getCigarString(newCigarString);
00170
00171 assert(strcmp(newCigarString.c_str(), "3H17S1M3D3M3S3H") == 0);
00172
00173
00174 assert(CigarHelper::softClipBeginByRefPos(record, 24, newCigar, newPos) == 17);
00175 assert(newPos == 28);
00176 newCigar.getCigarString(newCigarString);
00177
00178 assert(strcmp(newCigarString.c_str(), "3H18S3M3S3H") == 0);
00179
00180
00181 assert(CigarHelper::softClipBeginByRefPos(record, 25, newCigar, newPos) == 17);
00182 assert(newPos == 28);
00183 newCigar.getCigarString(newCigarString);
00184
00185 assert(strcmp(newCigarString.c_str(), "3H18S3M3S3H") == 0);
00186
00187
00188 assert(CigarHelper::softClipBeginByRefPos(record, 26, newCigar, newPos) == 17);
00189 assert(newPos == 28);
00190 newCigar.getCigarString(newCigarString);
00191
00192 assert(strcmp(newCigarString.c_str(), "3H18S3M3S3H") == 0);
00193
00194
00195 assert(CigarHelper::softClipBeginByRefPos(record, 27, newCigar, newPos) == 17);
00196 assert(newPos == 28);
00197 newCigar.getCigarString(newCigarString);
00198
00199 assert(strcmp(newCigarString.c_str(), "3H18S3M3S3H") == 0);
00200
00201
00202 assert(CigarHelper::softClipBeginByRefPos(record, 28, newCigar, newPos) == 18);
00203 assert(newPos == 29);
00204 newCigar.getCigarString(newCigarString);
00205
00206 assert(strcmp(newCigarString.c_str(), "3H19S2M3S3H") == 0);
00207
00208
00209 assert(CigarHelper::softClipBeginByRefPos(record, 29, newCigar, newPos) == 19);
00210 assert(newPos == 30);
00211 newCigar.getCigarString(newCigarString);
00212
00213 assert(strcmp(newCigarString.c_str(), "3H20S1M3S3H") == 0);
00214
00215
00216 assert(CigarHelper::softClipBeginByRefPos(record, 30, newCigar, newPos) == 23);
00217 assert(newPos == 10);
00218 newCigar.getCigarString(newCigarString);
00219
00220 assert(strcmp(newCigarString.c_str(), "3H24S3H") == 0);
00221
00222
00223 assert(CigarHelper::softClipBeginByRefPos(record, 31, newCigar, newPos) == 23);
00224 assert(newPos == 10);
00225 newCigar.getCigarString(newCigarString);
00226
00227 assert(strcmp(newCigarString.c_str(), "3H24S3H") == 0);
00228
00229
00230
00231
00232
00233 origCigar = "3M3D3I3M";
00234 record.setCigar(origCigar);
00235 record.setSequence("GGGAAAGGG");
00236
00237
00238
00239
00240
00241 record.setCigar(origCigar);
00242 assert(CigarHelper::softClipBeginByRefPos(record, 9, newCigar, newPos) ==
00243 CigarHelper::NO_CLIP);
00244 assert(newPos == 10);
00245 newCigar.getCigarString(newCigarString);
00246
00247 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00248
00249 record.setCigar(origCigar);
00250 assert(CigarHelper::softClipBeginByRefPos(record, 10, newCigar, newPos) == 0);
00251 assert(newPos == 11);
00252 newCigar.getCigarString(newCigarString);
00253
00254 assert(strcmp(newCigarString.c_str(), "1S2M3D3I3M") == 0);
00255
00256 record.setCigar(origCigar);
00257 assert(CigarHelper::softClipBeginByRefPos(record, 11, newCigar, newPos) == 1);
00258 assert(newPos == 12);
00259 newCigar.getCigarString(newCigarString);
00260
00261 assert(strcmp(newCigarString.c_str(), "2S1M3D3I3M") == 0);
00262
00263 record.setCigar(origCigar);
00264 assert(CigarHelper::softClipBeginByRefPos(record, 12, newCigar, newPos) == 5);
00265 assert(newPos == 16);
00266 newCigar.getCigarString(newCigarString);
00267
00268 assert(strcmp(newCigarString.c_str(), "6S3M") == 0);
00269
00270 record.setCigar(origCigar);
00271 assert(CigarHelper::softClipBeginByRefPos(record, 13, newCigar, newPos) == 5);
00272 assert(newPos == 16);
00273 newCigar.getCigarString(newCigarString);
00274
00275 assert(strcmp(newCigarString.c_str(), "6S3M") == 0);
00276
00277 record.setCigar(origCigar);
00278 assert(CigarHelper::softClipBeginByRefPos(record, 14, newCigar, newPos) == 5);
00279 assert(newPos == 16);
00280 newCigar.getCigarString(newCigarString);
00281
00282 assert(strcmp(newCigarString.c_str(), "6S3M") == 0);
00283
00284 record.setCigar(origCigar);
00285 assert(CigarHelper::softClipBeginByRefPos(record, 15, newCigar, newPos) == 5);
00286 assert(newPos == 16);
00287 newCigar.getCigarString(newCigarString);
00288
00289 assert(strcmp(newCigarString.c_str(), "6S3M") == 0);
00290
00291 record.setCigar(origCigar);
00292 assert(CigarHelper::softClipBeginByRefPos(record, 16, newCigar, newPos) == 6);
00293 assert(newPos == 17);
00294 newCigar.getCigarString(newCigarString);
00295
00296 assert(strcmp(newCigarString.c_str(), "7S2M") == 0);
00297
00298 record.setCigar(origCigar);
00299 assert(CigarHelper::softClipBeginByRefPos(record, 17, newCigar, newPos) == 7);
00300 assert(newPos == 18);
00301 newCigar.getCigarString(newCigarString);
00302
00303 assert(strcmp(newCigarString.c_str(), "8S1M") == 0);
00304
00305 record.setCigar(origCigar);
00306 assert(CigarHelper::softClipBeginByRefPos(record, 18, newCigar, newPos) == 8);
00307 assert(newPos == 10);
00308 newCigar.getCigarString(newCigarString);
00309
00310 assert(strcmp(newCigarString.c_str(), "9S") == 0);
00311
00312 record.setCigar(origCigar);
00313 assert(CigarHelper::softClipBeginByRefPos(record, 19, newCigar, newPos) == 8);
00314 assert(newPos == 10);
00315 newCigar.getCigarString(newCigarString);
00316
00317 assert(strcmp(newCigarString.c_str(), "9S") == 0);
00318
00319
00320
00321
00322 origCigar = "3H3S3D3M3S3H";
00323 record.setCigar(origCigar);
00324 record.setSequence("gggAAAggg");
00325
00326
00327
00328
00329
00330 record.setCigar(origCigar);
00331 assert(CigarHelper::softClipBeginByRefPos(record, 9, newCigar, newPos) ==
00332 CigarHelper::NO_CLIP);
00333 assert(newPos == 10);
00334 newCigar.getCigarString(newCigarString);
00335
00336 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00337
00338 record.setCigar(origCigar);
00339 assert(CigarHelper::softClipBeginByRefPos(record, 10, newCigar, newPos) == 2);
00340 assert(newPos == 13);
00341 newCigar.getCigarString(newCigarString);
00342
00343 assert(strcmp(newCigarString.c_str(), "3H3S3M3S3H") == 0);
00344
00345 record.setCigar(origCigar);
00346 assert(CigarHelper::softClipBeginByRefPos(record, 11, newCigar, newPos) == 2);
00347 assert(newPos == 13);
00348 newCigar.getCigarString(newCigarString);
00349
00350 assert(strcmp(newCigarString.c_str(), "3H3S3M3S3H") == 0);
00351
00352 record.setCigar(origCigar);
00353 assert(CigarHelper::softClipBeginByRefPos(record, 12, newCigar, newPos) == 2);
00354 assert(newPos == 13);
00355 newCigar.getCigarString(newCigarString);
00356
00357 assert(strcmp(newCigarString.c_str(), "3H3S3M3S3H") == 0);
00358
00359 record.setCigar(origCigar);
00360 assert(CigarHelper::softClipBeginByRefPos(record, 13, newCigar, newPos) == 3);
00361 assert(newPos == 14);
00362 newCigar.getCigarString(newCigarString);
00363
00364 assert(strcmp(newCigarString.c_str(), "3H4S2M3S3H") == 0);
00365
00366 record.setCigar(origCigar);
00367 assert(CigarHelper::softClipBeginByRefPos(record, 14, newCigar, newPos) == 4);
00368 assert(newPos == 15);
00369 newCigar.getCigarString(newCigarString);
00370
00371 assert(strcmp(newCigarString.c_str(), "3H5S1M3S3H") == 0);
00372
00373 record.setCigar(origCigar);
00374 assert(CigarHelper::softClipBeginByRefPos(record, 15, newCigar, newPos) == 8);
00375 assert(newPos == 10);
00376 newCigar.getCigarString(newCigarString);
00377
00378 assert(strcmp(newCigarString.c_str(), "3H9S3H") == 0);
00379
00380 record.setCigar(origCigar);
00381 assert(CigarHelper::softClipBeginByRefPos(record, 16, newCigar, newPos) == 8);
00382 assert(newPos == 10);
00383 newCigar.getCigarString(newCigarString);
00384
00385 assert(strcmp(newCigarString.c_str(), "3H9S3H") == 0);
00386
00387
00388
00389
00390 origCigar = "3H3S3I3M3S3H";
00391 record.setCigar(origCigar);
00392 record.setSequence("gggAAATTTggg");
00393
00394
00395
00396
00397
00398 record.setCigar(origCigar);
00399 assert(CigarHelper::softClipBeginByRefPos(record, 9, newCigar, newPos) ==
00400 CigarHelper::NO_CLIP);
00401 assert(newPos == 10);
00402 newCigar.getCigarString(newCigarString);
00403
00404 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00405
00406 record.setCigar(origCigar);
00407 assert(CigarHelper::softClipBeginByRefPos(record, 10, newCigar, newPos) == 6);
00408 assert(newPos == 11);
00409 newCigar.getCigarString(newCigarString);
00410
00411 assert(strcmp(newCigarString.c_str(), "3H7S2M3S3H") == 0);
00412
00413 record.setCigar(origCigar);
00414 assert(CigarHelper::softClipBeginByRefPos(record, 11, newCigar, newPos) == 7);
00415 assert(newPos == 12);
00416 newCigar.getCigarString(newCigarString);
00417
00418 assert(strcmp(newCigarString.c_str(), "3H8S1M3S3H") == 0);
00419
00420 record.setCigar(origCigar);
00421 assert(CigarHelper::softClipBeginByRefPos(record, 12, newCigar, newPos) == 11);
00422 assert(newPos == 10);
00423 newCigar.getCigarString(newCigarString);
00424
00425 assert(strcmp(newCigarString.c_str(), "3H12S3H") == 0);
00426
00427 record.setCigar(origCigar);
00428 assert(CigarHelper::softClipBeginByRefPos(record, 13, newCigar, newPos) == 11);
00429 assert(newPos == 10);
00430 newCigar.getCigarString(newCigarString);
00431
00432 assert(strcmp(newCigarString.c_str(), "3H12S3H") == 0);
00433 }
00434
00435
00436 void CigarHelperTest::testSoftClipEndByRefPos()
00437 {
00438 SamRecord record;
00439 CigarRoller newCigar;
00440 std::string newCigarString;
00441
00442
00443
00444
00445
00446
00447
00448 const char* origCigar = "3H3S3M3D3M3I3M3P3M3D3M3S3H";
00449 record.setCigar(origCigar);
00450 record.set0BasedPosition(10);
00451 record.setSequence("gggAAATTTCCCTTTGGGAAAggg");
00452
00453
00454
00455 assert(CigarHelper::softClipEndByRefPos(record, 10000, newCigar) ==
00456 CigarHelper::NO_CLIP);
00457 newCigar.getCigarString(newCigarString);
00458 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00459
00460
00461
00462 assert(CigarHelper::softClipEndByRefPos(record, 1, newCigar) == 0);
00463 newCigar.getCigarString(newCigarString);
00464
00465 assert(strcmp(newCigarString.c_str(), "3H24S3H") == 0);
00466
00467
00468
00469
00470
00471
00472
00473
00474 assert(CigarHelper::softClipEndByRefPos(record, 10, newCigar) == 0);
00475 newCigar.getCigarString(newCigarString);
00476
00477 assert(strcmp(newCigarString.c_str(), "3H24S3H") == 0);
00478
00479
00480
00481 assert(CigarHelper::softClipEndByRefPos(record, 11, newCigar) == 4);
00482 newCigar.getCigarString(newCigarString);
00483
00484 assert(strcmp(newCigarString.c_str(), "3H3S1M20S3H") == 0);
00485
00486
00487
00488 assert(CigarHelper::softClipEndByRefPos(record, 12, newCigar) == 5);
00489 newCigar.getCigarString(newCigarString);
00490
00491 assert(strcmp(newCigarString.c_str(), "3H3S2M19S3H") == 0);
00492
00493
00494
00495 assert(CigarHelper::softClipEndByRefPos(record, 13, newCigar) == 6);
00496 newCigar.getCigarString(newCigarString);
00497
00498 assert(strcmp(newCigarString.c_str(), "3H3S3M18S3H") == 0);
00499
00500
00501
00502 assert(CigarHelper::softClipEndByRefPos(record, 14, newCigar) == 6);
00503 newCigar.getCigarString(newCigarString);
00504
00505 assert(strcmp(newCigarString.c_str(), "3H3S3M18S3H") == 0);
00506
00507
00508
00509 assert(CigarHelper::softClipEndByRefPos(record, 15, newCigar) == 6);
00510 newCigar.getCigarString(newCigarString);
00511
00512 assert(strcmp(newCigarString.c_str(), "3H3S3M18S3H") == 0);
00513
00514
00515
00516 assert(CigarHelper::softClipEndByRefPos(record, 16, newCigar) == 6);
00517 newCigar.getCigarString(newCigarString);
00518
00519 assert(strcmp(newCigarString.c_str(), "3H3S3M18S3H") == 0);
00520
00521
00522
00523 assert(CigarHelper::softClipEndByRefPos(record, 17, newCigar) == 7);
00524 newCigar.getCigarString(newCigarString);
00525
00526 assert(strcmp(newCigarString.c_str(), "3H3S3M3D1M17S3H") == 0);
00527
00528
00529
00530 assert(CigarHelper::softClipEndByRefPos(record, 18, newCigar) == 8);
00531 newCigar.getCigarString(newCigarString);
00532
00533 assert(strcmp(newCigarString.c_str(), "3H3S3M3D2M16S3H") == 0);
00534
00535
00536
00537 assert(CigarHelper::softClipEndByRefPos(record, 19, newCigar) == 12);
00538 newCigar.getCigarString(newCigarString);
00539
00540 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I12S3H") == 0);
00541
00542
00543
00544 assert(CigarHelper::softClipEndByRefPos(record, 20, newCigar) == 13);
00545 newCigar.getCigarString(newCigarString);
00546
00547 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I1M11S3H") == 0);
00548
00549
00550
00551 assert(CigarHelper::softClipEndByRefPos(record, 21, newCigar) == 14);
00552 newCigar.getCigarString(newCigarString);
00553
00554 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I2M10S3H") == 0);
00555
00556
00557
00558 assert(CigarHelper::softClipEndByRefPos(record, 22, newCigar) == 15);
00559 newCigar.getCigarString(newCigarString);
00560
00561 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M9S3H") == 0);
00562
00563
00564
00565 assert(CigarHelper::softClipEndByRefPos(record, 23, newCigar) == 16);
00566 newCigar.getCigarString(newCigarString);
00567
00568 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P1M8S3H") == 0);
00569
00570
00571
00572 assert(CigarHelper::softClipEndByRefPos(record, 24, newCigar) == 17);
00573 newCigar.getCigarString(newCigarString);
00574
00575 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P2M7S3H") == 0);
00576
00577
00578
00579 assert(CigarHelper::softClipEndByRefPos(record, 25, newCigar) == 18);
00580 newCigar.getCigarString(newCigarString);
00581
00582 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P3M6S3H") == 0);
00583
00584
00585
00586 assert(CigarHelper::softClipEndByRefPos(record, 26, newCigar) == 18);
00587 newCigar.getCigarString(newCigarString);
00588
00589 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P3M6S3H") == 0);
00590
00591
00592
00593 assert(CigarHelper::softClipEndByRefPos(record, 27, newCigar) == 18);
00594 newCigar.getCigarString(newCigarString);
00595
00596 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P3M6S3H") == 0);
00597
00598
00599
00600 assert(CigarHelper::softClipEndByRefPos(record, 28, newCigar) == 18);
00601 newCigar.getCigarString(newCigarString);
00602
00603 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P3M6S3H") == 0);
00604
00605
00606
00607 assert(CigarHelper::softClipEndByRefPos(record, 29, newCigar) == 19);
00608 newCigar.getCigarString(newCigarString);
00609
00610 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P3M3D1M5S3H") == 0);
00611
00612
00613
00614 assert(CigarHelper::softClipEndByRefPos(record, 30, newCigar) == 20);
00615 newCigar.getCigarString(newCigarString);
00616
00617 assert(strcmp(newCigarString.c_str(), "3H3S3M3D3M3I3M3P3M3D2M4S3H") == 0);
00618
00619
00620
00621 assert(CigarHelper::softClipEndByRefPos(record, 31, newCigar) ==
00622 CigarHelper::NO_CLIP);
00623 newCigar.getCigarString(newCigarString);
00624
00625 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00626
00627
00628
00629
00630
00631 origCigar = "3M3D3I3M";
00632 record.setCigar(origCigar);
00633 record.setSequence("GGGAAAGGG");
00634
00635
00636
00637
00638
00639 record.setCigar(origCigar);
00640 assert(CigarHelper::softClipEndByRefPos(record, 9, newCigar) == 0);
00641 newCigar.getCigarString(newCigarString);
00642
00643 assert(strcmp(newCigarString.c_str(), "9S") == 0);
00644
00645 record.setCigar(origCigar);
00646 assert(CigarHelper::softClipEndByRefPos(record, 10, newCigar) == 0);
00647 newCigar.getCigarString(newCigarString);
00648
00649 assert(strcmp(newCigarString.c_str(), "9S") == 0);
00650
00651 record.setCigar(origCigar);
00652 assert(CigarHelper::softClipEndByRefPos(record, 11, newCigar) == 1);
00653 newCigar.getCigarString(newCigarString);
00654
00655 assert(strcmp(newCigarString.c_str(), "1M8S") == 0);
00656
00657 record.setCigar(origCigar);
00658 assert(CigarHelper::softClipEndByRefPos(record, 12, newCigar) == 2);
00659 newCigar.getCigarString(newCigarString);
00660
00661 assert(strcmp(newCigarString.c_str(), "2M7S") == 0);
00662
00663 record.setCigar(origCigar);
00664 assert(CigarHelper::softClipEndByRefPos(record, 13, newCigar) == 3);
00665 newCigar.getCigarString(newCigarString);
00666
00667 assert(strcmp(newCigarString.c_str(), "3M6S") == 0);
00668
00669 record.setCigar(origCigar);
00670 assert(CigarHelper::softClipEndByRefPos(record, 14, newCigar) == 3);
00671 newCigar.getCigarString(newCigarString);
00672
00673 assert(strcmp(newCigarString.c_str(), "3M6S") == 0);
00674
00675 record.setCigar(origCigar);
00676 assert(CigarHelper::softClipEndByRefPos(record, 15, newCigar) == 3);
00677 newCigar.getCigarString(newCigarString);
00678
00679 assert(strcmp(newCigarString.c_str(), "3M6S") == 0);
00680
00681 record.setCigar(origCigar);
00682 assert(CigarHelper::softClipEndByRefPos(record, 16, newCigar) == 6);
00683 newCigar.getCigarString(newCigarString);
00684
00685 assert(strcmp(newCigarString.c_str(), "3M3D3I3S") == 0);
00686
00687 record.setCigar(origCigar);
00688 assert(CigarHelper::softClipEndByRefPos(record, 17, newCigar) == 7);
00689 newCigar.getCigarString(newCigarString);
00690
00691 assert(strcmp(newCigarString.c_str(), "3M3D3I1M2S") == 0);
00692
00693 record.setCigar(origCigar);
00694 assert(CigarHelper::softClipEndByRefPos(record, 18, newCigar) == 8);
00695 newCigar.getCigarString(newCigarString);
00696
00697 assert(strcmp(newCigarString.c_str(), "3M3D3I2M1S") == 0);
00698
00699 record.setCigar(origCigar);
00700 assert(CigarHelper::softClipEndByRefPos(record, 19, newCigar) ==
00701 CigarHelper::NO_CLIP);
00702 newCigar.getCigarString(newCigarString);
00703
00704 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00705
00706
00707
00708
00709 origCigar = "3H3S3D3M3S3H";
00710 record.setCigar(origCigar);
00711 record.setSequence("gggAAAggg");
00712
00713
00714
00715
00716
00717 record.setCigar(origCigar);
00718 assert(CigarHelper::softClipEndByRefPos(record, 9, newCigar) == 0);
00719 newCigar.getCigarString(newCigarString);
00720
00721 assert(strcmp(newCigarString.c_str(), "3H9S3H") == 0);
00722
00723 record.setCigar(origCigar);
00724 assert(CigarHelper::softClipEndByRefPos(record, 10, newCigar) == 0);
00725 newCigar.getCigarString(newCigarString);
00726
00727 assert(strcmp(newCigarString.c_str(), "3H9S3H") == 0);
00728
00729 record.setCigar(origCigar);
00730 assert(CigarHelper::softClipEndByRefPos(record, 11, newCigar) == 0);
00731 newCigar.getCigarString(newCigarString);
00732
00733 assert(strcmp(newCigarString.c_str(), "3H9S3H") == 0);
00734
00735 record.setCigar(origCigar);
00736 assert(CigarHelper::softClipEndByRefPos(record, 12, newCigar) == 0);
00737 newCigar.getCigarString(newCigarString);
00738
00739 assert(strcmp(newCigarString.c_str(), "3H9S3H") == 0);
00740
00741 record.setCigar(origCigar);
00742 assert(CigarHelper::softClipEndByRefPos(record, 13, newCigar) == 0);
00743 newCigar.getCigarString(newCigarString);
00744
00745 assert(strcmp(newCigarString.c_str(), "3H9S3H") == 0);
00746
00747 record.setCigar(origCigar);
00748 assert(CigarHelper::softClipEndByRefPos(record, 14, newCigar) == 4);
00749 newCigar.getCigarString(newCigarString);
00750
00751 assert(strcmp(newCigarString.c_str(), "3H3S3D1M5S3H") == 0);
00752
00753 record.setCigar(origCigar);
00754 assert(CigarHelper::softClipEndByRefPos(record, 15, newCigar) == 5);
00755 newCigar.getCigarString(newCigarString);
00756
00757 assert(strcmp(newCigarString.c_str(), "3H3S3D2M4S3H") == 0);
00758
00759 record.setCigar(origCigar);
00760 assert(CigarHelper::softClipEndByRefPos(record, 16, newCigar) ==
00761 CigarHelper::NO_CLIP);
00762 newCigar.getCigarString(newCigarString);
00763
00764 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00765
00766
00767
00768
00769 origCigar = "3H3S3I3M3S3H";
00770 record.setCigar(origCigar);
00771 record.setSequence("gggAAATTTggg");
00772
00773
00774
00775
00776
00777 record.setCigar(origCigar);
00778 assert(CigarHelper::softClipEndByRefPos(record, 9, newCigar) == 0);
00779 newCigar.getCigarString(newCigarString);
00780
00781 assert(strcmp(newCigarString.c_str(), "3H12S3H") == 0);
00782
00783 record.setCigar(origCigar);
00784 assert(CigarHelper::softClipEndByRefPos(record, 10, newCigar) == 6);
00785 newCigar.getCigarString(newCigarString);
00786
00787 assert(strcmp(newCigarString.c_str(), "3H3S3I6S3H") == 0);
00788
00789 record.setCigar(origCigar);
00790 assert(CigarHelper::softClipEndByRefPos(record, 11, newCigar) == 7);
00791 newCigar.getCigarString(newCigarString);
00792
00793 assert(strcmp(newCigarString.c_str(), "3H3S3I1M5S3H") == 0);
00794
00795 record.setCigar(origCigar);
00796 assert(CigarHelper::softClipEndByRefPos(record, 12, newCigar) == 8);
00797 newCigar.getCigarString(newCigarString);
00798
00799 assert(strcmp(newCigarString.c_str(), "3H3S3I2M4S3H") == 0);
00800
00801 record.setCigar(origCigar);
00802 assert(CigarHelper::softClipEndByRefPos(record, 13, newCigar) ==
00803 CigarHelper::NO_CLIP);
00804 newCigar.getCigarString(newCigarString);
00805
00806 assert(strcmp(newCigarString.c_str(), origCigar) == 0);
00807 }