00001 #include "config.h"
00002
00003 #ifdef HAVE_UNISTD_H
00004 #include <unistd.h>
00005 #endif
00006
00007 #include <iostream>
00008 #include <fstream>
00009 #include <string>
00010 #include <cassert>
00011 #include <cerrno>
00012
00013 #include "debug.h"
00014 #include "d_debug.h"
00015
00016 #ifdef DEBUG
00017
00018
00019
00020 class class1;
00021
00022 debug_generate_class_headers(class1);
00023
00024 class class1
00025 {
00026 public:
00027 int num;
00028
00029 class1()
00030 {
00031 debug;
00032
00033 num = 0;
00034 debug_var(num);
00035 }
00036
00037 class1& operator=(const class1 a_class)
00038 {
00039 debug;
00040 debug_input_var(a_class);
00041
00042 num = a_class.num;
00043 debug_var(num);
00044
00045 debug_output_var(*this);
00046 return(*this);
00047 }
00048
00049 #ifdef DEBUG
00050 void __debug_write(debug_instance& di) const
00051 {
00052 di_var(num);
00053 }
00054 #endif
00055 };
00056
00057 debug_generate_class_code(class1);
00058
00059
00060
00061 class class2
00062 {
00063 public:
00064 std::vector<class1> v;
00065
00066 class2()
00067 {
00068 debug;
00069
00070 class1 c1, c2, c3, c4, c5;
00071 v.push_back(c1);
00072 v.push_back(c2);
00073 v.push_back(c3);
00074 v.push_back(c4);
00075 v.push_back(c5);
00076 debug_var(v);
00077 }
00078
00079 #ifdef DEBUG
00080 void __debug_write(debug_instance& di) const
00081 {
00082 di_var(v);
00083 }
00084 #endif
00085 };
00086
00087 debug_generate_class_code(class2);
00088
00089
00090
00091 class class3
00092 {
00093 public:
00094 std::vector<class1*> v;
00095
00096 class3()
00097 {
00098 debug;
00099
00100 class1 *c1ptr, *c2ptr, *c3ptr, *c4ptr, *c5ptr;
00101
00102 c1ptr = new class1;
00103 c2ptr = new class1;
00104 c3ptr = new class1;
00105 c4ptr = new class1;
00106 c5ptr = new class1;
00107
00108 v.push_back(c1ptr);
00109 v.push_back(c2ptr);
00110 v.push_back(c3ptr);
00111 v.push_back(c4ptr);
00112 v.push_back(c5ptr);
00113 debug_var(v);
00114 }
00115
00116 #ifdef DEBUG
00117 void __debug_write(debug_instance& di) const
00118 {
00119 di_var(v);
00120 }
00121 #endif
00122 };
00123
00124 debug_generate_class_code(class3);
00125
00126
00127
00128 class class4
00129 {
00130 public:
00131 enum colors {
00132 yellow,
00133 blue,
00134 green,
00135 orange,
00136 black,
00137 brown,
00138 purple,
00139 };
00140 typedef struct {
00141 int a;
00142 char b;
00143 } c4s;
00144
00145 colors c;
00146 c4s cs;
00147
00148 class4();
00149
00150 #ifdef DEBUG
00151 void __debug_write(debug_instance& di) const;
00152 #endif
00153 };
00154
00155 #ifdef DEBUG
00156 debug_generate_class_headers(class4);
00157 debug_generate_enum_headers(class4);
00158 debug_generate_struct_headers(class4);
00159
00160 void __debug_write(debug_instance& di, const class4::colors& a_arg)
00161 {
00162 di_switch_enums(
00163 di_enum(class4::yellow)
00164 di_enum(class4::blue)
00165 di_enum(class4::green)
00166 di_enum(class4::orange)
00167 di_enum(class4::black)
00168 di_enum(class4::purple)
00169 di_enum(class4::brown)
00170 );
00171 }
00172
00173 debug_generate_enum_code(class4::colors);
00174
00175 void __debug_write(debug_instance& di, const class4::c4s& a_arg)
00176 {
00177 di_struct(a_arg,a);
00178 di_struct(a_arg,b);
00179 }
00180
00181 debug_generate_struct_code(class4::c4s);
00182
00183 void class4::__debug_write(debug_instance& di) const
00184 {
00185 di_var(c);
00186 di_var(cs);
00187 }
00188
00189 debug_generate_class_code(class4);
00190 #endif
00191
00192 class4::class4()
00193 {
00194 debug;
00195
00196 c = brown;
00197 cs.a = 5;
00198 cs.b = 'F';
00199
00200 debug_var(c);
00201 debug_var(cs);
00202 }
00203
00204
00205
00206 int f1(int a)
00207 {
00208 int b;
00209
00210 debug;
00211
00212 b = 5;
00213
00214 return(a);
00215 }
00216
00217 int f2(int a)
00218 {
00219 int b;
00220
00221 debug;
00222 debug_input_var(a);
00223
00224 b = 5;
00225
00226 return(a);
00227 }
00228
00229 int f3(int a)
00230 {
00231 int b;
00232
00233 debug;
00234
00235 b = 5;
00236 debug_var(b);
00237
00238 return(a);
00239 }
00240
00241 int f4(int a)
00242 {
00243 int b;
00244
00245 debug;
00246
00247 b = 5;
00248
00249 debug_output_var(a);
00250 return(a);
00251 }
00252
00253 int f5(int a)
00254 {
00255 int b;
00256
00257 debug;
00258 debug_input_var(a);
00259
00260 b = 5;
00261 debug_var(b);
00262
00263 return(a);
00264 }
00265
00266 int f6(int a)
00267 {
00268 int b;
00269
00270 debug;
00271
00272 b = 5;
00273 debug_var(b);
00274
00275 debug_output_var(a);
00276 return(a);
00277 }
00278
00279 int f7(int a)
00280 {
00281 int b;
00282
00283 debug;
00284 debug_input_var(a);
00285
00286 b = 5;
00287
00288 debug_output_var(a);
00289 return(a);
00290 }
00291
00292 int f8(int a)
00293 {
00294 int b;
00295
00296 debug;
00297 debug_input_var(a);
00298
00299 b = 5;
00300 debug_var(b);
00301
00302 debug_output_var(a);
00303 return(a);
00304 }
00305
00306 int f9(int a)
00307 {
00308 int b;
00309
00310 debug;
00311
00312 b = 5;
00313 f1(a+1);
00314
00315 return(a);
00316 }
00317
00318 int f10(int a)
00319 {
00320 int b;
00321
00322 debug;
00323 debug_input_var(a);
00324
00325 b = 5;
00326 f1(a+1);
00327
00328 return(a);
00329 }
00330
00331 int f11(int a)
00332 {
00333 int b;
00334
00335 debug;
00336
00337 b = 5;
00338 debug_var(b);
00339 f1(a+1);
00340
00341 return(a);
00342 }
00343
00344 int f12(int a)
00345 {
00346 int b;
00347
00348 debug;
00349 debug_input_var(a);
00350
00351 b = 5;
00352 debug_var(b);
00353 f1(a+1);
00354
00355 return(a);
00356 }
00357
00358 int bar(int a)
00359 {
00360 debug;
00361 debug_input_var(a);
00362
00363 a += 2;
00364 debug_var(a);
00365
00366 debug_output_var(a);
00367 return(a);
00368 }
00369
00370 int foo(int a)
00371 {
00372 debug;
00373 debug_input_var(a);
00374
00375 a = bar(a+5);
00376 debug_var(a);
00377
00378 a += 3;
00379 debug_var(a);
00380
00381 debug_output_var(a);
00382 return(a);
00383 }
00384
00385 void test(void)
00386 {
00387 {
00388 std::cerr
00389 << " You should see an error message here:"
00390 << std::endl
00391 << "------------------------------------------------------------"
00392 << std::endl
00393 ;
00394 debug_manager.init("./lkjsdlkfj/lksjdlkfj.lkjlkjfg/lkjlkjfl.out");
00395 assert(!debug_manager.ok());
00396 debug_manager.write("Hello World!");
00397 debug_manager.close();
00398 std::cerr
00399 << "------------------------------------------------------------"
00400 << std::endl
00401 ;
00402 }
00403
00404 {
00405 debug_manager.init("./test-debug.debug");
00406 assert(debug_manager.ok());
00407 debug_manager.write('H');
00408 assert(debug_manager.ok());
00409 debug_manager.close();
00410
00411 assert(ddbg.open("./test-debug.debug"));
00412 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00413 assert(ddbg.get_line() && ddbg.str_equal("H"));
00414 assert(ddbg.close());
00415 assert(unlink("./test-debug.debug") == 0);
00416 }
00417
00418 {
00419 debug_manager.init("./test-debug.debug");
00420 assert(debug_manager.ok());
00421
00422 {
00423 debug;
00424
00425 bool l_b = true;
00426 char l_c = 'b';
00427 unsigned int l_ui = 5;
00428 int l_i = -7;
00429 unsigned short l_us = 3;
00430 short l_s = -4;
00431 unsigned long l_ul = 8;
00432 long l_l = -8;
00433 unsigned long long l_ull = 10;
00434 long long l_ll = -11;
00435 float l_f = 2.65;
00436 double l_d = 3.24;
00437 char* l_cp = "Hello World";
00438
00439 debug_write(l_b); debug_write(std::endl);
00440 debug_write(l_c); debug_write(std::endl);
00441 debug_write(l_ui); debug_write(std::endl);
00442 debug_write(l_i); debug_write(std::endl);
00443 debug_write(l_us); debug_write(std::endl);
00444 debug_write(l_s); debug_write(std::endl);
00445 debug_write(l_ul); debug_write(std::endl);
00446 debug_write(l_l); debug_write(std::endl);
00447 debug_write(l_ull); debug_write(std::endl);
00448 debug_write(l_ll); debug_write(std::endl);
00449 debug_write(l_f); debug_write(std::endl);
00450 debug_write(l_d); debug_write(std::endl);
00451 debug_write(l_cp); debug_write(std::endl);
00452 debug_write((void*)&l_b); debug_write(std::endl);
00453 debug_write((void*)&l_c); debug_write(std::endl);
00454 debug_write((void*)&l_ui); debug_write(std::endl);
00455 debug_write((void*)&l_i); debug_write(std::endl);
00456 debug_write((void*)&l_us); debug_write(std::endl);
00457 debug_write((void*)&l_s); debug_write(std::endl);
00458 debug_write((void*)&l_ul); debug_write(std::endl);
00459 debug_write((void*)&l_l); debug_write(std::endl);
00460 debug_write((void*)&l_ull); debug_write(std::endl);
00461 debug_write((void*)&l_ll); debug_write(std::endl);
00462 debug_write((void*)&l_f); debug_write(std::endl);
00463 debug_write((void*)&l_d); debug_write(std::endl);
00464 debug_write((void*)l_cp); debug_write(std::endl);
00465 debug_write(__debug_type(l_b)); debug_write(std::endl);
00466 debug_write(__debug_type(l_c)); debug_write(std::endl);
00467 debug_write(__debug_type(l_ui)); debug_write(std::endl);
00468 debug_write(__debug_type(l_i)); debug_write(std::endl);
00469 debug_write(__debug_type(l_us)); debug_write(std::endl);
00470 debug_write(__debug_type(l_s)); debug_write(std::endl);
00471 debug_write(__debug_type(l_ul)); debug_write(std::endl);
00472 debug_write(__debug_type(l_l)); debug_write(std::endl);
00473 debug_write(__debug_type(l_ull)); debug_write(std::endl);
00474 debug_write(__debug_type(l_ll)); debug_write(std::endl);
00475 debug_write(__debug_type(l_f)); debug_write(std::endl);
00476 debug_write(__debug_type(l_d)); debug_write(std::endl);
00477 debug_write(__debug_type(l_cp)); debug_write(std::endl);
00478 debug_var(l_b);
00479 debug_var(l_c);
00480 debug_var(l_ui);
00481 debug_var(l_i);
00482 debug_var(l_us);
00483 debug_var(l_s);
00484 debug_var(l_ul);
00485 debug_var(l_l);
00486 debug_var(l_ull);
00487 debug_var(l_ll);
00488 debug_var(l_f);
00489 debug_var(l_d);
00490 debug_var(l_cp);
00491 debug_var(&l_b);
00492 debug_var(&l_c);
00493 debug_var(&l_ui);
00494 debug_var(&l_i);
00495 debug_var(&l_us);
00496 debug_var(&l_s);
00497 debug_var(&l_ul);
00498 debug_var(&l_l);
00499 debug_var(&l_ull);
00500 debug_var(&l_ll);
00501 debug_var(&l_f);
00502 debug_var(&l_d);
00503 debug_var(&l_cp);
00504 }
00505
00506 debug_manager.close();
00507
00508 assert(ddbg.open("./test-debug.debug"));
00509 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00510 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: void test()"));
00511
00512 assert(ddbg.str_sandwich("test-debug.cc[","]:","void test()"));
00513
00514 assert(ddbg.get_line() && ddbg.str_equal("{"));
00515 assert(ddbg.get_line() && ddbg.str_equal("| true"));
00516 assert(ddbg.get_line() && ddbg.str_equal("| b"));
00517 assert(ddbg.get_line() && ddbg.str_equal("| 5"));
00518 assert(ddbg.get_line() && ddbg.str_equal("| -7"));
00519 assert(ddbg.get_line() && ddbg.str_equal("| 3"));
00520 assert(ddbg.get_line() && ddbg.str_equal("| -4"));
00521 assert(ddbg.get_line() && ddbg.str_equal("| 8"));
00522 assert(ddbg.get_line() && ddbg.str_equal("| -8"));
00523 assert(ddbg.get_line() && ddbg.str_equal("| 10"));
00524 assert(ddbg.get_line() && ddbg.str_equal("| -11"));
00525 assert(ddbg.get_line() && ddbg.str_begin("| 2.65"));
00526 assert(ddbg.get_line() && ddbg.str_begin("| 3.24"));
00527 assert(ddbg.get_line() && ddbg.str_equal("| Hello World"));
00528 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00529 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00530 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00531 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00532 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00533 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00534 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00535 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00536 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00537 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00538 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00539 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00540 assert(ddbg.get_line() && ddbg.str_begin("| 0x"));
00541 assert(ddbg.get_line() && ddbg.str_equal("| bool"));
00542 assert(ddbg.get_line() && ddbg.str_equal("| char"));
00543 assert(ddbg.get_line() && ddbg.str_equal("| unsigned int"));
00544 assert(ddbg.get_line() && ddbg.str_equal("| int"));
00545 assert(ddbg.get_line() && ddbg.str_equal("| unsigned short"));
00546 assert(ddbg.get_line() && ddbg.str_equal("| short"));
00547 assert(ddbg.get_line() && ddbg.str_equal("| unsigned long"));
00548 assert(ddbg.get_line() && ddbg.str_equal("| long"));
00549 assert(ddbg.get_line() && ddbg.str_equal("| unsigned long long"));
00550 assert(ddbg.get_line() && ddbg.str_equal("| long long"));
00551 assert(ddbg.get_line() && ddbg.str_equal("| float"));
00552 assert(ddbg.get_line() && ddbg.str_equal("| double"));
00553 assert(ddbg.get_line() && ddbg.str_equal("| char *"));
00554 assert(ddbg.get_line() && ddbg.str_equal("| "));
00555 assert(ddbg.get_line() && ddbg.str_wrap("| l_b = (bool at ",") true"));
00556 assert(ddbg.get_line() && ddbg.str_wrap("| l_c = (char at ",") 'b'"));
00557 assert(ddbg.get_line() && ddbg.str_wrap("| l_ui = (unsigned int at ",") 5"));
00558 assert(ddbg.get_line() && ddbg.str_wrap("| l_i = (int at ",") -7"));
00559 assert(ddbg.get_line() && ddbg.str_wrap("| l_us = (unsigned short at ",") 3"));
00560 assert(ddbg.get_line() && ddbg.str_wrap("| l_s = (short at ",") -4"));
00561 assert(ddbg.get_line() && ddbg.str_wrap("| l_ul = (unsigned long at ",") 8"));
00562 assert(ddbg.get_line() && ddbg.str_wrap("| l_l = (long at ",") -8"));
00563 assert(ddbg.get_line() && ddbg.str_wrap("| l_ull = (unsigned long long at ",") 10"));
00564 assert(ddbg.get_line() && ddbg.str_wrap("| l_ll = (long long at ",") -11"));
00565 assert(ddbg.get_line() && ddbg.str_begin("| l_f = (float at "));
00566 assert(ddbg.get_line() && ddbg.str_begin("| l_d = (double at "));
00567 assert(ddbg.get_line() && ddbg.str_wrap("| l_cp = (char * at 0x",") \"Hello World\""));
00568 assert(ddbg.get_line() && ddbg.str_begin("| &l_b = (bool * at 0x"));
00569 assert(ddbg.get_line() && ddbg.str_wrap("| &l_c = (char * at 0x",") \"b\""));
00570 assert(ddbg.get_line() && ddbg.str_begin("| &l_ui = (unsigned int * at 0x"));
00571 assert(ddbg.get_line() && ddbg.str_begin("| &l_i = (int * at 0x"));
00572 assert(ddbg.get_line() && ddbg.str_begin("| &l_us = (unsigned short * at 0x"));
00573 assert(ddbg.get_line() && ddbg.str_begin("| &l_s = (short * at 0x"));
00574 assert(ddbg.get_line() && ddbg.str_begin("| &l_ul = (unsigned long * at 0x"));
00575 assert(ddbg.get_line() && ddbg.str_begin("| &l_l = (long * at 0x"));
00576 assert(ddbg.get_line() && ddbg.str_begin("| &l_ull = (unsigned long long * at 0x"));
00577 assert(ddbg.get_line() && ddbg.str_begin("| &l_ll = (long long * at 0x"));
00578 assert(ddbg.get_line() && ddbg.str_begin("| &l_f = (float * at 0x"));
00579 assert(ddbg.get_line() && ddbg.str_begin("| &l_d = (double * at 0x"));
00580 assert(ddbg.get_line() && ddbg.str_begin("| &l_cp = (void * at 0x"));
00581 assert(ddbg.get_line() && ddbg.str_equal("}"));
00582 assert(ddbg.close());
00583 assert(unlink("./test-debug.debug") == 0);
00584 }
00585
00586 {
00587 errno = 0;
00588 debug_init("./test-debug.debug");
00589
00590 f1(6);
00591
00592 debug_close;
00593
00594 assert(ddbg.open("./test-debug.debug"));
00595 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00596 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f1(int)"));
00597 assert(ddbg.get_line() && ddbg.str_equal("{"));
00598 assert(ddbg.get_line() && ddbg.str_equal("}"));
00599 assert(ddbg.close());
00600 assert(unlink("./test-debug.debug") == 0);
00601 }
00602
00603 {
00604 errno = 0;
00605 debug_init("./test-debug.debug");
00606
00607 f2(6);
00608
00609 debug_close;
00610
00611 assert(ddbg.open("./test-debug.debug"));
00612 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00613 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f2(int)"));
00614 assert(ddbg.get_line() && ddbg.str_equal("{"));
00615 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00616 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00617 assert(ddbg.get_line() && ddbg.str_equal("}"));
00618 assert(ddbg.close());
00619 assert(unlink("./test-debug.debug") == 0);
00620 }
00621
00622 {
00623 errno = 0;
00624 debug_init("./test-debug.debug");
00625
00626 f3(6);
00627
00628 debug_close;
00629
00630 assert(ddbg.open("./test-debug.debug"));
00631 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00632 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f3(int)"));
00633 assert(ddbg.get_line() && ddbg.str_equal("{"));
00634 assert(ddbg.get_line() && ddbg.str_wrap("| b = (int ",") 5"));
00635 assert(ddbg.get_line() && ddbg.str_equal("}"));
00636 assert(ddbg.close());
00637 assert(unlink("./test-debug.debug") == 0);
00638 }
00639
00640 {
00641 errno = 0;
00642 debug_init("./test-debug.debug");
00643
00644 f4(6);
00645
00646 debug_close;
00647
00648 assert(ddbg.open("./test-debug.debug"));
00649 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00650 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f4(int)"));
00651 assert(ddbg.get_line() && ddbg.str_equal("{"));
00652 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
00653 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00654 assert(ddbg.get_line() && ddbg.str_equal("}"));
00655 assert(ddbg.close());
00656 assert(unlink("./test-debug.debug") == 0);
00657 }
00658
00659 {
00660 errno = 0;
00661 debug_init("./test-debug.debug");
00662
00663 f5(6);
00664
00665 debug_close;
00666
00667 assert(ddbg.open("./test-debug.debug"));
00668 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00669 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f5(int)"));
00670 assert(ddbg.get_line() && ddbg.str_equal("{"));
00671 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00672 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00673 assert(ddbg.get_line() && ddbg.str_equal("| "));
00674 assert(ddbg.get_line() && ddbg.str_wrap("| b = (int ",") 5"));
00675 assert(ddbg.get_line() && ddbg.str_equal("}"));
00676 assert(ddbg.close());
00677 assert(unlink("./test-debug.debug") == 0);
00678 }
00679
00680 {
00681 errno = 0;
00682 debug_init("./test-debug.debug");
00683
00684 f6(6);
00685
00686 debug_close;
00687
00688 assert(ddbg.open("./test-debug.debug"));
00689 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00690 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f6(int)"));
00691 assert(ddbg.get_line() && ddbg.str_equal("{"));
00692 assert(ddbg.get_line() && ddbg.str_wrap("| b = (int ",") 5"));
00693 assert(ddbg.get_line() && ddbg.str_equal("| "));
00694 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
00695 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00696 assert(ddbg.get_line() && ddbg.str_equal("}"));
00697 assert(ddbg.close());
00698 assert(unlink("./test-debug.debug") == 0);
00699 }
00700
00701 {
00702 errno = 0;
00703 debug_init("./test-debug.debug");
00704
00705 f7(6);
00706
00707 debug_close;
00708
00709 assert(ddbg.open("./test-debug.debug"));
00710 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00711 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f7(int)"));
00712 assert(ddbg.get_line() && ddbg.str_equal("{"));
00713 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00714 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00715 assert(ddbg.get_line() && ddbg.str_equal("| "));
00716 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
00717 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00718 assert(ddbg.get_line() && ddbg.str_equal("}"));
00719 assert(ddbg.close());
00720 assert(unlink("./test-debug.debug") == 0);
00721 }
00722
00723 {
00724 errno = 0;
00725 debug_init("./test-debug.debug");
00726
00727 f8(6);
00728
00729 debug_close;
00730
00731 assert(ddbg.open("./test-debug.debug"));
00732 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00733 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f8(int)"));
00734 assert(ddbg.get_line() && ddbg.str_equal("{"));
00735 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00736 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00737 assert(ddbg.get_line() && ddbg.str_equal("| "));
00738 assert(ddbg.get_line() && ddbg.str_wrap("| b = (int ",") 5"));
00739 assert(ddbg.get_line() && ddbg.str_equal("| "));
00740 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
00741 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00742 assert(ddbg.get_line() && ddbg.str_equal("}"));
00743 assert(ddbg.close());
00744 assert(unlink("./test-debug.debug") == 0);
00745 }
00746
00747 {
00748 errno = 0;
00749 debug_init("./test-debug.debug");
00750
00751 f9(6);
00752
00753 debug_close;
00754
00755 assert(ddbg.open("./test-debug.debug"));
00756 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00757 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f9(int)"));
00758 assert(ddbg.get_line() && ddbg.str_equal("{"));
00759 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int f1(int)"));
00760 assert(ddbg.get_line() && ddbg.str_equal("| {"));
00761 assert(ddbg.get_line() && ddbg.str_equal("| }"));
00762 assert(ddbg.get_line() && ddbg.str_equal("}"));
00763 assert(ddbg.close());
00764 assert(unlink("./test-debug.debug") == 0);
00765 }
00766
00767 {
00768 errno = 0;
00769 debug_init("./test-debug.debug");
00770
00771 f10(6);
00772
00773 debug_close;
00774
00775 assert(ddbg.open("./test-debug.debug"));
00776 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00777 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f10(int)"));
00778 assert(ddbg.get_line() && ddbg.str_equal("{"));
00779 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00780 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00781 assert(ddbg.get_line() && ddbg.str_equal("| "));
00782 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int f1(int)"));
00783 assert(ddbg.get_line() && ddbg.str_equal("| {"));
00784 assert(ddbg.get_line() && ddbg.str_equal("| }"));
00785 assert(ddbg.get_line() && ddbg.str_equal("}"));
00786 assert(ddbg.close());
00787 assert(unlink("./test-debug.debug") == 0);
00788 }
00789
00790 {
00791 errno = 0;
00792 debug_init("./test-debug.debug");
00793
00794 f11(6);
00795
00796 debug_close;
00797
00798 assert(ddbg.open("./test-debug.debug"));
00799 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00800 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f11(int)"));
00801 assert(ddbg.get_line() && ddbg.str_equal("{"));
00802 assert(ddbg.get_line() && ddbg.str_wrap("| b = (int ",") 5"));
00803 assert(ddbg.get_line() && ddbg.str_equal("| "));
00804 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int f1(int)"));
00805 assert(ddbg.get_line() && ddbg.str_equal("| {"));
00806 assert(ddbg.get_line() && ddbg.str_equal("| }"));
00807 assert(ddbg.get_line() && ddbg.str_equal("}"));
00808 assert(ddbg.close());
00809 assert(unlink("./test-debug.debug") == 0);
00810 }
00811
00812 {
00813 errno = 0;
00814 debug_init("./test-debug.debug");
00815
00816 f12(6);
00817
00818 debug_close;
00819
00820 assert(ddbg.open("./test-debug.debug"));
00821 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00822 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int f12(int)"));
00823 assert(ddbg.get_line() && ddbg.str_equal("{"));
00824 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00825 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 6"));
00826 assert(ddbg.get_line() && ddbg.str_equal("| "));
00827 assert(ddbg.get_line() && ddbg.str_wrap("| b = (int ",") 5"));
00828 assert(ddbg.get_line() && ddbg.str_equal("| "));
00829 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int f1(int)"));
00830 assert(ddbg.get_line() && ddbg.str_equal("| {"));
00831 assert(ddbg.get_line() && ddbg.str_equal("| }"));
00832 assert(ddbg.get_line() && ddbg.str_equal("}"));
00833 assert(ddbg.close());
00834 assert(unlink("./test-debug.debug") == 0);
00835 }
00836
00837 {
00838 errno = 0;
00839 debug_init("./test-debug.debug");
00840 debug_manager.set_depth(1);
00841
00842 foo(5);
00843
00844 debug_close;
00845
00846 assert(ddbg.open("./test-debug.debug"));
00847 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00848 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
00849 assert(ddbg.get_line() && ddbg.str_equal("{"));
00850 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00851 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 5"));
00852 assert(ddbg.get_line() && ddbg.str_equal("| "));
00853 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
00854 assert(ddbg.get_line() && ddbg.str_equal("| {"));
00855 assert(ddbg.get_line() && ddbg.str_equal("| }"));
00856 assert(ddbg.get_line() && ddbg.str_equal("| "));
00857 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 12"));
00858 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
00859 assert(ddbg.get_line() && ddbg.str_equal("| "));
00860 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
00861 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
00862 assert(ddbg.get_line() && ddbg.str_equal("}"));
00863 assert(ddbg.close());
00864 assert(unlink("./test-debug.debug") == 0);
00865 }
00866
00867 {
00868 errno = 0;
00869 debug_init("./test-debug.debug");
00870 debug_manager.set_depth(2);
00871
00872 foo(5);
00873
00874 debug_close;
00875
00876 assert(ddbg.open("./test-debug.debug"));
00877 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00878 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
00879 assert(ddbg.get_line() && ddbg.str_equal("{"));
00880 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00881 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 5"));
00882 assert(ddbg.get_line() && ddbg.str_equal("| "));
00883 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
00884 assert(ddbg.get_line() && ddbg.str_equal("| {"));
00885 assert(ddbg.get_line() && ddbg.str_equal("| | Input:"));
00886 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 10"));
00887 assert(ddbg.get_line() && ddbg.str_equal("| | "));
00888 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
00889 assert(ddbg.get_line() && ddbg.str_equal("| | "));
00890 assert(ddbg.get_line() && ddbg.str_equal("| | Output:"));
00891 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
00892 assert(ddbg.get_line() && ddbg.str_equal("| }"));
00893 assert(ddbg.get_line() && ddbg.str_equal("| "));
00894 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 12"));
00895 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
00896 assert(ddbg.get_line() && ddbg.str_equal("| "));
00897 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
00898 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
00899 assert(ddbg.get_line() && ddbg.str_equal("}"));
00900 assert(ddbg.close());
00901 assert(unlink("./test-debug.debug") == 0);
00902 }
00903
00904 {
00905 errno = 0;
00906 int argc = 0;
00907 char * argv[256] = { 0 };
00908
00909 argv[argc++] = "<program>";
00910 argv[argc++] = "--debug";
00911
00912 std::cerr
00913 << " You should see an error message here:"
00914 << std::endl
00915 << "------------------------------------------------------------"
00916 << std::endl
00917 ;
00918 debug_args(argc, argv);
00919 std::cerr
00920 << "------------------------------------------------------------"
00921 << std::endl
00922 ;
00923 assert(!debug_manager.ok());
00924 debug_close;
00925 }
00926
00927 {
00928 errno = 0;
00929 int argc = 0;
00930 char * argv[256] = { 0 };
00931
00932 argv[argc++] = "<program>";
00933 argv[argc++] = "--debug-level";
00934
00935 std::cerr
00936 << " You should see an error message here:"
00937 << std::endl
00938 << "------------------------------------------------------------"
00939 << std::endl
00940 ;
00941 debug_args(argc, argv);
00942 std::cerr
00943 << "------------------------------------------------------------"
00944 << std::endl
00945 ;
00946 assert(!debug_manager.ok());
00947 debug_close;
00948 }
00949
00950 {
00951 errno = 0;
00952 int argc = 0;
00953 char * argv[256] = { 0 };
00954
00955 argv[argc++] = "<program>";
00956 argv[argc++] = "--debug";
00957 argv[argc++] = "./test-debug.debug";
00958 argv[argc++] = "--debug-level";
00959 argv[argc++] = "2";
00960
00961 debug_args(argc, argv);
00962 assert(debug_manager.ok());
00963 foo(5);
00964 debug_close;
00965 assert(argc == 1);
00966 assert(argv[0] == "<program>");
00967
00968 assert(ddbg.open("./test-debug.debug"));
00969 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
00970 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
00971 assert(ddbg.get_line() && ddbg.str_equal("{"));
00972 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
00973 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 5"));
00974 assert(ddbg.get_line() && ddbg.str_equal("| "));
00975 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
00976 assert(ddbg.get_line() && ddbg.str_equal("| {"));
00977 assert(ddbg.get_line() && ddbg.str_equal("| | Input:"));
00978 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 10"));
00979 assert(ddbg.get_line() && ddbg.str_equal("| | "));
00980 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
00981 assert(ddbg.get_line() && ddbg.str_equal("| | "));
00982 assert(ddbg.get_line() && ddbg.str_equal("| | Output:"));
00983 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
00984 assert(ddbg.get_line() && ddbg.str_equal("| }"));
00985 assert(ddbg.get_line() && ddbg.str_equal("| "));
00986 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 12"));
00987 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
00988 assert(ddbg.get_line() && ddbg.str_equal("| "));
00989 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
00990 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
00991 assert(ddbg.get_line() && ddbg.str_equal("}"));
00992 assert(ddbg.close());
00993 assert(unlink("./test-debug.debug") == 0);
00994 }
00995
00996 {
00997 errno = 0;
00998 int argc = 0;
00999 char * argv[256] = { 0 };
01000
01001 argv[argc++] = "<program>";
01002 argv[argc++] = "--some-argument";
01003 argv[argc++] = "--debug";
01004 argv[argc++] = "./test-debug.debug";
01005 argv[argc++] = "--debug-level";
01006 argv[argc++] = "2";
01007
01008 debug_args(argc, argv);
01009 assert(debug_manager.ok());
01010 foo(5);
01011 debug_close;
01012 assert(argc == 2);
01013 assert(argv[0] == "<program>");
01014 assert(argv[1] == "--some-argument");
01015
01016 assert(ddbg.open("./test-debug.debug"));
01017 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01018 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
01019 assert(ddbg.get_line() && ddbg.str_equal("{"));
01020 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
01021 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 5"));
01022 assert(ddbg.get_line() && ddbg.str_equal("| "));
01023 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
01024 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01025 assert(ddbg.get_line() && ddbg.str_equal("| | Input:"));
01026 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 10"));
01027 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01028 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
01029 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01030 assert(ddbg.get_line() && ddbg.str_equal("| | Output:"));
01031 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
01032 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01033 assert(ddbg.get_line() && ddbg.str_equal("| "));
01034 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 12"));
01035 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
01036 assert(ddbg.get_line() && ddbg.str_equal("| "));
01037 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
01038 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
01039 assert(ddbg.get_line() && ddbg.str_equal("}"));
01040 assert(ddbg.close());
01041 assert(unlink("./test-debug.debug") == 0);
01042 }
01043
01044 {
01045 errno = 0;
01046 int argc = 0;
01047 char * argv[256] = { 0 };
01048
01049 argv[argc++] = "<program>";
01050 argv[argc++] = "--debug";
01051 argv[argc++] = "./test-debug.debug";
01052 argv[argc++] = "--debug-level";
01053 argv[argc++] = "2";
01054 argv[argc++] = "--some-argument";
01055
01056 debug_args(argc, argv);
01057 assert(debug_manager.ok());
01058 foo(5);
01059 debug_close;
01060 assert(argc == 2);
01061 assert(argv[0] == "<program>");
01062 assert(argv[1] == "--some-argument");
01063
01064 assert(ddbg.open("./test-debug.debug"));
01065 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01066 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
01067 assert(ddbg.get_line() && ddbg.str_equal("{"));
01068 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
01069 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 5"));
01070 assert(ddbg.get_line() && ddbg.str_equal("| "));
01071 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
01072 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01073 assert(ddbg.get_line() && ddbg.str_equal("| | Input:"));
01074 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 10"));
01075 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01076 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
01077 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01078 assert(ddbg.get_line() && ddbg.str_equal("| | Output:"));
01079 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 12"));
01080 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01081 assert(ddbg.get_line() && ddbg.str_equal("| "));
01082 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 12"));
01083 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
01084 assert(ddbg.get_line() && ddbg.str_equal("| "));
01085 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
01086 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int ",") 15"));
01087 assert(ddbg.get_line() && ddbg.str_equal("}"));
01088 assert(ddbg.close());
01089 assert(unlink("./test-debug.debug") == 0);
01090 }
01091
01092 {
01093 errno = 0;
01094 int argc = 0;
01095 char * argv[256] = { 0 };
01096
01097 argv[argc++] = "<program>";
01098 argv[argc++] = "--debug";
01099 argv[argc++] = "./test-debug.debug";
01100
01101 debug_args(argc, argv);
01102 assert(debug_manager.ok());
01103
01104 {
01105 debug;
01106
01107 class1 c1;
01108
01109 debug_var(c1);
01110 }
01111 debug_close;
01112
01113 assert(ddbg.open("./test-debug.debug"));
01114 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01115 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: void test()"));
01116 assert(ddbg.get_line() && ddbg.str_equal("{"));
01117 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01118 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01119 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int ",") 0"));
01120 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01121 assert(ddbg.get_line() && ddbg.str_equal("| "));
01122 assert(ddbg.get_line() && ddbg.str_wrap("| c1 = (class1 at 0x",")"));
01123 assert(ddbg.get_line() && ddbg.str_wrap("| num = (int at ",") 0"));
01124 assert(ddbg.get_line() && ddbg.str_equal("}"));
01125 assert(ddbg.close());
01126 assert(unlink("./test-debug.debug") == 0);
01127 }
01128
01129 {
01130 errno = 0;
01131 int argc = 0;
01132 char * argv[256] = { 0 };
01133
01134 argv[argc++] = "<program>";
01135 argv[argc++] = "--debug";
01136 argv[argc++] = "./test-debug.debug";
01137
01138 debug_args(argc, argv);
01139 assert(debug_manager.ok());
01140
01141 {
01142 debug;
01143
01144 class2 c2;
01145
01146 debug_var(c2);
01147 }
01148 debug_close;
01149
01150 assert(ddbg.open("./test-debug.debug"));
01151 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01152 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: void test()"));
01153 assert(ddbg.get_line() && ddbg.str_equal("{"));
01154 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class2::class2()"));
01155 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01156 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01157 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01158 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01159 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01160 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01161 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01162 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01163 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01164 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01165 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01166 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01167 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01168 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01169 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01170 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01171 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01172 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01173 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01174 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01175 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01176 assert(ddbg.get_line() && ddbg.str_wrap("| | v = (std::vector<class1> at 0x",") (size: 5)"));
01177 assert(ddbg.get_line() && ddbg.str_wrap("| | [0] = (class1 at 0x",")"));
01178 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int at 0x",") 0"));
01179 assert(ddbg.get_line() && ddbg.str_wrap("| | [1] = (class1 at 0x",")"));
01180 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int at 0x",") 0"));
01181 assert(ddbg.get_line() && ddbg.str_wrap("| | [2] = (class1 at 0x",")"));
01182 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int at 0x",") 0"));
01183 assert(ddbg.get_line() && ddbg.str_wrap("| | [3] = (class1 at 0x",")"));
01184 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int at 0x",") 0"));
01185 assert(ddbg.get_line() && ddbg.str_wrap("| | [4] = (class1 at 0x",")"));
01186 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int at 0x",") 0"));
01187 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01188 assert(ddbg.get_line() && ddbg.str_equal("| "));
01189 assert(ddbg.get_line() && ddbg.str_wrap("| c2 = (class2 at 0x",")"));
01190 assert(ddbg.get_line() && ddbg.str_wrap("| v = (std::vector<class1> at 0x",") (size: 5)"));
01191 assert(ddbg.get_line() && ddbg.str_wrap("| [0] = (class1 at 0x",")"));
01192 assert(ddbg.get_line() && ddbg.str_wrap("| num = (int at 0x",") 0"));
01193 assert(ddbg.get_line() && ddbg.str_wrap("| [1] = (class1 at 0x",")"));
01194 assert(ddbg.get_line() && ddbg.str_wrap("| num = (int at 0x",") 0"));
01195 assert(ddbg.get_line() && ddbg.str_wrap("| [2] = (class1 at 0x",")"));
01196 assert(ddbg.get_line() && ddbg.str_wrap("| num = (int at 0x",") 0"));
01197 assert(ddbg.get_line() && ddbg.str_wrap("| [3] = (class1 at 0x",")"));
01198 assert(ddbg.get_line() && ddbg.str_wrap("| num = (int at 0x",") 0"));
01199 assert(ddbg.get_line() && ddbg.str_wrap("| [4] = (class1 at 0x",")"));
01200 assert(ddbg.get_line() && ddbg.str_wrap("| num = (int at 0x",") 0"));
01201 assert(ddbg.get_line() && ddbg.str_equal("}"));
01202 assert(ddbg.close());
01203 assert(unlink("./test-debug.debug") == 0);
01204 }
01205
01206 {
01207 errno = 0;
01208 int argc = 0;
01209 char * argv[256] = { 0 };
01210
01211 argv[argc++] = "<program>";
01212 argv[argc++] = "--debug";
01213 argv[argc++] = "./test-debug.debug";
01214
01215 debug_args(argc, argv);
01216 assert(debug_manager.ok());
01217
01218 class3 c3;
01219
01220 debug_close;
01221
01222 assert(ddbg.open("./test-debug.debug"));
01223 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01224 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: class3::class3()"));
01225 assert(ddbg.get_line() && ddbg.str_equal("{"));
01226 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01227 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01228 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int ",") 0"));
01229 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01230 assert(ddbg.get_line() && ddbg.str_equal("| "));
01231 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01232 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01233 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int ",") 0"));
01234 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01235 assert(ddbg.get_line() && ddbg.str_equal("| "));
01236 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01237 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01238 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int ",") 0"));
01239 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01240 assert(ddbg.get_line() && ddbg.str_equal("| "));
01241 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01242 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01243 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int ",") 0"));
01244 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01245 assert(ddbg.get_line() && ddbg.str_equal("| "));
01246 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01247 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01248 assert(ddbg.get_line() && ddbg.str_wrap("| | num = (int ",") 0"));
01249 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01250 assert(ddbg.get_line() && ddbg.str_equal("| "));
01251 assert(ddbg.get_line() && ddbg.str_wrap("| v = (std::vector<class1 *> at 0x",") (size: 5)"));
01252 assert(ddbg.get_line() && ddbg.str_begin("| [0] = (class1 * at 0x"));
01253 assert(ddbg.get_line() && ddbg.str_begin("| [1] = (class1 * at 0x"));
01254 assert(ddbg.get_line() && ddbg.str_begin("| [2] = (class1 * at 0x"));
01255 assert(ddbg.get_line() && ddbg.str_begin("| [3] = (class1 * at 0x"));
01256 assert(ddbg.get_line() && ddbg.str_begin("| [4] = (class1 * at 0x"));
01257 assert(ddbg.get_line() && ddbg.str_equal("}"));
01258 assert(ddbg.close());
01259 assert(unlink("./test-debug.debug") == 0);
01260 }
01261
01262 {
01263 errno = 0;
01264 int argc = 0;
01265 char * argv[256] = { 0 };
01266
01267 argv[argc++] = "<program>";
01268 argv[argc++] = "--debug";
01269 argv[argc++] = "./test-debug.debug";
01270
01271 debug_args(argc, argv);
01272 assert(debug_manager.ok());
01273
01274 {
01275 debug;
01276
01277 class4 c4;
01278
01279 debug_var(c4);
01280 debug_var(&c4);
01281 }
01282 debug_close;
01283
01284 assert(ddbg.open("./test-debug.debug"));
01285 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01286 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: void test()"));
01287 assert(ddbg.get_line() && ddbg.str_equal("{"));
01288 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class4::class4()"));
01289 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01290 assert(ddbg.get_line() && ddbg.str_wrap("| | c = (class4::colors at 0x",") class4::brown"));
01291 assert(ddbg.get_line() && ddbg.str_wrap("| | cs = (class4::c4s at 0x",")"));
01292 assert(ddbg.get_line() && ddbg.str_wrap("| | a = (int at 0x",") 5"));
01293 assert(ddbg.get_line() && ddbg.str_wrap("| | b = (char at 0x",") 'F'"));
01294 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01295 assert(ddbg.get_line() && ddbg.str_equal("| "));
01296 assert(ddbg.get_line() && ddbg.str_wrap("| c4 = (class4 at 0x",")"));
01297 assert(ddbg.get_line() && ddbg.str_wrap("| c = (class4::colors at 0x",") class4::brown"));
01298 assert(ddbg.get_line() && ddbg.str_wrap("| cs = (class4::c4s at 0x",")"));
01299 assert(ddbg.get_line() && ddbg.str_wrap("| a = (int at 0x",") 5"));
01300 assert(ddbg.get_line() && ddbg.str_wrap("| b = (char at 0x",") 'F'"));
01301 assert(ddbg.get_line() && ddbg.str_sandwich("| &c4 = (class4 * at 0x",") 0x",""));
01302 assert(ddbg.get_line() && ddbg.str_equal("}"));
01303 assert(ddbg.close());
01304 assert(unlink("./test-debug.debug") == 0);
01305 }
01306
01307
01308 {
01309 errno = 0;
01310 int argc = 0;
01311 char * argv[256] = { 0 };
01312
01313 argv[argc++] = "<program>";
01314 argv[argc++] = "--debug";
01315 argv[argc++] = "./test-debug.debug";
01316 argv[argc++] = "--debug-level";
01317 argv[argc++] = "2";
01318 argv[argc++] = "--debug-no-addresses";
01319
01320 debug_args(argc, argv);
01321 assert(debug_manager.ok());
01322 foo(5);
01323 debug_close;
01324 assert(argc == 1);
01325 assert(argv[0] == "<program>");
01326
01327 assert(ddbg.open("./test-debug.debug"));
01328 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01329 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
01330 assert(ddbg.get_line() && ddbg.str_equal("{"));
01331 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
01332 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 5"));
01333 assert(ddbg.get_line() && ddbg.str_equal("| "));
01334 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
01335 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01336 assert(ddbg.get_line() && ddbg.str_equal("| | Input:"));
01337 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 10"));
01338 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01339 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 12"));
01340 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01341 assert(ddbg.get_line() && ddbg.str_equal("| | Output:"));
01342 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 12"));
01343 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01344 assert(ddbg.get_line() && ddbg.str_equal("| "));
01345 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 12"));
01346 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 15"));
01347 assert(ddbg.get_line() && ddbg.str_equal("| "));
01348 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
01349 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 15"));
01350 assert(ddbg.get_line() && ddbg.str_equal("}"));
01351 assert(ddbg.close());
01352 assert(unlink("./test-debug.debug") == 0);
01353 }
01354
01355 {
01356 errno = 0;
01357 int argc = 0;
01358 char * argv[256] = { 0 };
01359
01360 argv[argc++] = "<program>";
01361 argv[argc++] = "--some-argument";
01362 argv[argc++] = "--debug";
01363 argv[argc++] = "./test-debug.debug";
01364 argv[argc++] = "--debug-level";
01365 argv[argc++] = "2";
01366
01367 debug_args(argc, argv);
01368 assert(debug_manager.ok());
01369 foo(5);
01370 debug_close;
01371 assert(argc == 2);
01372 assert(argv[0] == "<program>");
01373 assert(argv[1] == "--some-argument");
01374
01375 assert(ddbg.open("./test-debug.debug"));
01376 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01377 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
01378 assert(ddbg.get_line() && ddbg.str_equal("{"));
01379 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
01380 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 5"));
01381 assert(ddbg.get_line() && ddbg.str_equal("| "));
01382 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
01383 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01384 assert(ddbg.get_line() && ddbg.str_equal("| | Input:"));
01385 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 10"));
01386 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01387 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 12"));
01388 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01389 assert(ddbg.get_line() && ddbg.str_equal("| | Output:"));
01390 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 12"));
01391 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01392 assert(ddbg.get_line() && ddbg.str_equal("| "));
01393 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 12"));
01394 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 15"));
01395 assert(ddbg.get_line() && ddbg.str_equal("| "));
01396 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
01397 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 15"));
01398 assert(ddbg.get_line() && ddbg.str_equal("}"));
01399 assert(ddbg.close());
01400 assert(unlink("./test-debug.debug") == 0);
01401 }
01402
01403 {
01404 errno = 0;
01405 int argc = 0;
01406 char * argv[256] = { 0 };
01407
01408 argv[argc++] = "<program>";
01409 argv[argc++] = "--debug";
01410 argv[argc++] = "./test-debug.debug";
01411 argv[argc++] = "--debug-level";
01412 argv[argc++] = "2";
01413 argv[argc++] = "--some-argument";
01414
01415 debug_args(argc, argv);
01416 assert(debug_manager.ok());
01417 foo(5);
01418 debug_close;
01419 assert(argc == 2);
01420 assert(argv[0] == "<program>");
01421 assert(argv[1] == "--some-argument");
01422
01423 assert(ddbg.open("./test-debug.debug"));
01424 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01425 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: int foo(int)"));
01426 assert(ddbg.get_line() && ddbg.str_equal("{"));
01427 assert(ddbg.get_line() && ddbg.str_equal("| Input:"));
01428 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 5"));
01429 assert(ddbg.get_line() && ddbg.str_equal("| "));
01430 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: int bar(int)"));
01431 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01432 assert(ddbg.get_line() && ddbg.str_equal("| | Input:"));
01433 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 10"));
01434 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01435 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 12"));
01436 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01437 assert(ddbg.get_line() && ddbg.str_equal("| | Output:"));
01438 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 12"));
01439 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01440 assert(ddbg.get_line() && ddbg.str_equal("| "));
01441 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 12"));
01442 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 15"));
01443 assert(ddbg.get_line() && ddbg.str_equal("| "));
01444 assert(ddbg.get_line() && ddbg.str_equal("| Output:"));
01445 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 15"));
01446 assert(ddbg.get_line() && ddbg.str_equal("}"));
01447 assert(ddbg.close());
01448 assert(unlink("./test-debug.debug") == 0);
01449 }
01450
01451 {
01452 errno = 0;
01453 int argc = 0;
01454 char * argv[256] = { 0 };
01455
01456 argv[argc++] = "<program>";
01457 argv[argc++] = "--debug";
01458 argv[argc++] = "./test-debug.debug";
01459
01460 debug_args(argc, argv);
01461 assert(debug_manager.ok());
01462
01463 {
01464 debug;
01465
01466 class1 c1;
01467
01468 debug_var(c1);
01469 }
01470 debug_close;
01471
01472 assert(ddbg.open("./test-debug.debug"));
01473 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01474 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: void test()"));
01475 assert(ddbg.get_line() && ddbg.str_equal("{"));
01476 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01477 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01478 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01479 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01480 assert(ddbg.get_line() && ddbg.str_equal("| "));
01481 assert(ddbg.get_line() && ddbg.str_equal("| c1 = (class1)"));
01482 assert(ddbg.get_line() && ddbg.str_equal("| num = (int) 0"));
01483 assert(ddbg.get_line() && ddbg.str_equal("}"));
01484 assert(ddbg.close());
01485 assert(unlink("./test-debug.debug") == 0);
01486 }
01487
01488 {
01489 errno = 0;
01490 int argc = 0;
01491 char * argv[256] = { 0 };
01492
01493 argv[argc++] = "<program>";
01494 argv[argc++] = "--debug";
01495 argv[argc++] = "./test-debug.debug";
01496
01497 debug_args(argc, argv);
01498 assert(debug_manager.ok());
01499
01500 {
01501 debug;
01502
01503 class2 c2;
01504
01505 debug_var(c2);
01506 }
01507 debug_close;
01508
01509 assert(ddbg.open("./test-debug.debug"));
01510 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01511 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: void test()"));
01512 assert(ddbg.get_line() && ddbg.str_equal("{"));
01513 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class2::class2()"));
01514 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01515 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01516 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01517 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01518 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01519 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01520 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01521 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01522 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01523 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01524 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01525 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01526 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01527 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01528 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01529 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01530 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01531 assert(ddbg.get_line() && ddbg.str_wrap("| | test-debug.cc[","]: class1::class1()"));
01532 assert(ddbg.get_line() && ddbg.str_equal("| | {"));
01533 assert(ddbg.get_line() && ddbg.str_equal("| | }"));
01534 assert(ddbg.get_line() && ddbg.str_equal("| | "));
01535 assert(ddbg.get_line() && ddbg.str_equal("| | v = (std::vector<class1>) (size: 5)"));
01536 assert(ddbg.get_line() && ddbg.str_equal("| | [0] = (class1)"));
01537 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01538 assert(ddbg.get_line() && ddbg.str_equal("| | [1] = (class1)"));
01539 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01540 assert(ddbg.get_line() && ddbg.str_equal("| | [2] = (class1)"));
01541 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01542 assert(ddbg.get_line() && ddbg.str_equal("| | [3] = (class1)"));
01543 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01544 assert(ddbg.get_line() && ddbg.str_equal("| | [4] = (class1)"));
01545 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01546 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01547 assert(ddbg.get_line() && ddbg.str_equal("| "));
01548 assert(ddbg.get_line() && ddbg.str_equal("| c2 = (class2)"));
01549 assert(ddbg.get_line() && ddbg.str_equal("| v = (std::vector<class1>) (size: 5)"));
01550 assert(ddbg.get_line() && ddbg.str_equal("| [0] = (class1)"));
01551 assert(ddbg.get_line() && ddbg.str_equal("| num = (int) 0"));
01552 assert(ddbg.get_line() && ddbg.str_equal("| [1] = (class1)"));
01553 assert(ddbg.get_line() && ddbg.str_equal("| num = (int) 0"));
01554 assert(ddbg.get_line() && ddbg.str_equal("| [2] = (class1)"));
01555 assert(ddbg.get_line() && ddbg.str_equal("| num = (int) 0"));
01556 assert(ddbg.get_line() && ddbg.str_equal("| [3] = (class1)"));
01557 assert(ddbg.get_line() && ddbg.str_equal("| num = (int) 0"));
01558 assert(ddbg.get_line() && ddbg.str_equal("| [4] = (class1)"));
01559 assert(ddbg.get_line() && ddbg.str_equal("| num = (int) 0"));
01560 assert(ddbg.get_line() && ddbg.str_equal("}"));
01561 assert(ddbg.close());
01562 assert(unlink("./test-debug.debug") == 0);
01563 }
01564
01565 {
01566 errno = 0;
01567 int argc = 0;
01568 char * argv[256] = { 0 };
01569
01570 argv[argc++] = "<program>";
01571 argv[argc++] = "--debug";
01572 argv[argc++] = "./test-debug.debug";
01573
01574 debug_args(argc, argv);
01575 assert(debug_manager.ok());
01576
01577 class3 c3;
01578
01579 debug_close;
01580
01581 assert(ddbg.open("./test-debug.debug"));
01582 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01583 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: class3::class3()"));
01584 assert(ddbg.get_line() && ddbg.str_equal("{"));
01585 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01586 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01587 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01588 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01589 assert(ddbg.get_line() && ddbg.str_equal("| "));
01590 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01591 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01592 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01593 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01594 assert(ddbg.get_line() && ddbg.str_equal("| "));
01595 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01596 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01597 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01598 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01599 assert(ddbg.get_line() && ddbg.str_equal("| "));
01600 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01601 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01602 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01603 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01604 assert(ddbg.get_line() && ddbg.str_equal("| "));
01605 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class1::class1()"));
01606 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01607 assert(ddbg.get_line() && ddbg.str_equal("| | num = (int) 0"));
01608 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01609 assert(ddbg.get_line() && ddbg.str_equal("| "));
01610 assert(ddbg.get_line() && ddbg.str_equal("| v = (std::vector<class1 *>) (size: 5)"));
01611 assert(ddbg.get_line() && ddbg.str_equal("| [0] = (class1 *) "));
01612 assert(ddbg.get_line() && ddbg.str_equal("| [1] = (class1 *) "));
01613 assert(ddbg.get_line() && ddbg.str_equal("| [2] = (class1 *) "));
01614 assert(ddbg.get_line() && ddbg.str_equal("| [3] = (class1 *) "));
01615 assert(ddbg.get_line() && ddbg.str_equal("| [4] = (class1 *) "));
01616 assert(ddbg.get_line() && ddbg.str_equal("}"));
01617 assert(ddbg.close());
01618 assert(unlink("./test-debug.debug") == 0);
01619 }
01620
01621 {
01622 errno = 0;
01623 int argc = 0;
01624 char * argv[256] = { 0 };
01625
01626 argv[argc++] = "<program>";
01627 argv[argc++] = "--debug";
01628 argv[argc++] = "./test-debug.debug";
01629
01630 debug_args(argc, argv);
01631 assert(debug_manager.ok());
01632
01633 {
01634 debug;
01635
01636 class4 c4;
01637
01638 debug_var(c4);
01639 debug_var(&c4);
01640 }
01641 debug_close;
01642
01643 assert(ddbg.open("./test-debug.debug"));
01644 assert(ddbg.get_line() && ddbg.str_equal("# vim:foldmethod=marker:foldmarker={,}"));
01645 assert(ddbg.get_line() && ddbg.str_wrap("test-debug.cc[","]: void test()"));
01646 assert(ddbg.get_line() && ddbg.str_equal("{"));
01647 assert(ddbg.get_line() && ddbg.str_wrap("| test-debug.cc[","]: class4::class4()"));
01648 assert(ddbg.get_line() && ddbg.str_equal("| {"));
01649 assert(ddbg.get_line() && ddbg.str_equal("| | c = (class4::colors) class4::brown"));
01650 assert(ddbg.get_line() && ddbg.str_equal("| | cs = (class4::c4s)"));
01651 assert(ddbg.get_line() && ddbg.str_equal("| | a = (int) 5"));
01652 assert(ddbg.get_line() && ddbg.str_equal("| | b = (char) 'F'"));
01653 assert(ddbg.get_line() && ddbg.str_equal("| }"));
01654 assert(ddbg.get_line() && ddbg.str_equal("| "));
01655 assert(ddbg.get_line() && ddbg.str_equal("| c4 = (class4)"));
01656 assert(ddbg.get_line() && ddbg.str_equal("| c = (class4::colors) class4::brown"));
01657 assert(ddbg.get_line() && ddbg.str_equal("| cs = (class4::c4s)"));
01658 assert(ddbg.get_line() && ddbg.str_equal("| a = (int) 5"));
01659 assert(ddbg.get_line() && ddbg.str_equal("| b = (char) 'F'"));
01660 assert(ddbg.get_line() && ddbg.str_equal("| &c4 = (class4 *) "));
01661 assert(ddbg.get_line() && ddbg.str_equal("}"));
01662 assert(ddbg.close());
01663 assert(unlink("./test-debug.debug") == 0);
01664 }
01665 }
01666 #endif
01667
01668 int main(int argc, char* argv[])
01669 {
01670 #ifdef DEBUG
01671 test();
01672 #else
01673 std::cerr << "Skipping this test, debugging code not compiled" << std::endl;
01674 #endif
01675 return(0);
01676 }