test-debug.cc

Go to the documentation of this file.
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 }

Generated on Mon Jul 12 12:02:51 2004 for rvm by doxygen 1.3.6