dfect 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CREDITS +2 -2
- data/HISTORY +306 -0
- data/INSTALL +35 -0
- data/README +95 -0
- data/USAGE +393 -0
- data/doc/api/Dfect.html +3179 -0
- data/doc/api/Object.html +107 -0
- data/doc/api/_index.html +107 -0
- data/doc/api/class_list.html +36 -0
- data/doc/api/css/common.css +1 -0
- data/doc/api/css/full_list.css +50 -0
- data/doc/api/css/style.css +268 -0
- data/doc/api/file.LICENSE.html +73 -0
- data/doc/api/file_list.html +38 -0
- data/doc/api/frames.html +13 -0
- data/doc/api/index.html +72 -13
- data/doc/api/js/app.js +99 -0
- data/doc/api/js/full_list.js +106 -0
- data/doc/api/js/{jquery-1.3.2.min.js → jquery.js} +0 -0
- data/doc/api/method_list.html +339 -0
- data/doc/api/top-level-namespace.html +87 -0
- data/doc/index.erb +16 -9
- data/doc/index.html +1057 -726
- data/lib/dfect.rb +431 -284
- data/lib/dfect/auto.rb +2 -6
- data/lib/dfect/inochi.rb +48 -0
- data/lib/dfect/inochi.yaml +75 -0
- data/lib/dfect/mini.rb +1 -5
- data/lib/dfect/spec.rb +6 -13
- data/lib/dfect/unit.rb +21 -33
- data/test/dfect/inochi_test.rb +17 -0
- data/test/{dfect.rb → dfect_test.rb} +167 -7
- data/test/runner +25 -0
- data/test/test_helper.rb +1 -0
- metadata +43 -55
- data/doc/api/apple-touch-icon.png +0 -0
- data/doc/api/classes/Class.html +0 -73
- data/doc/api/classes/Dfect.html +0 -1245
- data/doc/api/classes/Kernel.html +0 -322
- data/doc/api/classes/Object.html +0 -72
- data/doc/api/created.rid +0 -1
- data/doc/api/css/main.css +0 -263
- data/doc/api/css/panel.css +0 -383
- data/doc/api/css/reset.css +0 -53
- data/doc/api/favicon.ico +0 -0
- data/doc/api/files/CREDITS.html +0 -65
- data/doc/api/files/LICENSE.html +0 -76
- data/doc/api/files/lib/dfect/auto_rb.html +0 -80
- data/doc/api/files/lib/dfect/mini_rb.html +0 -77
- data/doc/api/files/lib/dfect/spec_rb.html +0 -73
- data/doc/api/files/lib/dfect/unit_rb.html +0 -73
- data/doc/api/files/lib/dfect_rb.html +0 -74
- data/doc/api/i/arrows.png +0 -0
- data/doc/api/i/results_bg.png +0 -0
- data/doc/api/i/tree_bg.png +0 -0
- data/doc/api/js/jquery-effect.js +0 -593
- data/doc/api/js/main.js +0 -22
- data/doc/api/js/searchdoc.js +0 -628
- data/doc/api/panel/index.html +0 -71
- data/doc/api/panel/search_index.js +0 -1
- data/doc/api/panel/tree.js +0 -1
- data/doc/history.erb +0 -161
- data/doc/intro.erb +0 -104
- data/doc/setup.erb +0 -107
- data/doc/usage.erb +0 -310
- data/rakefile +0 -21
| @@ -0,0 +1,87 @@ | |
| 1 | 
            +
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         | 
| 2 | 
            +
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
         | 
| 3 | 
            +
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
         | 
| 4 | 
            +
              <head>
         | 
| 5 | 
            +
                <meta name="Content-Type" content="text/html; charset=UTF-8" />
         | 
| 6 | 
            +
            <title>Top Level Namespace</title>
         | 
| 7 | 
            +
            <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
         | 
| 8 | 
            +
            <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            <script type="text/javascript" charset="utf-8">
         | 
| 11 | 
            +
              relpath = '';
         | 
| 12 | 
            +
              if (relpath != '') relpath += '/';
         | 
| 13 | 
            +
            </script>
         | 
| 14 | 
            +
            <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
         | 
| 15 | 
            +
            <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              </head>
         | 
| 18 | 
            +
              <body>
         | 
| 19 | 
            +
                <script type="text/javascript" charset="utf-8">
         | 
| 20 | 
            +
                  if (window.top.frames.main) document.body.className = 'frames';
         | 
| 21 | 
            +
                </script>
         | 
| 22 | 
            +
                
         | 
| 23 | 
            +
                <div id="header">
         | 
| 24 | 
            +
                  <div id="menu">
         | 
| 25 | 
            +
              
         | 
| 26 | 
            +
                <a href="_index.html">Index</a> » 
         | 
| 27 | 
            +
                
         | 
| 28 | 
            +
                
         | 
| 29 | 
            +
                <span class="title">Top Level Namespace</span>
         | 
| 30 | 
            +
              
         | 
| 31 | 
            +
              
         | 
| 32 | 
            +
              <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
         | 
| 33 | 
            +
            </div>
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  <div id="search">
         | 
| 36 | 
            +
              <a id="class_list_link" href="#">Class List</a>
         | 
| 37 | 
            +
              <a id="method_list_link" href="#">Method List</a>
         | 
| 38 | 
            +
              <a id ="file_list_link" href="#">File List</a>
         | 
| 39 | 
            +
            </div>
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  <div class="clear"></div>
         | 
| 42 | 
            +
                </div>
         | 
| 43 | 
            +
                
         | 
| 44 | 
            +
                <iframe id="search_frame"></iframe>
         | 
| 45 | 
            +
                
         | 
| 46 | 
            +
                <div id="content"><h1>Top Level Namespace 
         | 
| 47 | 
            +
              
         | 
| 48 | 
            +
              
         | 
| 49 | 
            +
            </h1>
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            <dl class="box">
         | 
| 52 | 
            +
              
         | 
| 53 | 
            +
              
         | 
| 54 | 
            +
                
         | 
| 55 | 
            +
              
         | 
| 56 | 
            +
                
         | 
| 57 | 
            +
              
         | 
| 58 | 
            +
              
         | 
| 59 | 
            +
            </dl>
         | 
| 60 | 
            +
            <div class="clear"></div>
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            <h2>Defined Under Namespace</h2>
         | 
| 63 | 
            +
            <p class="children">
         | 
| 64 | 
            +
               
         | 
| 65 | 
            +
                
         | 
| 66 | 
            +
                  <strong class="modules">Modules:</strong> <a href="Dfect.html" title="Dfect (module)">Dfect</a>
         | 
| 67 | 
            +
                
         | 
| 68 | 
            +
               
         | 
| 69 | 
            +
                
         | 
| 70 | 
            +
                  <strong class="classes">Classes:</strong> <a href="Object.html" title="Object (class)">Object</a>
         | 
| 71 | 
            +
                
         | 
| 72 | 
            +
              
         | 
| 73 | 
            +
            </p>
         | 
| 74 | 
            +
             | 
| 75 | 
            +
             | 
| 76 | 
            +
             | 
| 77 | 
            +
             | 
| 78 | 
            +
            </div>
         | 
| 79 | 
            +
                
         | 
| 80 | 
            +
                <div id="footer">
         | 
| 81 | 
            +
              Generated on Sun Mar 21 16:21:53 2010 by 
         | 
| 82 | 
            +
              <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
         | 
| 83 | 
            +
              0.5.3 (ruby-1.9.1).
         | 
| 84 | 
            +
            </div>
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              </body>
         | 
| 87 | 
            +
            </html>
         | 
    
        data/doc/index.erb
    CHANGED
    
    | @@ -1,11 +1,18 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 1 | 
            +
            % api_reference_url = 'api/index.html'
         | 
| 2 | 
            +
            % api_reference     = "[API reference](#{api_reference_url})"
         | 
| 3 | 
            +
            % source_code_tool  = '[Git](http://git-scm.com)'
         | 
| 4 | 
            +
            % source_code_url   = 'http://github.com/sunaku/dfect'
         | 
| 5 | 
            +
            % issue_tracker_url = 'http://github.com/sunaku/dfect/issues'
         | 
| 5 6 |  | 
| 6 | 
            -
             | 
| 7 | 
            +
            %|part "Welcome"
         | 
| 8 | 
            +
              %+ "../README"
         | 
| 7 9 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
            %+ " | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 10 | 
            +
            %|part "Setup"
         | 
| 11 | 
            +
              %+ "../INSTALL"
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            %|part "Usage"
         | 
| 14 | 
            +
              %+ "../USAGE"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            %|part "History"
         | 
| 17 | 
            +
              %|project_history
         | 
| 18 | 
            +
                %+ "../HISTORY"
         | 
    
        data/doc/index.html
    CHANGED
    
    | @@ -5,13 +5,13 @@ | |
| 5 5 | 
             
              <head>
         | 
| 6 6 | 
             
                <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
         | 
| 7 7 |  | 
| 8 | 
            -
                <meta name="generator" content="ERBook 9. | 
| 8 | 
            +
                <meta name="generator" content="ERBook 9.2.1 (2009-11-18) — http://snk.tuxfamily.org/lib/erbook/"/>
         | 
| 9 9 |  | 
| 10 | 
            -
                <title>Dfect  | 
| 10 | 
            +
                <title>Dfect — Assertion testing library for Ruby</title>
         | 
| 11 11 |  | 
| 12 12 | 
             
                <meta name="author" content="Suraj N. Kurapati"/>
         | 
| 13 13 |  | 
| 14 | 
            -
                <meta name="date" content=" | 
| 14 | 
            +
                <meta name="date" content="21 March 2010"/>
         | 
| 15 15 |  | 
| 16 16 | 
             
                <link rel="alternate" type="application/rss+xml" href="http://snk.tuxfamily.org/lib/dfect/ann.xml"/>
         | 
| 17 17 |  | 
| @@ -414,14 +414,14 @@ | |
| 414 414 | 
             
            .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
         | 
| 415 415 | 
             
            .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
         | 
| 416 416 | 
             
            ----------------------------------*/
         | 
| 417 | 
            -
            .ui-tabs {  | 
| 418 | 
            -
            .ui-tabs .ui-tabs-nav { list-style: none;  | 
| 419 | 
            -
            .ui-tabs .ui-tabs-nav li {  | 
| 420 | 
            -
            .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em;  | 
| 421 | 
            -
            .ui-tabs .ui-tabs-nav li.ui-tabs-selected {  | 
| 417 | 
            +
            .ui-tabs { padding: .2em; zoom: 1; }
         | 
| 418 | 
            +
            .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
         | 
| 419 | 
            +
            .ui-tabs .ui-tabs-nav li { position: relative; float: left; margin: 0 .2em -1px 0; padding: 0; }
         | 
| 420 | 
            +
            .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
         | 
| 421 | 
            +
            .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
         | 
| 422 422 | 
             
            .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
         | 
| 423 423 | 
             
            .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
         | 
| 424 | 
            -
            .ui-tabs .ui-tabs-panel { display: block; border: 0;  | 
| 424 | 
            +
            .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
         | 
| 425 425 | 
             
            .ui-tabs .ui-tabs-hide { display: none !important; }
         | 
| 426 426 |  | 
| 427 427 | 
             
                /*]]>*/
         | 
| @@ -440,7 +440,7 @@ em, strong, dt { | |
| 440 440 | 
             
            blockquote {
         | 
| 441 441 | 
             
              color: #333;
         | 
| 442 442 | 
             
              font-style: italic;
         | 
| 443 | 
            -
              background-image: url( | 
| 443 | 
            +
              background-image: url(cid:81899006);
         | 
| 444 444 | 
             
              background-repeat: no-repeat;
         | 
| 445 445 | 
             
              margin-left: 0;
         | 
| 446 446 | 
             
              padding-left: 65px;
         | 
| @@ -473,23 +473,23 @@ h1, h2, h3, h4, h5, h6, .title { | |
| 473 473 | 
             
              font-weight: lighter;
         | 
| 474 474 | 
             
              font-family: Constantia, "Book Antiqua", "URW Bookman L", serif; }
         | 
| 475 475 |  | 
| 476 | 
            -
            # | 
| 476 | 
            +
            #_floats h1, #_floats h2, #_floats h3, #_floats h4, #_floats h5, #_floats h6 {
         | 
| 477 477 | 
             
              margin-top: 1.25em; }
         | 
| 478 478 |  | 
| 479 | 
            -
            # | 
| 479 | 
            +
            #_document h1, #_document h2, #_document h3, #_document h4, #_document h5, #_document h6 {
         | 
| 480 480 | 
             
              margin-top: 2.5em;
         | 
| 481 481 | 
             
              line-height: 1.25em; }
         | 
| 482 | 
            -
            # | 
| 482 | 
            +
            #_document h1 {
         | 
| 483 483 | 
             
              font-size: 2.0em; }
         | 
| 484 | 
            -
            # | 
| 484 | 
            +
            #_document h2 {
         | 
| 485 485 | 
             
              font-size: 1.8em; }
         | 
| 486 | 
            -
            # | 
| 486 | 
            +
            #_document h3 {
         | 
| 487 487 | 
             
              font-size: 1.6em; }
         | 
| 488 | 
            -
            # | 
| 488 | 
            +
            #_document h4 {
         | 
| 489 489 | 
             
              font-size: 1.4em; }
         | 
| 490 | 
            -
            # | 
| 490 | 
            +
            #_document h5 {
         | 
| 491 491 | 
             
              font-size: 1.2em; }
         | 
| 492 | 
            -
            # | 
| 492 | 
            +
            #_document h6 {
         | 
| 493 493 | 
             
              font-size: 1.0em; }
         | 
| 494 494 |  | 
| 495 495 | 
             
            table {
         | 
| @@ -508,28 +508,33 @@ th, td { | |
| 508 508 | 
             
            th {
         | 
| 509 509 | 
             
              background-color: #F5F5F5; }
         | 
| 510 510 |  | 
| 511 | 
            -
            # | 
| 511 | 
            +
            #_header > .title {
         | 
| 512 512 | 
             
              font-size: 2.25em; }
         | 
| 513 513 |  | 
| 514 514 | 
             
            @media print {
         | 
| 515 | 
            -
              # | 
| 515 | 
            +
              #_header .printer_friendly_toggle {
         | 
| 516 516 | 
             
                display: none; } }
         | 
| 517 517 |  | 
| 518 518 | 
             
            @media screen {
         | 
| 519 | 
            -
              # | 
| 520 | 
            -
                display: inline; } | 
| 519 | 
            +
              #_header .printer_friendly_toggle {
         | 
| 520 | 
            +
                display: inline; }
         | 
| 521 | 
            +
                #_header .printer_friendly_toggle label:hover {
         | 
| 522 | 
            +
                  cursor: pointer; } }
         | 
| 521 523 |  | 
| 522 | 
            -
            # | 
| 524 | 
            +
            #_abstract {
         | 
| 523 525 | 
             
              margin-bottom: 5em; }
         | 
| 524 526 |  | 
| 525 | 
            -
            # | 
| 527 | 
            +
            #_contents ul > li {
         | 
| 526 528 | 
             
              list-style-type: none; }
         | 
| 527 | 
            -
            # | 
| 529 | 
            +
            #_contents li ul {
         | 
| 528 530 | 
             
              padding-bottom: 1em; }
         | 
| 529 | 
            -
            # | 
| 531 | 
            +
            #_contents > ul {
         | 
| 530 532 | 
             
              padding-left: 1em; }
         | 
| 531 533 |  | 
| 532 | 
            -
            # | 
| 534 | 
            +
            #_references > ol > li {
         | 
| 535 | 
            +
              margin-bottom: 1em; }
         | 
| 536 | 
            +
             | 
| 537 | 
            +
            #_footer {
         | 
| 533 538 | 
             
              padding-top: 1em;
         | 
| 534 539 | 
             
              text-align: center;
         | 
| 535 540 | 
             
              margin: auto; }
         | 
| @@ -541,25 +546,19 @@ th { | |
| 541 546 | 
             
              display: block;
         | 
| 542 547 | 
             
              margin-top: 0.25em; }
         | 
| 543 548 |  | 
| 544 | 
            -
            .paragraph > .title | 
| 545 | 
            -
              font-size: large;
         | 
| 546 | 
            -
              margin-top: 2em; }
         | 
| 547 | 
            -
             | 
| 548 | 
            -
            .tip, .note, .caution, .warning, .important, .figure, .table, .example, .equation, .procedure {
         | 
| 549 | 
            -
              margin: 3em; }
         | 
| 550 | 
            -
             | 
| 551 | 
            -
            .tip .nav, .note .nav, .caution .nav, .warning .nav, .important .nav, .figure .nav, .table .nav, .example .nav, .equation .nav, .procedure .nav {
         | 
| 552 | 
            -
              margin-right: -3em; }
         | 
| 549 | 
            +
            .paragraph > .title {
         | 
| 550 | 
            +
              font-size: large; }
         | 
| 553 551 |  | 
| 554 | 
            -
            . | 
| 552 | 
            +
            ._float > .title {
         | 
| 553 | 
            +
              font-size: large; }
         | 
| 554 | 
            +
            ._float > .content {
         | 
| 555 555 | 
             
              min-height: 48px; }
         | 
| 556 | 
            -
             | 
| 557 | 
            -
             | 
| 558 | 
            -
             | 
| 559 | 
            -
             | 
| 560 | 
            -
             | 
| 561 | 
            -
             | 
| 562 | 
            -
              margin-left: 0; }
         | 
| 556 | 
            +
              ._float > .content > .icon {
         | 
| 557 | 
            +
                float: left;
         | 
| 558 | 
            +
                margin-top: 0;
         | 
| 559 | 
            +
                margin-right: 1em;
         | 
| 560 | 
            +
                margin-bottom: 1em;
         | 
| 561 | 
            +
                margin-left: 0; }
         | 
| 563 562 |  | 
| 564 563 | 
             
            .figure > .title {
         | 
| 565 564 | 
             
              text-align: center; }
         | 
| @@ -575,7 +574,10 @@ th { | |
| 575 574 | 
             
              padding: 0.5em;
         | 
| 576 575 | 
             
              background-color: #FFFFFF; }
         | 
| 577 576 |  | 
| 578 | 
            -
            # | 
| 577 | 
            +
            #_loading:before {
         | 
| 578 | 
            +
              content: "Loading..."; }
         | 
| 579 | 
            +
             | 
| 580 | 
            +
            #_body, #_abstract > .title, #_contents > .title, .part > .title, .chapter > .title, .section > .title, #_references > .title {
         | 
| 579 581 | 
             
              display: none; }
         | 
| 580 582 |  | 
| 581 583 | 
             
            .tabs {
         | 
| @@ -587,6 +589,9 @@ th { | |
| 587 589 | 
             
            .ui-tabs .ui-tabs-nav li.ui-tabs-selected a {
         | 
| 588 590 | 
             
              cursor: pointer; }
         | 
| 589 591 |  | 
| 592 | 
            +
            li > p:first-child {
         | 
| 593 | 
            +
              display: inline; }
         | 
| 594 | 
            +
             | 
| 590 595 | 
             
            tt {
         | 
| 591 596 | 
             
              background-color: #F0F8FF; }
         | 
| 592 597 |  | 
| @@ -597,8 +602,11 @@ pre { | |
| 597 602 | 
             
              background-color: #F5FFDF;
         | 
| 598 603 | 
             
              padding: 1em;
         | 
| 599 604 | 
             
              display: inline-block;
         | 
| 600 | 
            -
               | 
| 601 | 
            -
               | 
| 605 | 
            +
              min-width: 95%;
         | 
| 606 | 
            +
              margin: 0; }
         | 
| 607 | 
            +
             | 
| 608 | 
            +
            ins ~ div {
         | 
| 609 | 
            +
              margin-top: 1.5em; }
         | 
| 602 610 |  | 
| 603 611 | 
             
            code.para {
         | 
| 604 612 | 
             
              cursor: text;
         | 
| @@ -625,37 +633,60 @@ a { | |
| 625 633 | 
             
              a:visited {
         | 
| 626 634 | 
             
                color: #800080; }
         | 
| 627 635 | 
             
              a[href]:not([href^="#"]) {
         | 
| 628 | 
            -
                background: url( | 
| 636 | 
            +
                background: url(cid:82357576);
         | 
| 629 637 | 
             
                background-position: center right;
         | 
| 630 638 | 
             
                background-repeat: no-repeat;
         | 
| 631 639 | 
             
                padding-right: 13px; }
         | 
| 632 640 |  | 
| 633 | 
            -
            # | 
| 641 | 
            +
            #_header > .logo {
         | 
| 634 642 | 
             
              text-align: center; }
         | 
| 635 | 
            -
            # | 
| 643 | 
            +
            #_header > .title_and_subtitle {
         | 
| 636 644 | 
             
              float: left;
         | 
| 637 645 | 
             
              margin-right: 1.5em; }
         | 
| 638 | 
            -
              # | 
| 646 | 
            +
              #_header > .title_and_subtitle .title {
         | 
| 639 647 | 
             
                margin-top: 0.25em; }
         | 
| 640 | 
            -
            # | 
| 648 | 
            +
            #_header > .authors_and_date {
         | 
| 641 649 | 
             
              text-align: right; }
         | 
| 642 | 
            -
              # | 
| 650 | 
            +
              #_header > .authors_and_date .authors, #_header > .authors_and_date .date {
         | 
| 643 651 | 
             
                margin-top: 0;
         | 
| 644 652 | 
             
                margin-bottom: 0.25em; }
         | 
| 645 | 
            -
              # | 
| 653 | 
            +
              #_header > .authors_and_date .date {
         | 
| 646 654 | 
             
                font-weight: lighter; }
         | 
| 647 655 |  | 
| 648 | 
            -
            # | 
| 656 | 
            +
            #_contents li ul {
         | 
| 649 657 | 
             
              border-left: thick solid #F5F5F5; }
         | 
| 650 | 
            -
              # | 
| 658 | 
            +
              #_contents li ul:hover {
         | 
| 651 659 | 
             
                border-color: #DCDCDC; }
         | 
| 652 660 |  | 
| 653 | 
            -
            # | 
| 654 | 
            -
              background: url( | 
| 661 | 
            +
            #_contents a:target, #_floats a:target {
         | 
| 662 | 
            +
              background: url(cid:82357212);
         | 
| 655 663 | 
             
              background-position: center right;
         | 
| 656 664 | 
             
              background-repeat: no-repeat;
         | 
| 657 665 | 
             
              padding-right: 20px; }
         | 
| 658 666 |  | 
| 667 | 
            +
            .paragraph {
         | 
| 668 | 
            +
              margin-top: 1.5em;
         | 
| 669 | 
            +
              margin-bottom: 1.5em; }
         | 
| 670 | 
            +
              .paragraph > .nav {
         | 
| 671 | 
            +
                float: left; }
         | 
| 672 | 
            +
              .paragraph > .title {
         | 
| 673 | 
            +
                padding-left: 2.5em;
         | 
| 674 | 
            +
                padding-top: 0.25em; }
         | 
| 675 | 
            +
             | 
| 676 | 
            +
            ._float {
         | 
| 677 | 
            +
              margin: 1.5em; }
         | 
| 678 | 
            +
              ._float > .title {
         | 
| 679 | 
            +
                padding-top: 0.5em;
         | 
| 680 | 
            +
                padding-left: 1em;
         | 
| 681 | 
            +
                padding-right: 1em; }
         | 
| 682 | 
            +
              ._float > .nav {
         | 
| 683 | 
            +
                position: relative;
         | 
| 684 | 
            +
                z-index: 1;
         | 
| 685 | 
            +
                top: 0.25em;
         | 
| 686 | 
            +
                right: 0.25em; }
         | 
| 687 | 
            +
              ._float > .content {
         | 
| 688 | 
            +
                margin: 1em; }
         | 
| 689 | 
            +
             | 
| 659 690 | 
             
            .nav {
         | 
| 660 691 | 
             
              float: right;
         | 
| 661 692 | 
             
              clear: right; }
         | 
| @@ -664,14 +695,40 @@ a { | |
| 664 695 |  | 
| 665 696 | 
             
            .ui-tabs > .ui-tabs-panel > .nav {
         | 
| 666 697 | 
             
              position: relative;
         | 
| 667 | 
            -
              margin-top: -3. | 
| 668 | 
            -
              margin-right: - | 
| 698 | 
            +
              margin-top: -3.4em;
         | 
| 699 | 
            +
              margin-right: -1.25em; }
         | 
| 669 700 |  | 
| 670 701 | 
             
            .ui-tabs > .ui-tabs-nav > li:last-child {
         | 
| 671 702 | 
             
              margin-right: 9em; }
         | 
| 672 703 |  | 
| 673 | 
            -
             | 
| 704 | 
            +
            .ui-tabs > .ui-tabs-nav > li > a > .section_number {
         | 
| 705 | 
            +
              display: none; }
         | 
| 706 | 
            +
             | 
| 707 | 
            +
            #_about > table td:first-child, #_about > .validations {
         | 
| 708 | 
            +
              text-align: center; }
         | 
| 709 | 
            +
             | 
| 710 | 
            +
            #_search_form {
         | 
| 711 | 
            +
              text-align: right;
         | 
| 712 | 
            +
              font-weight: normal; }
         | 
| 713 | 
            +
              #_search_form input {
         | 
| 714 | 
            +
                margin-top: 0.25em; }
         | 
| 715 | 
            +
                #_search_form input.initial {
         | 
| 716 | 
            +
                  color: gray;
         | 
| 717 | 
            +
                  font-style: italic; }
         | 
| 718 | 
            +
              #_search_form #_search_start, #_search_form #_search_stop {
         | 
| 719 | 
            +
                float: right;
         | 
| 720 | 
            +
                margin: 0.1625em;
         | 
| 721 | 
            +
                padding: 0.325em; }
         | 
| 722 | 
            +
                #_search_form #_search_start:hover, #_search_form #_search_stop:hover {
         | 
| 723 | 
            +
                  cursor: pointer; }
         | 
| 724 | 
            +
             | 
| 725 | 
            +
            #_search > .status {
         | 
| 674 726 | 
             
              text-align: center; }
         | 
| 727 | 
            +
            #_search > .results > .result > .excerpt:hover {
         | 
| 728 | 
            +
              background-color: #FFFFE0;
         | 
| 729 | 
            +
              cursor: pointer; }
         | 
| 730 | 
            +
              #_search > .results > .result > .excerpt:hover * {
         | 
| 731 | 
            +
                cursor: pointer; }
         | 
| 675 732 | 
             
            /*]]>*/
         | 
| 676 733 | 
             
                </style>
         | 
| 677 734 |  | 
| @@ -713,33 +770,39 @@ a:after { | |
| 713 770 | 
             
              font-weight: normal;
         | 
| 714 771 | 
             
              font-size: smaller; }
         | 
| 715 772 |  | 
| 716 | 
            -
            .tabs > ul, .nav, # | 
| 773 | 
            +
            .tabs > ul, .nav, #_floats, #_about, #_search {
         | 
| 717 774 | 
             
              display: none; }
         | 
| 718 775 |  | 
| 719 | 
            -
            # | 
| 776 | 
            +
            #_contents, .part, .chapter, #_references {
         | 
| 720 777 | 
             
              page-break-before: always; }
         | 
| 721 778 |  | 
| 722 | 
            -
            # | 
| 779 | 
            +
            #_header, #_footer {
         | 
| 723 780 | 
             
              text-align: center; }
         | 
| 724 781 |  | 
| 725 | 
            -
            # | 
| 782 | 
            +
            #_header > .authors_and_date > .authors {
         | 
| 726 783 | 
             
              margin-top: 1.625em;
         | 
| 727 784 | 
             
              margin-bottom: -0.25em; }
         | 
| 728 785 |  | 
| 729 | 
            -
            .header_outside_above, # | 
| 786 | 
            +
            .header_outside_above, #_header, .header_outside_below, .logo {
         | 
| 730 787 | 
             
              margin-bottom: 5em; }
         | 
| 731 788 |  | 
| 732 | 
            -
            .footer_outside_above, # | 
| 789 | 
            +
            .footer_outside_above, #_footer, .footer_outside_below, #_references, #_about {
         | 
| 733 790 | 
             
              margin-top: 5em; }
         | 
| 734 791 |  | 
| 735 | 
            -
            # | 
| 792 | 
            +
            #_header .header_inside_above, #_footer .footer_inside_above {
         | 
| 736 793 | 
             
              margin-bottom: 4em; }
         | 
| 737 794 |  | 
| 738 | 
            -
            # | 
| 795 | 
            +
            #_header .header_inside_below, #_footer .footer_inside_below {
         | 
| 739 796 | 
             
              margin-top: 4em; }
         | 
| 740 797 |  | 
| 741 798 | 
             
            .part > .title > big, .chapter > .title > big {
         | 
| 742 799 | 
             
              padding-bottom: 0.5em; }
         | 
| 800 | 
            +
             | 
| 801 | 
            +
            .paragraph > .title {
         | 
| 802 | 
            +
              margin-top: 2em; }
         | 
| 803 | 
            +
             | 
| 804 | 
            +
            ._float {
         | 
| 805 | 
            +
              margin: 3em; }
         | 
| 743 806 | 
             
            /*]]>*/
         | 
| 744 807 | 
             
                </style>
         | 
| 745 808 |  | 
| @@ -786,6 +849,18 @@ jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.bro | |
| 786 849 | 
             
             *	ui.core.js
         | 
| 787 850 | 
             
             */
         | 
| 788 851 | 
             
            (function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1<this.anchors.length?1:-1))}d.disabled=a.map(a.grep(d.disabled,function(g,f){return g!=b}),function(g,f){return g>=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.2",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"<div></div>",spinner:"<em>Loading…</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i<b.anchors.length?i:0)},d);if(h){h.stopPropagation()}});var e=b._unrotate||(b._unrotate=!f?function(h){if(h.clientX){b.rotate(null)}}:function(h){t=g.selected;c()});if(d){this.element.bind("tabsshow",c);this.anchors.bind(g.event+".tabs",e);c()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",c);this.anchors.unbind(g.event+".tabs",e);delete this._rotate;delete this._unrotate}}})})(jQuery);;/*
         | 
| 852 | 
            +
             * jQuery UI Progressbar 1.7.2
         | 
| 853 | 
            +
             *
         | 
| 854 | 
            +
             * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
         | 
| 855 | 
            +
             * Dual licensed under the MIT (MIT-LICENSE.txt)
         | 
| 856 | 
            +
             * and GPL (GPL-LICENSE.txt) licenses.
         | 
| 857 | 
            +
             *
         | 
| 858 | 
            +
             * http://docs.jquery.com/UI/Progressbar
         | 
| 859 | 
            +
             *
         | 
| 860 | 
            +
             * Depends:
         | 
| 861 | 
            +
             *   ui.core.js
         | 
| 862 | 
            +
             */
         | 
| 863 | 
            +
            (function(a){a.widget("ui.progressbar",{_init:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this._valueMin(),"aria-valuemax":this._valueMax(),"aria-valuenow":this._value()});this.valueDiv=a('<div class="ui-progressbar-value ui-widget-header ui-corner-left"></div>').appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow").removeData("progressbar").unbind(".progressbar");this.valueDiv.remove();a.widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===undefined){return this._value()}this._setData("value",b);return this},_setData:function(b,c){switch(b){case"value":this.options.value=c;this._refreshValue();this._trigger("change",null,{});break}a.widget.prototype._setData.apply(this,arguments)},_value:function(){var b=this.options.value;if(b<this._valueMin()){b=this._valueMin()}if(b>this._valueMax()){b=this._valueMax()}return b},_valueMin:function(){var b=0;return b},_valueMax:function(){var b=100;return b},_refreshValue:function(){var b=this.value();this.valueDiv[b==this._valueMax()?"addClass":"removeClass"]("ui-corner-right");this.valueDiv.width(b+"%");this.element.attr("aria-valuenow",b)}});a.extend(a.ui.progressbar,{version:"1.7.2",defaults:{value:0}})})(jQuery);;/*
         | 
| 789 864 | 
             
             * jQuery UI Effects 1.7.2
         | 
| 790 865 | 
             
             *
         | 
| 791 866 | 
             
             * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
         | 
| @@ -808,26 +883,57 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 808 883 | 
             
             */
         | 
| 809 884 | 
             
            (function(a){a.effects.highlight=function(b){return this.queue(function(){var e=a(this),d=["backgroundImage","backgroundColor","opacity"];var h=a.effects.setMode(e,b.options.mode||"show");var c=b.options.color||"#ffff99";var g=e.css("backgroundColor");a.effects.save(e,d);e.show();e.css({backgroundImage:"none",backgroundColor:c});var f={backgroundColor:g};if(h=="hide"){f.opacity=0}e.animate(f,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(h=="hide"){e.hide()}a.effects.restore(e,d);if(h=="show"&&a.browser.msie){this.style.removeAttribute("filter")}if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);;
         | 
| 810 885 | 
             
                  $(function() {
         | 
| 811 | 
            -
              /*
         | 
| 812 | 
            -
              %< File.join(ERBook::INSTALL, 'LICENSE')
         | 
| 813 | 
            -
              */
         | 
| 886 | 
            +
              /*(the ISC license)
         | 
| 814 887 |  | 
| 815 | 
            -
             | 
| 816 | 
            -
              // respond to changes in window location
         | 
| 817 | 
            -
              //
         | 
| 818 | 
            -
              var $last_hash = null;
         | 
| 888 | 
            +
            Copyright 2006 Suraj N. Kurapati <sunaku@gmail.com>
         | 
| 819 889 |  | 
| 820 | 
            -
             | 
| 821 | 
            -
             | 
| 890 | 
            +
            Permission to use, copy, modify, and/or distribute this software for any
         | 
| 891 | 
            +
            purpose with or without fee is hereby granted, provided that the above
         | 
| 892 | 
            +
            copyright notice and this permission notice appear in all copies.
         | 
| 822 893 |  | 
| 823 | 
            -
             | 
| 824 | 
            -
             | 
| 825 | 
            -
             | 
| 894 | 
            +
            THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
         | 
| 895 | 
            +
            WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
         | 
| 896 | 
            +
            MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
         | 
| 897 | 
            +
            ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
         | 
| 898 | 
            +
            WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
         | 
| 899 | 
            +
            ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
         | 
| 900 | 
            +
            OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
         | 
| 901 | 
            +
            */
         | 
| 902 | 
            +
              "use strict";
         | 
| 903 | 
            +
             | 
| 904 | 
            +
              //--------------------------------------------------------------------------
         | 
| 905 | 
            +
              // utility logic
         | 
| 906 | 
            +
              //--------------------------------------------------------------------------
         | 
| 907 | 
            +
             | 
| 908 | 
            +
              //
         | 
| 909 | 
            +
              // Returns the tab corresponding to the
         | 
| 910 | 
            +
              // given panel in the given tabs widget.
         | 
| 911 | 
            +
              //
         | 
| 912 | 
            +
              function tab_by_panel(panel, tabs_widget) {
         | 
| 913 | 
            +
                if (!tabs_widget) {
         | 
| 914 | 
            +
                  tabs_widget = panel.parent('.ui-tabs');
         | 
| 826 915 | 
             
                }
         | 
| 827 916 |  | 
| 828 | 
            -
                 | 
| 917 | 
            +
                return tabs_widget.find(
         | 
| 918 | 
            +
                  '.ui-tabs-nav > li > a[href=#'+ panel.attr('id') +']'
         | 
| 919 | 
            +
                ).parent('li');
         | 
| 920 | 
            +
              }
         | 
| 921 | 
            +
             | 
| 922 | 
            +
              //
         | 
| 923 | 
            +
              // Returns a jQuery element containing a jQuery UI icon of the given name.
         | 
| 924 | 
            +
              //
         | 
| 925 | 
            +
              function ui_icon(name) {
         | 
| 926 | 
            +
                return $('<div/>').addClass('ui-state-default ui-corner-all').append(
         | 
| 927 | 
            +
                  $('<span/>').addClass('ui-icon ui-icon-' + name)
         | 
| 928 | 
            +
                );
         | 
| 829 929 | 
             
              }
         | 
| 830 930 |  | 
| 931 | 
            +
              //--------------------------------------------------------------------------
         | 
| 932 | 
            +
              // document location
         | 
| 933 | 
            +
              //--------------------------------------------------------------------------
         | 
| 934 | 
            +
             | 
| 935 | 
            +
              var $last_hash;
         | 
| 936 | 
            +
             | 
| 831 937 | 
             
              //
         | 
| 832 938 | 
             
              // Sets the location bar hash to the given value.
         | 
| 833 939 | 
             
              //
         | 
| @@ -836,14 +942,12 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 836 942 | 
             
              //  the element corresponding to the given hash.
         | 
| 837 943 | 
             
              //
         | 
| 838 944 | 
             
              function set_hash(hash, prevent_jump) {
         | 
| 839 | 
            -
                if ($last_hash | 
| 945 | 
            +
                if (hash === $last_hash) {
         | 
| 840 946 | 
             
                  return;
         | 
| 841 947 | 
             
                }
         | 
| 842 948 |  | 
| 843 | 
            -
                 | 
| 844 | 
            -
                  //
         | 
| 949 | 
            +
                function set_the_hash() {
         | 
| 845 950 | 
             
                  // XXX: bypass on_hash_change() by setting $last_hash
         | 
| 846 | 
            -
                  //
         | 
| 847 951 | 
             
                  window.location.hash = $last_hash = hash;
         | 
| 848 952 | 
             
                }
         | 
| 849 953 |  | 
| @@ -876,7 +980,7 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 876 980 | 
             
                    //   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
         | 
| 877 981 | 
             
                    //   THE SOFTWARE.
         | 
| 878 982 | 
             
                    //
         | 
| 879 | 
            -
                    //  | 
| 983 | 
            +
                    // The jQuery.LocalScroll plugin is documented at:
         | 
| 880 984 | 
             
                    //
         | 
| 881 985 | 
             
                    //   http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html
         | 
| 882 986 | 
             
                    //
         | 
| @@ -884,12 +988,11 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 884 988 | 
             
                    //
         | 
| 885 989 | 
             
                    //   http://flesler-plugins.googlecode.com/svn/trunk/jquery.localScroll/jquery.localScroll.js
         | 
| 886 990 | 
             
                    //
         | 
| 991 | 
            +
             | 
| 887 992 | 
             
                    var target_id = target.attr('id');
         | 
| 888 993 |  | 
| 889 | 
            -
                    //
         | 
| 890 994 | 
             
                    // temporarily place a dummy element at the current
         | 
| 891 995 | 
             
                    // screen position and give it the ID of the target
         | 
| 892 | 
            -
                    //
         | 
| 893 996 | 
             
                    var original_screen_position = $(window).scrollTop();
         | 
| 894 997 |  | 
| 895 998 | 
             
                    var dummy = $('<span/>').attr('id', target_id).css({
         | 
| @@ -899,26 +1002,17 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 899 1002 |  | 
| 900 1003 | 
             
                    target.removeAttr('id').before(dummy);
         | 
| 901 1004 |  | 
| 902 | 
            -
                    //
         | 
| 903 1005 | 
             
                    // when we set the hash, the browser will jump to the
         | 
| 904 1006 | 
             
                    // dummy, which is where the browser screen currently
         | 
| 905 1007 | 
             
                    // is, and therefore the jump will not be visualized!
         | 
| 906 | 
            -
                    //
         | 
| 907 | 
            -
                    console.log($(window).scrollTop())
         | 
| 908 | 
            -
                    console.log(target)
         | 
| 909 1008 | 
             
                    set_the_hash();
         | 
| 910 | 
            -
                    console.log($(window).scrollTop())
         | 
| 911 1009 |  | 
| 912 | 
            -
                    //
         | 
| 913 1010 | 
             
                    // undo the temporary changes
         | 
| 914 | 
            -
                    //
         | 
| 915 1011 | 
             
                    dummy.remove();
         | 
| 916 1012 | 
             
                    target.attr('id', target_id);
         | 
| 917 1013 |  | 
| 918 | 
            -
                    //
         | 
| 919 1014 | 
             
                    // the above approach does not work for Opera and IE.
         | 
| 920 1015 | 
             
                    // they ignore the dummy and jump to the actual target
         | 
| 921 | 
            -
                    //
         | 
| 922 1016 | 
             
                    $(window).scrollTop(original_screen_position);
         | 
| 923 1017 |  | 
| 924 1018 | 
             
                    return;
         | 
| @@ -928,35 +1022,19 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 928 1022 | 
             
                set_the_hash();
         | 
| 929 1023 | 
             
              }
         | 
| 930 1024 |  | 
| 931 | 
            -
              //
         | 
| 932 | 
            -
              // Returns the tab corresponding to the
         | 
| 933 | 
            -
              // given panel in the given tabs widget.
         | 
| 934 | 
            -
              //
         | 
| 935 | 
            -
              function tab_by_panel(panel, tabs_widget) {
         | 
| 936 | 
            -
                if (!tabs_widget) {
         | 
| 937 | 
            -
                  tabs_widget = panel.parent('.ui-tabs');
         | 
| 938 | 
            -
                }
         | 
| 939 | 
            -
             | 
| 940 | 
            -
                return tabs_widget.find(
         | 
| 941 | 
            -
                  '.ui-tabs-nav > li > a[href=#'+ panel.attr('id') +']'
         | 
| 942 | 
            -
                ).parent('li');
         | 
| 943 | 
            -
              }
         | 
| 944 | 
            -
             | 
| 945 1025 | 
             
              //
         | 
| 946 1026 | 
             
              // Reveals the element at the given hash by (1) activating all
         | 
| 947 1027 | 
             
              // tabs that contain it, (2) smoothly scrolling to it, and (3)
         | 
| 948 1028 | 
             
              // updating the hash in the browser's location bar accordingly.
         | 
| 949 1029 | 
             
              //
         | 
| 950 | 
            -
              function  | 
| 951 | 
            -
                var target = $( | 
| 1030 | 
            +
              function reveal(hash_or_elem, callback) {
         | 
| 1031 | 
            +
                var target = $(hash_or_elem);
         | 
| 952 1032 |  | 
| 953 1033 | 
             
                if (target.length) {
         | 
| 954 1034 | 
             
                  var target_is_panel = target.is('div') &&
         | 
| 955 1035 | 
             
                    target.parent('.ui-tabs').length;
         | 
| 956 1036 |  | 
| 957 | 
            -
                  //
         | 
| 958 1037 | 
             
                  // reveal all tabs which contain the target
         | 
| 959 | 
            -
                  //
         | 
| 960 1038 | 
             
                  if (target.is(':hidden')) {
         | 
| 961 1039 | 
             
                    var panels = target.parents('.ui-tabs > div:hidden').get().reverse();
         | 
| 962 1040 |  | 
| @@ -964,28 +1042,30 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 964 1042 | 
             
                      panels.push(target);
         | 
| 965 1043 | 
             
                    }
         | 
| 966 1044 |  | 
| 967 | 
            -
                     | 
| 968 | 
            -
                      var panel = $( | 
| 1045 | 
            +
                    $(panels).each(function() {
         | 
| 1046 | 
            +
                      var panel = $(this);
         | 
| 969 1047 | 
             
                      var tabs_widget = panel.parent('.ui-tabs');
         | 
| 970 1048 | 
             
                      var selected_index = tabs_widget.tabs('option', 'selected');
         | 
| 971 1049 |  | 
| 972 | 
            -
                      //
         | 
| 973 1050 | 
             
                      // map the panel to its tab because tabs do not
         | 
| 974 1051 | 
             
                      // have to be in the same order as their panels
         | 
| 975 | 
            -
                      //
         | 
| 976 1052 | 
             
                      var tab = tab_by_panel(panel, tabs_widget);
         | 
| 977 1053 | 
             
                      var wanted_index = tab.prevAll('li').length;
         | 
| 978 1054 |  | 
| 979 | 
            -
                      if (wanted_index  | 
| 1055 | 
            +
                      if (wanted_index !== selected_index) {
         | 
| 980 1056 | 
             
                        tabs_widget.tabs('select', wanted_index);
         | 
| 981 1057 | 
             
                      }
         | 
| 982 | 
            -
                    }
         | 
| 1058 | 
            +
                    });
         | 
| 1059 | 
            +
                  }
         | 
| 1060 | 
            +
             | 
| 1061 | 
            +
                  // scroll to nearest visible element if the target
         | 
| 1062 | 
            +
                  // is naturally hidden (e.g. because of a CSS rule)
         | 
| 1063 | 
            +
                  if (target.is(':hidden')) {
         | 
| 1064 | 
            +
                    target = target.closest(':not(:hidden)');
         | 
| 983 1065 | 
             
                  }
         | 
| 984 1066 |  | 
| 985 | 
            -
                  //
         | 
| 986 1067 | 
             
                  // scroll to the tab bar instead of the target
         | 
| 987 1068 | 
             
                  // because it contains the title for the target
         | 
| 988 | 
            -
                  //
         | 
| 989 1069 | 
             
                  var scroll_target = target;
         | 
| 990 1070 |  | 
| 991 1071 | 
             
                  if (target_is_panel) {
         | 
| @@ -996,73 +1076,290 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 996 1076 | 
             
                    }
         | 
| 997 1077 | 
             
                  }
         | 
| 998 1078 |  | 
| 999 | 
            -
                  var scroll_offset = scroll_target.offset().top;
         | 
| 1079 | 
            +
                  var scroll_offset = Math.floor(scroll_target.offset().top);
         | 
| 1000 1080 |  | 
| 1001 | 
            -
                  //
         | 
| 1002 1081 | 
             
                  // set body height so that any element can be
         | 
| 1003 1082 | 
             
                  // brought to the top of the screen via scrolling
         | 
| 1004 | 
            -
                  //
         | 
| 1005 1083 | 
             
                  var document_height = $(document).height();
         | 
| 1006 1084 | 
             
                  var window_height   = $(window).height();
         | 
| 1007 1085 | 
             
                  if (document_height - scroll_offset <= window_height) {
         | 
| 1008 1086 | 
             
                    $('body').css('min-height', document_height + window_height);
         | 
| 1009 1087 | 
             
                  }
         | 
| 1010 1088 |  | 
| 1089 | 
            +
                  var pending = true;
         | 
| 1011 1090 | 
             
                  $('html, body').animate(
         | 
| 1012 1091 | 
             
                    { scrollTop: scroll_offset }, 'slow', 'swing', function() {
         | 
| 1013 | 
            -
                       | 
| 1092 | 
            +
                      // prevent the body of this function from being
         | 
| 1093 | 
            +
                      // executed twice -- because there are 2 target
         | 
| 1094 | 
            +
                      // elements in the animation list and only one
         | 
| 1095 | 
            +
                      // of them actually works in different browsers!
         | 
| 1096 | 
            +
                      if (pending && scroll_offset === $(window).scrollTop()) {
         | 
| 1097 | 
            +
                        pending = false;
         | 
| 1098 | 
            +
             | 
| 1099 | 
            +
                        var target_id = target.attr('id');
         | 
| 1100 | 
            +
                        set_hash('#' + (target_id || '_reveal' + Math.random()),
         | 
| 1101 | 
            +
                          target_is_panel || !target_id);
         | 
| 1102 | 
            +
             | 
| 1103 | 
            +
                        if (callback && typeof(callback) === 'function') {
         | 
| 1104 | 
            +
                          callback();
         | 
| 1105 | 
            +
                        }
         | 
| 1106 | 
            +
                      }
         | 
| 1014 1107 | 
             
                    }
         | 
| 1015 1108 | 
             
                  );
         | 
| 1016 1109 | 
             
                }
         | 
| 1017 1110 | 
             
              }
         | 
| 1018 1111 |  | 
| 1019 | 
            -
               | 
| 1020 | 
            -
              //  | 
| 1021 | 
            -
               | 
| 1022 | 
            -
             | 
| 1112 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1113 | 
            +
              // search engine
         | 
| 1114 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1115 | 
            +
             | 
| 1116 | 
            +
              // Adapted from the source code of the ":contains" selector from
         | 
| 1117 | 
            +
              // the "Search on this Page" plugin by Waldek Mastykarz
         | 
| 1118 | 
            +
              // <http://blog.mastykarz.nl>, which was (1) published online on
         | 
| 1119 | 
            +
              // 17 November 2008 at <http://www.endusersharepoint.com/?p=951>
         | 
| 1120 | 
            +
              // and <http://blog.mastykarz.nl/search-page-jquery/>, and was
         | 
| 1121 | 
            +
              // (2) updated to work with jQuery 1.3 by "anonymous" here:
         | 
| 1122 | 
            +
              // <http://stackoverflow.com/questions/187537>.
         | 
| 1123 | 
            +
              jQuery.expr[':'].matches = function(a, i, m) {
         | 
| 1124 | 
            +
                // compile the regexp during the first call to this
         | 
| 1125 | 
            +
                // function only, so that subsequent calls are fast
         | 
| 1126 | 
            +
                if (typeof(m[3]) === 'string') {
         | 
| 1127 | 
            +
                  m[3] = new RegExp(m[3], 'i');
         | 
| 1128 | 
            +
                }
         | 
| 1129 | 
            +
                return jQuery(a).text().match(m[3]);
         | 
| 1130 | 
            +
              };
         | 
| 1131 | 
            +
             | 
| 1132 | 
            +
              $('.tabs:first > ul').append(
         | 
| 1133 | 
            +
                $('<li/>').append(
         | 
| 1134 | 
            +
                  $('<a/>').attr('id', '_search_link').attr('href', '#_search').
         | 
| 1135 | 
            +
                  text("Search")
         | 
| 1136 | 
            +
                ).hide()
         | 
| 1137 | 
            +
              ).append(
         | 
| 1138 | 
            +
                $('<form/>').attr('id', '_search_form').append(
         | 
| 1139 | 
            +
                  $('<input/>').attr('type', 'text').attr('name', 'q').
         | 
| 1140 | 
            +
                  addClass('initial').attr('title', "Search with regular expression").focus(function() {
         | 
| 1141 | 
            +
                    var box = $(this);
         | 
| 1142 | 
            +
             | 
| 1143 | 
            +
                    if (box.is('.initial')) {
         | 
| 1144 | 
            +
                      box.val('').removeClass('initial');
         | 
| 1145 | 
            +
                    }
         | 
| 1146 | 
            +
                  }).blur(function() {
         | 
| 1147 | 
            +
                    var box = $(this);
         | 
| 1023 1148 |  | 
| 1024 | 
            -
             | 
| 1025 | 
            -
             | 
| 1026 | 
            -
             | 
| 1027 | 
            -
             | 
| 1028 | 
            -
                 | 
| 1029 | 
            -
             | 
| 1149 | 
            +
                    if (! box.val().match(/\S/)) {
         | 
| 1150 | 
            +
                      box.val(box.attr('title')).addClass('initial');
         | 
| 1151 | 
            +
                    }
         | 
| 1152 | 
            +
                  }).blur()
         | 
| 1153 | 
            +
                ).append(
         | 
| 1154 | 
            +
                  ui_icon('search').attr('id', '_search_start').click(function() {
         | 
| 1155 | 
            +
                    $('#_search_form').submit();
         | 
| 1156 | 
            +
                  })
         | 
| 1157 | 
            +
                ).append(
         | 
| 1158 | 
            +
                  ui_icon('cancel').attr('id', '_search_stop').hide().click(function() {
         | 
| 1159 | 
            +
                    $(this).attr('clicked', 'clicked');
         | 
| 1160 | 
            +
                  })
         | 
| 1161 | 
            +
                ).submit(function(event) {
         | 
| 1162 | 
            +
                  event.preventDefault();
         | 
| 1030 1163 |  | 
| 1031 | 
            -
             | 
| 1032 | 
            -
                   | 
| 1033 | 
            -
                  set_hash(hash, true);
         | 
| 1034 | 
            -
                }
         | 
| 1035 | 
            -
                else {
         | 
| 1036 | 
            -
                  reveal_hash(hash);
         | 
| 1037 | 
            -
                }
         | 
| 1164 | 
            +
                  var search_box = $(this).find(':text');
         | 
| 1165 | 
            +
                  var query = search_box.val().replace(/^\s+|\s+$/g, '');
         | 
| 1038 1166 |  | 
| 1039 | 
            -
             | 
| 1040 | 
            -
             | 
| 1167 | 
            +
                  // ignore empty queries
         | 
| 1168 | 
            +
                  if (search_box.is('.initial') || !query.match(/\S/)) {
         | 
| 1169 | 
            +
                    return;
         | 
| 1170 | 
            +
                  }
         | 
| 1041 1171 |  | 
| 1042 | 
            -
             | 
| 1043 | 
            -
             | 
| 1044 | 
            -
             | 
| 1045 | 
            -
             | 
| 1172 | 
            +
                  // detect invalid regexps
         | 
| 1173 | 
            +
                  try {
         | 
| 1174 | 
            +
                    new RegExp(query);
         | 
| 1175 | 
            +
                  }
         | 
| 1176 | 
            +
                  catch(e) {
         | 
| 1177 | 
            +
                    alert(e);
         | 
| 1178 | 
            +
                    return;
         | 
| 1179 | 
            +
                  }
         | 
| 1180 | 
            +
             | 
| 1181 | 
            +
                  // one search at a time
         | 
| 1182 | 
            +
                  if (search_box.attr('disabled')) {
         | 
| 1183 | 
            +
                    return;
         | 
| 1184 | 
            +
                  }
         | 
| 1185 | 
            +
             | 
| 1186 | 
            +
                  search_box.attr('disabled', 'disabled');
         | 
| 1187 | 
            +
             | 
| 1188 | 
            +
                  // begin the search
         | 
| 1189 | 
            +
                  var status = $('#_search > .status');
         | 
| 1190 | 
            +
                  var results = $('#_search > .results');
         | 
| 1191 | 
            +
             | 
| 1192 | 
            +
                  // display the search results tab
         | 
| 1193 | 
            +
                  $('#_search_link').click().parent().show();
         | 
| 1194 | 
            +
             | 
| 1195 | 
            +
                  // clear previous search results
         | 
| 1196 | 
            +
                  results.text('');
         | 
| 1197 | 
            +
                  status.text("Searching...");
         | 
| 1198 | 
            +
             | 
| 1199 | 
            +
                  // timeout allows status updates to appear
         | 
| 1200 | 
            +
                  setTimeout(function() {
         | 
| 1201 | 
            +
                    var num_results = 0;
         | 
| 1202 | 
            +
             | 
| 1203 | 
            +
                    function emit_result(match) {
         | 
| 1204 | 
            +
                      // exclude matches from previous search results,
         | 
| 1205 | 
            +
                      // the table of contents, and jQuery UI tab bars
         | 
| 1206 | 
            +
                      if (match.closest('#_search, #_contents, .ui-tabs-nav').length) {
         | 
| 1207 | 
            +
                        return;
         | 
| 1208 | 
            +
                      }
         | 
| 1209 | 
            +
             | 
| 1210 | 
            +
                      var excerpt;
         | 
| 1211 | 
            +
             | 
| 1212 | 
            +
                      // resolve tab panels into their section title
         | 
| 1213 | 
            +
                      // because additional matches, which lie within
         | 
| 1214 | 
            +
                      // the content of these tab panels, will come
         | 
| 1215 | 
            +
                      if (match.is('.ui-tabs-panel')) {
         | 
| 1216 | 
            +
                        excerpt = match.find('.title:first').clone().show();
         | 
| 1217 | 
            +
                      }
         | 
| 1218 | 
            +
                      else {
         | 
| 1219 | 
            +
                        excerpt = match.clone();
         | 
| 1220 | 
            +
                      }
         | 
| 1221 | 
            +
             | 
| 1222 | 
            +
                      // highlight the query inside the match excerpt
         | 
| 1223 | 
            +
                      excerpt.html(excerpt.html().replace(
         | 
| 1224 | 
            +
                        new RegExp('(<[^>]*)?(' + query + ')', 'ig'),
         | 
| 1225 | 
            +
                        function($0, $1, $2) {
         | 
| 1226 | 
            +
                          // only highlight if not inside an XML tag literal
         | 
| 1227 | 
            +
                          return $1 ? $0 :
         | 
| 1228 | 
            +
                            '<span class="ui-state-error">' + $2 + '</span>';
         | 
| 1229 | 
            +
                        }
         | 
| 1230 | 
            +
                      ));
         | 
| 1231 | 
            +
             | 
| 1232 | 
            +
                      num_results += 1;
         | 
| 1233 | 
            +
                      var result = $('<li/>').addClass('result').append(
         | 
| 1234 | 
            +
                        $('<blockquote/>').addClass('excerpt').append(excerpt)
         | 
| 1235 | 
            +
                      ).attr('id', '_search' + num_results).click(
         | 
| 1236 | 
            +
                        function(event) {
         | 
| 1237 | 
            +
                          event.stopPropagation();
         | 
| 1238 | 
            +
             | 
| 1239 | 
            +
                          // save this search result's hash in browser history
         | 
| 1240 | 
            +
                          // before revealing the matching element so that
         | 
| 1241 | 
            +
                          // the user can press the back button to return to
         | 
| 1242 | 
            +
                          // this exact spot in the search results listing
         | 
| 1243 | 
            +
                          reveal(this, function() {
         | 
| 1244 | 
            +
                            if (!$(event.target).is('a')) {
         | 
| 1245 | 
            +
                              reveal(match);
         | 
| 1246 | 
            +
                            }
         | 
| 1247 | 
            +
                          });
         | 
| 1248 | 
            +
                        }
         | 
| 1249 | 
            +
                      );
         | 
| 1250 | 
            +
             | 
| 1251 | 
            +
                      // show bread-crumb trail for the match
         | 
| 1252 | 
            +
                      var first = true;
         | 
| 1253 | 
            +
                      match.parents('.ui-tabs-panel').each(function() {
         | 
| 1254 | 
            +
                        var panel = $(this);
         | 
| 1255 | 
            +
                        var tab = tab_by_panel(panel);
         | 
| 1256 | 
            +
             | 
| 1257 | 
            +
                        if (tab.length) {
         | 
| 1258 | 
            +
                          if (!first) {
         | 
| 1259 | 
            +
                            result.prepend(' ⟩ ');
         | 
| 1260 | 
            +
                          }
         | 
| 1261 | 
            +
                          first = false;
         | 
| 1262 | 
            +
             | 
| 1263 | 
            +
                          result.prepend(tab.find('a').clone());
         | 
| 1264 | 
            +
                        }
         | 
| 1265 | 
            +
                      });
         | 
| 1266 | 
            +
             | 
| 1267 | 
            +
                      results.append(result);
         | 
| 1268 | 
            +
             | 
| 1269 | 
            +
                      // unhide any hidden elements in the search result
         | 
| 1270 | 
            +
                      result.find(':hidden').removeClass('ui-tabs-hide').show();
         | 
| 1271 | 
            +
             | 
| 1272 | 
            +
                      // remove tab bars (used for titles) and mini navigation menus
         | 
| 1273 | 
            +
                      result.find('.ui-tabs-nav, .ui-tabs-panel > .nav').remove();
         | 
| 1274 | 
            +
                    };
         | 
| 1275 | 
            +
             | 
| 1276 | 
            +
                    var matching_elems = $('#_body').
         | 
| 1277 | 
            +
                      find(':matches("'+ query.replace(/"/, '\\"') +'")');
         | 
| 1278 | 
            +
             | 
| 1279 | 
            +
                    status.text('').progressbar();
         | 
| 1280 | 
            +
                    var start_button = $('#_search_start').hide();
         | 
| 1281 | 
            +
                    var stop_button = $('#_search_stop').show();
         | 
| 1282 | 
            +
             | 
| 1283 | 
            +
                    var prev_match;
         | 
| 1284 | 
            +
                    var prev_elem;
         | 
| 1285 | 
            +
             | 
| 1286 | 
            +
                    function process_match(i, n) {
         | 
| 1287 | 
            +
                      status.progressbar('value', Math.round(i / n * 100));
         | 
| 1288 | 
            +
             | 
| 1289 | 
            +
                      var elem = matching_elems.eq(i);
         | 
| 1290 | 
            +
             | 
| 1291 | 
            +
                      // ascend to a larger container for more context
         | 
| 1292 | 
            +
                      var match = elem.closest('pre,ul,ol,dl,table,p,div');
         | 
| 1293 | 
            +
                      if (!match.length) {
         | 
| 1294 | 
            +
                        match = elem;
         | 
| 1295 | 
            +
                      }
         | 
| 1296 | 
            +
             | 
| 1297 | 
            +
                      if (
         | 
| 1298 | 
            +
                        prev_match && prev_match.length &&
         | 
| 1299 | 
            +
                        match.get(0) !== prev_match.get(0) && // unique matches only
         | 
| 1300 | 
            +
                        elem.parent().get(0) !== prev_elem.get(0) // leaf nodes only
         | 
| 1301 | 
            +
                      ) {
         | 
| 1302 | 
            +
                        emit_result(prev_match);
         | 
| 1303 | 
            +
                      }
         | 
| 1304 | 
            +
             | 
| 1305 | 
            +
                      prev_elem = elem;
         | 
| 1306 | 
            +
                      prev_match = match;
         | 
| 1307 | 
            +
             | 
| 1308 | 
            +
                      if (i < n && !stop_button.attr('clicked')) {
         | 
| 1309 | 
            +
                        // timeout allows status updates to appear
         | 
| 1310 | 
            +
                        setTimeout(function() { process_match(i + 1, n); }, 0);
         | 
| 1311 | 
            +
                      }
         | 
| 1312 | 
            +
                      else {
         | 
| 1313 | 
            +
                        // handle the last item in this two-stage prev/curr loop
         | 
| 1314 | 
            +
                        if (prev_match && prev_match.length) {
         | 
| 1315 | 
            +
                          emit_result(prev_match);
         | 
| 1316 | 
            +
                        }
         | 
| 1317 | 
            +
             | 
| 1318 | 
            +
                        status.progressbar('destroy').text("0 results".replace('0', num_results));
         | 
| 1319 | 
            +
             | 
| 1320 | 
            +
                        search_box.removeAttr('disabled');
         | 
| 1321 | 
            +
                        stop_button.hide().removeAttr('clicked');
         | 
| 1322 | 
            +
                        start_button.show();
         | 
| 1323 | 
            +
                      }
         | 
| 1324 | 
            +
                    }
         | 
| 1325 | 
            +
             | 
| 1326 | 
            +
                    process_match(0, matching_elems.length);
         | 
| 1327 | 
            +
             | 
| 1328 | 
            +
                  }, 0);
         | 
| 1329 | 
            +
             | 
| 1330 | 
            +
                  return false;
         | 
| 1331 | 
            +
                })
         | 
| 1332 | 
            +
              ).after(
         | 
| 1333 | 
            +
                $('<div/>').attr('id', '_search').append(
         | 
| 1334 | 
            +
                  $('<p/>').addClass('status')
         | 
| 1335 | 
            +
                ).append(
         | 
| 1336 | 
            +
                  $('<ol/>').addClass('results')
         | 
| 1337 | 
            +
                )
         | 
| 1338 | 
            +
              );
         | 
| 1339 | 
            +
             | 
| 1340 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1341 | 
            +
              // create print preview toggle
         | 
| 1342 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1343 | 
            +
             | 
| 1344 | 
            +
              $('#_header > .authors_and_date').append(
         | 
| 1046 1345 | 
             
                $('<span/>').addClass('printer_friendly_toggle').append(
         | 
| 1047 | 
            -
                  $('<input/>').attr('type', 'checkbox'). | 
| 1346 | 
            +
                  $('<input/>').attr('type', 'checkbox').
         | 
| 1347 | 
            +
                  attr('id', 'printer_friendly_toggle').click(function() {
         | 
| 1048 1348 | 
             
                    var checkbox = $(this);
         | 
| 1049 1349 |  | 
| 1050 1350 | 
             
                    function change_media(src, dst) {
         | 
| 1051 1351 | 
             
                      var styles = $('style[media="'+ src +'"]');
         | 
| 1052 1352 | 
             
                      if (styles.length) {
         | 
| 1053 | 
            -
                        //
         | 
| 1054 1353 | 
             
                        // try changing the media in-place
         | 
| 1055 | 
            -
                        //
         | 
| 1056 1354 | 
             
                        var before = checkbox.offset();
         | 
| 1057 1355 | 
             
                        styles.attr('media', dst);
         | 
| 1058 1356 | 
             
                        var after = checkbox.offset();
         | 
| 1059 1357 |  | 
| 1060 | 
            -
                         | 
| 1061 | 
            -
             | 
| 1358 | 
            +
                        // but if that did not work
         | 
| 1359 | 
            +
                        if (after.top === before.top && after.left === before.left) {
         | 
| 1062 1360 | 
             
                          // try reinserting the <style> into document.
         | 
| 1063 1361 | 
             
                          // this works in Webkit browsers, which ignore
         | 
| 1064 1362 | 
             
                          // the in-place changing approach tried above.
         | 
| 1065 | 
            -
                          //
         | 
| 1066 1363 | 
             
                          styles.each(function() {
         | 
| 1067 1364 | 
             
                            var style = $(this);
         | 
| 1068 1365 | 
             
                            var parent = style.parent();
         | 
| @@ -1084,21 +1381,25 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1084 1381 | 
             
                    }
         | 
| 1085 1382 |  | 
| 1086 1383 | 
             
                    return true;
         | 
| 1087 | 
            -
                  })
         | 
| 1088 | 
            -
                ).append( | 
| 1384 | 
            +
                  }).css('margin-right', '0.3em')
         | 
| 1385 | 
            +
                ).append(
         | 
| 1386 | 
            +
                  $('<label/>').attr('for', 'printer_friendly_toggle').
         | 
| 1387 | 
            +
                  text("Printer friendly")
         | 
| 1388 | 
            +
                )
         | 
| 1089 1389 | 
             
              );
         | 
| 1090 1390 |  | 
| 1091 | 
            -
               | 
| 1092 | 
            -
              // activate  | 
| 1093 | 
            -
               | 
| 1094 | 
            -
              var data_uri_by_embed_uri = {"84731990":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC","84731598":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIkSURBVDiNjZJNSxtRFIbfc+cjmZkkfjSCEFuQtghCwUWj0KXb/IQs3GlBKBQ3waWLoNBfIBSkJYI/ILsupIsuGrIqLQGRoEak6KLNmExzZ+aeLuJMZ4oLz+7e97nPORwuMTMeUvOVvTrAW0TUZua1brN2AgAUCVZeH9aZeUsToh2Eaq21Xz3593h3U9P1vcKjojPyPDV0+z0wL3abtYEAgOWNxmYmY7x5ufTMnCsVV4QQn8rrDSduT7STny46mm7AzheEputTAFYBQIxz2llceOxYVgZP5maEbZkxMF/ZnQVg64YR+8xM1gbwCgBEeb0xC8B27GwMTE7mbKIxAKCsG8YouQ/dNDUiEU9QzjnZFFDIWZqmaauRwDAzuf8EYFYvYsFEwUkB+ZyFMBwDADwAKpmzYoDIiwQeM6eAMFQggnd37ARSDpN54EsQqB0JOreDPynAHXgQQrRjQeBrKYGUklkdA4AOoDMcjlKA63oyCMLju+MpK2XfXF4kERPA10hwKv3A/vzl+71At1mTAFINkkUP+crzld0egFLiyu82a2Y0AZY3DnvMnAJa+1Uz7kJ0npuaLmUsG74coX9zfRVlOgBogs6fPy2VZooT6LtDfPtxdpWQgZkPPLe/JDTdGvb7koGjKBMAEITq4OLyxnNvPZxdXEtmPkK6PgS+/+739c9bX47eg7me2kF5vZElom0Ab4noo1Jqu7Vf/XXPLkS3WUv9mb/vR+THZPMfuQAAAABJRU5ErkJggg==","84731220":"data:image/png;base64,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","84730758":"data:image/png;base64,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","84730296":"data:image/png;base64,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","84729764":"data:image/png;base64,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","84729302":"data:image/png;base64,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","84728784":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAU3SURBVGiB7VlPaBRXHP5+82aTSLIrkY3YJR68VmuSPXlRPPQPGg05iD14sZfEUkpbPJQqQVJs0yQlkEDobaE9CaloTlI0InhYNOBi2yAFT0JxZW2ysn/cmTczvx4ym+7Ozs7uzK6kQj54zOzvzbz3fe/3583MEjPjbYay3QRaxY6A7caOgO2G2uoAExMTB4QQVy3LGrEsq+XxnFAUpcDMCVVVv71y5Ure2d/yhKqqLgwPDw8PDg6SEMLzWj8lu3ytlLLr9u3bXzx48OAlgJma+f3Rrcb4+HgoGo1+FI/HSUoJKWVDQpXnThsR1fSHQiEcP36849GjR2NtFxCLxYSu64qiKDBNsyXyAGBZVo3NNE2EQiEA2OU2dttj1gkvwn766+GNCvAi50eQF96IgCCrHVRQ2wW0Sq7tHhgfHw/FYrF69bELAAzDgGEYvsipqtoU+cA5MDExcUBV1Z/27t37vld97+rqEtPT056TOCGlRF9fH44dO4b9+/cHTmDAQ4AQ4uqpU6c+jMfj5Itdk0in07h27RrOnz+/ZWurByzLGjl8+DBpmlZVn5tBo/AhIuzbtw+GYSCfz6OnpycQ+UYCVCEEDMNoG/GKscHM6O7ursodv+Q9BfhBOypL0ErUsoBmCDda2WbKLTO75mJgAX43paB7QYWdiIjYsQK+X2gqB3WbqFmbc0wvQfZvBUC3815fHggaLl4hREQgoq1KV36kLh/LhYSZNQCdAKpeapoS0I5wqSciEokgEokgm80CAHbv3g0hxNY1hmHg3r17xvr6+q9u3BoKCLrCzfRJKTE3N2devHhRhMNh5HI5qKqKyclJSCl1+7bSxsbG8srKys8AXgcS4IzddnmEiEpPnjz5anFxcebChQvhPXv2AAA0TeOFhYUjxWJRBWAAKADYcBPQVBK3kqxeNgD86tWr35PJ5Oj8/PxGMpnUmRnRaLR09uzZAQAv7ZYB8I+zAgFtDiG/HiEi7u3tzV+/fn0tm82+p+v6lw8fPvyso6Ojo7+///uDBw8eWltbKwKo+7Ld0AOVIeRczRZXHwAgpRQA1GQy+Xp2dva7W7duHXr+/HnCNM2+EydOfAqAsLnQgohUIqri/EZDyE20Y1wqFoudAEI2SfXOnTvZqampr58+fTrAzO+cPn26z+ap2GIUKtdY1AkhIlIvX75cQ8rt6MfmNlWpVOqyyVU+8vLS0tLfAL5x2AGgasB6OdBJRKZpmnB+MqncdCptdlWpjO8tmxOKokBRFORyOWiaxrYAaZOz7GP53Ko4N5m5avIaAUQkAKi6rv+WSqVG4/G4UvlGJqVEPp+HEAKRSKSOfm9YloVnz56hUCi8XF1dTdvkpIN8pQDLrQK5CijrSCaT05ZldS4vL3/AzAIADQ0NWaOjoyoRIRwO4+7du3JlZUXA4dZGsPPhz8ePH/8AQLPb6zLxemRdibo8mxCAHrt1A+gAwGfOnDly7ty5xZGRkV0AsLq6Km/cuLGWSCQ+yWQymh8B+C8hS9jcpHLMXPPhthnUeICZmYh0bK4KAdABcCwWG+jv71dN08TNmzdLqVTqr6WlpY8zmUzN7uhDgG6LKAYhD7h4YKuDqBObn03EyZMno4ODg38cPXpUSaVShRcvXkwmEolfcrlc/Q+i3ignlQ6gyMxBx6m/EzOzZntCDAwM/AgA9+/fn02n01OJRKIQdEIbyuYUwYmXUdcDZVy6dOldZv7cNM3JmZmZdKsTth3OXdPZxsbGQo2u2c7W0AP/d7z1f/LtCNhu7AjYbrz1Av4F8/cV1apw1zkAAAAASUVORK5CYII=","84728322":"data:image/png;base64,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","84727874":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJOgAACToB8GSSSgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAS1SURBVFiF7ZddbBRVFMf/596Z3W3rtiwtUFsJFQhWMQSIWi0UKJHPlISvCGpiogkxig8SlBSj0Rij6YMPJhB9IyZqTFRC4pNKAgElplSIsRURRL6xtLRLu53dmbn3Hh9mFrZ1Kcs2pi9McnJndu8953c+7rkzxMwYz0uMq/W7AACssSpofo2qlJQfW6X66QNvs7rT9WOKQNP22Kz4xNqOadX1y1CkM0UDLH7dXlo3ddahV9a9O62m6n6/WD1FUS9qtbbMe6i5bUXDxkR/5h+AijVfBEBTa+TD1Q3PbJlX3xQ/39eFeKyyeOt3AvDIi2THJsivn1u5fUXt5LroxeRJMBjA2BoZFdIJm7fRBHFP+f4tLTvnRksism/oCjQrKOOjIlaFgWTSOX3pj0FmRiAGBszMBgyG1gqdZ38+cvh9tWGk7ttG4IltJXWTJtbsf37NjulplaSeVDeYDTRrGKMw6PahrKK89OH43FJjVAimYFhBax/aKFRXTEfn3+2T8+kfFaDpjUhD3X0z9m5e9lJNz9A5eCoDRughGxhoeF4ag+41aKOgtA9tfCgzfCwvmXRLG7cEWNRqbZ5d9+iulY2bKi8ku6CMAhGBmQFigAIAIzTYaLBQYFYwRsGwzhGD0eokL0DTzug7jXNWvjq/fkHFqd6jAANEwV4jQQEAgvwaykIoMGmwMGCjoTkACUZTOMDCndaelsZnn5oyubr0VE87iAQIBCKCEHRjyxOFBcY+UqofQ24SaX8IMACMALGEhRKAGYZ14QAEOL3XL2urzCDpdKMsloCAgLAEBBG0ceF4STg6ibRKwtVDYV0w2ABGM4xmaMUwiiE4ghnevFB1AQCHP1BbF7dG/pw+MPutWTNnVnZc/A5CANFoDBAaWmQgJUFIAkmCsAPdzATWDKIcUwwo30VGOQCDiEgyDw9H3rPgUJu/u/PEby8cO97R3TB1DWw7AtcMQlEGQhKERRA2QVqhhPfCDv4bBigDGmYIABEikqMCEJEAYHXs0ge62i+tPXjk+/Pz713FidIpECJQPsywLSAtcQNCWrnGEdTNzeBbACyim7/k2wUiFHlir//X4LneFtfd9+Xy5pYHrnKX7PXOQsjQS4tQYpcjEa0J8m+CvGvF0L4JR0ZpJA4wKEc3Idybt+uEdPEX9F0/l1rvet988uSS1Y+XJxKxC86vAYQlUFlWC75alT5/+kImaMPgoMOb4KQwxNdwlJlNb14DI8+CMEeRUOyc0X5sq/3mwgWN62vrE/HTqUOQNqEmXo8zR5z+z3Yc35BJwgGgAPiheCPus88uh4b/UwNhlepQ0TBp3+2/d/CHn9p+bz/TP2fialgyEuRYgEnCAZAB4OYYG6lDA/A4x+tbpWDkG07Q+gB9bI/63OvvOjXgDHy0fMWq6hRdBsNhIZEOAfI5kI1Chnl4W8wLEBJ6RGSyhsO5EoDs3Kd/TCUvrXOcb7/YuHZTHXE3ywgcAOlwfnbNDa9Hen67CGRBFAAV1oWdBQAgzh70T7rXe5pd79OvonbJg5E4hsII5AJ4AHQ+wwUB5IBkw4pwDwsAdOU4UiQGl8xc6r3cK3AtnMPBksK++Qp6I/o/r3H/MroL8C8JiYMXQa6AIwAAAABJRU5ErkJggg==","84727398":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJOgAACToB8GSSSgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAASrSURBVFiF7ZdtaFZlGMd/133O2dgcmunUZDgzzIYvJIH2wU2UtDKKXkCCLIqiDyIWZfhCEYIRCUIgUvYhApMKKoUMDd9ymagzNHTGZNlSp5tz0z17e55zzn1ffXjOo8/WZuqH+SEfuLgOPPc5/9/1v677PhxRVW7nz9xW9TsAtwowZ7X4Ve/4i24bAFcoKb173MZH3h2yY8FSKRx8AGDqhBnpt57/eJ43aszhqqVSOugATh1i1Cx+ZvW0svEVNbNWFE4eVABVR1d4mfOpehY9+kb5tAkz9lSu8J8cNACnjshGpOMOTrcdY/7Dz42a/eBTmyqXFy6/medIfydh1Ur/64pxM+cGnq8igogICCJylXtieUXJsGF3FbV2NeLUouoYM3QCF1uaurfu//zb6oLoFX1f3S0BVK4q2PPmwg/mXOo6h4jBE58siMHINdNS6VbSUReKw6nDOcvw4tH4tij6ZvdnB21rasHeDdp5PQB/oD+6wxSN7acScYMRL8kCJE4IqCqqDtUsRHNHA8XB0OCFx5bM2rL3iyOz35Z5+9bp2YF0BpwBq5bYhkQuQ+ySbDPZTAYrIY4MTrLXlpBYM8Q25HJPMw1Xjsqzc1+aVFY26UDlqoKZNw3gXEzswiyEzYrHZHAS4gixksFKhJMIJyFWQjKuk/boIq1djbR0nuXYhd3Mnvl42eTxD22rXO6/2J/OgC2wGhO5ECMeBoPxPXwEMMk8CKHtpjPTRmfUTjrsxFqLs4qLFRtnZ6vxSh3Tx88fOaxk2PqqlYUV1R9mVt0QQCbupivTjmd8giDAOEirRV1M5Hrose3EGmYXK4gPngi5jaKAi5XQprmQqqe0ZGKh58mUG3NAkY50G80dfyEGvMDg+YLnC8YXjCcYD7zcjlAQp7icuCbhlIpRs4hSfuqnmu+/PLDWLmFNb6l/zYCIeFwdczBGMIasaALh+YIXGPxA8APBC6Q3oC/4vseM8idoOdfe9uuhXe8dWGuXAd51HcgeOHiqWQAREC9X8bXwEhfEZDnVKbndqQoFUszU0fM4WHOo6dSxhsW/b3bViZaKiNW8w6dvCwzgoUhRUELZ8PsxgcH3kyoDk3UhAUnFTaRtJ+queVbij2BicZXu3PPT37W7Wl9u+MXWX30u2CTHAwEkPXSttX8cvySmGBHIgKiIGAMogiDjxo8tHDHSL2rqqcM5AXWMKCyn1E2Jf9ixpfbIVx2vtZ+mLUHLtVT6avU6ikXEAAVAkOT86yA/Xv10+rb7ZhWPaOqpw8WOewqn4pqH9+zYuX1/zcbMsrCLHiACwj45rXrtHdHLAVV1ImITy2xiVX4FCjjAiqDGCL5vuHdIJQ3H21LVP/+4ueaTaH1yX5REnIQFonzxflugqlEyjPmiOeE4uccgqMHngSHzObzvRMtv1bVrjm6KtueJ5SByOa2qcV+9AWZAQxFxuWqT8MkOkAGMgI71prN123fnTlY3vn5yqz3RZ30OIgYyqmr70+r3ddxrQfZcCK5WnsTTH5X9GUXp83W7Ly2s30tznks5iIh+LL8hB/q4YQGb1xYDyKXLFzec2R+uO7Ofnj7i+l+ivQq88234vwf4B6YlTDQudkyaAAAAAElFTkSuQmCC","84726992":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABSlJREFUWIXdl1lsVUUYx/8zc7a7daUroXQhlkpoQ4sVA8b6gilbIEIDggEiEiSRFwzEJ/pCXXjgQR8sAW0I0QQSicZIiC9IsClFFqlC6HorXW/Xe+/p7b3nnpnxobbpJW1pS+uD3+N3vpn/b2b+c853gP9rrNp1WZtNHVlo4ZLDl/YzkC+lhAMUZ+9Uv3MCIHK6eraQ4sXvX9ri0tVvD2wtMt4oyaZPvP1rE1bf93ff/f72dGMWbAcKj1xMNYTSeGh7cbxUFNhcQpE2Lvxwz1Sj4czfvn4vONU4ulAAGicni/LTjYR4Jxo7g2jzjSAzJQ5Ll3iUCDUqphu3IACF7150MUqPvr4mS2/sCkICEEKic3AUhfkZBlXJjkUF0HW6JTXJTVwOHYOmNZHv80eQlRYHSFLyQgCrdlXOeKUkIRtezklVff5ITH7U4vC4dAjO00sOVzvnASDJ8vJPz5ghPZSz+ZNg9uaq/VNOQkmypjMaifKYvC0kKBn3eaI6Z4DsTZ9/mBTvOHZ0TxnbVV7q1hXlfO6mqi3P1nEhvIFg2NbU2Ol0hcIM2yAgPHcI5pwA8rd95iFEnN5UVqS19piQTMHO8lJFEHIpb+OZ1Mm1DLjT1jVsexyxizQ0hkF/CJSSlitXKmK353kAYc4rUpPilbQlcXjQ5MOv9zvgdjuwesVSw1b4yRgAxut7B4KGxgjIpDdLSpyOx20+Swh5dTqdaQEo2I6VKzKNJ0+HwIWEkBJ1j7rx6ppcnVIcTdt4xjVeawmHyYVE1BYTZ+5xqFCpxMOmHoVSXJgzAICSrPREtHX7JxKdfSaYoiIj2UMczJ7kBVuldExY/Gu83FQXrtc2WlLImtvVe5vmBJC5tdIppUh3OjUEQ1bMM29PAMsyl6gScgMAFB+6WECkuOlxaLBsCQkgM8lAR++wbO0cClpW9PgMi5wawBg1VACghMJ65mqFLRuMMUooSwYAytgxl6EWFOSlcv9oFJpCkehScb22kQsujzyoOTg8Z4DWxFxTEvDASBhOI9bZDk1BYCRsQwovADCCbbvfKsS6wizW548gJU5HQ4tPhsJRJcevTWu+GQFwpYJT0BbfoIl4V+xL0O3Q0NfvtyXFnZLD1SrnMlNRGf78O4BwlCMlXofKxhcisucHAEAKcbW1vdfKSHZP5AgBDI2if9g0OHi9orscACAkgS3Geo5AKIqoJSVltPbuud0t8wagjF3wdvUpTo0izjm2C4yOeYJzAS2smLe/2BdglA72Do0gwaki2aMhErFQ+9ArbFvMaL7nArT+dKKJc1FT/0eztTI7GZQQcCEmrpniUFQAICBnb/7eEtaZBOwofrzxyLI5P3Xv/L662QDM2BFlb69MQFRvXlf8UlIUKmnvCWBtfhpu1TXADEUeS0LfznmltCnU3V0jBN9DKIsQKU7Xn9tbNVMfOGsAAMgpr9qpG9p3b64vUhraBpCe5IQ5PMzbO3xsNBL9yvvzxx8AQNmBb4wbNQfDsxGdHM/tB9rcK66GI1Glpb1HZiS70DUwgrycpWx9aQEIJdvG6+YjPiuAZaY3GwA0hSHBrcOKcjxo9kGAQgqZWVJSPeV3fsEAnl470UIJqbVsLobNsY4nagtwPnbE/tRux6ICAIAQ5Hirt0sKbiPJY8Dj1DDoN0FABpuvVQYWHcB77WQdF/JUw1/Nlko44gyK5raOMICzLyIOzOHPaLjpl1vuvFuir3/otW7fAOO2vLw8FP7I670hXhRizpFdVmn856KLFf8AcP0p5DnhnVEAAAAASUVORK5CYII="};
         | 
| 1391 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1392 | 
            +
              // activate base64 data URIs
         | 
| 1393 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1394 | 
            +
             | 
| 1395 | 
            +
              var data_uri_by_embed_uri = {"cid:82357576":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC","cid:82357212":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIkSURBVDiNjZJNSxtRFIbfc+cjmZkkfjSCEFuQtghCwUWj0KXb/IQs3GlBKBQ3waWLoNBfIBSkJYI/ILsupIsuGrIqLQGRoEak6KLNmExzZ+aeLuJMZ4oLz+7e97nPORwuMTMeUvOVvTrAW0TUZua1brN2AgAUCVZeH9aZeUsToh2Eaq21Xz3593h3U9P1vcKjojPyPDV0+z0wL3abtYEAgOWNxmYmY7x5ufTMnCsVV4QQn8rrDSduT7STny46mm7AzheEputTAFYBQIxz2llceOxYVgZP5maEbZkxMF/ZnQVg64YR+8xM1gbwCgBEeb0xC8B27GwMTE7mbKIxAKCsG8YouQ/dNDUiEU9QzjnZFFDIWZqmaauRwDAzuf8EYFYvYsFEwUkB+ZyFMBwDADwAKpmzYoDIiwQeM6eAMFQggnd37ARSDpN54EsQqB0JOreDPynAHXgQQrRjQeBrKYGUklkdA4AOoDMcjlKA63oyCMLju+MpK2XfXF4kERPA10hwKv3A/vzl+71At1mTAFINkkUP+crzld0egFLiyu82a2Y0AZY3DnvMnAJa+1Uz7kJ0npuaLmUsG74coX9zfRVlOgBogs6fPy2VZooT6LtDfPtxdpWQgZkPPLe/JDTdGvb7koGjKBMAEITq4OLyxnNvPZxdXEtmPkK6PgS+/+739c9bX47eg7me2kF5vZElom0Ab4noo1Jqu7Vf/XXPLkS3WUv9mb/vR+THZPMfuQAAAABJRU5ErkJggg==","cid:82356834":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAOdEVYdFRpdGxlAFRlcm1pbmFs1fugkQAAABZ0RVh0QXV0aG9yAEFuZHJlYXMgTmlsc3Nvbivv5KMAAAAYdEVYdENyZWF0aW9uIFRpbWUAMjAwNS0xMC0xNQ2UB1cAAABJdEVYdENvcHlyaWdodABQdWJsaWMgRG9tYWluIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL3B1YmxpY2RvbWFpbi9Zw/7KAAAJiElEQVRogdWaWYwcxRnHf1Uzu7O7M2aNDSwGH6wXG18kOEgQE8QdIkWKIqQkj0hBUZSHPCUvKBFCSSSsIEVRXhNZIEUiichLYkUJwhgfYBRjDmNhfARjG7M+dnfsuWe6q+rLQ3X39Bx7mASMSxp1d3V11f9f3//7vurqUSLC1Vz0lQbwv5arnkA2ffHCC9tWidZbQd0n4m4SEXW5HYoIzrnoKIi4T3n0/TgRECdKZycRt8cGwc+efnrryXg8FfvAH1/Y9t2BgYHnbt+4efiG68f08PAwcNn4/y9FEBBBxJ+LCLVqldNnTruXd/yr2QiaT2z9xbN/SQg8/+fnbxnU6v2HH/jGiDWWmeIMrVbrioCfrQwODDI6OgoKtj33h3rYrG/cuvW3JzXAAPLM7RvuGLLGMnl28gsHHiAIA6ampxARHnno60Muo5+BxAfUfTdcP6anZ6YBOHfuPK+++grFmUtA/zCrtUYphVIqda5Rio66dDvVp667ndYKReqe1ixalGfd+vUsuXYJpVKJFStWamvcfQkBEXfT0PAwQRAAsGv3To6dPMjZM1NtN0jxkPhCemo6G0v6Mem63f8ZEfyYSReOW8aXo5Riy5Z7CIKAkZE8zWbjphQBUcofAShOX+KTj8+jlCKrM13DxyNEg3WDmwNMD2jp13NnG2uEj06cwdxrqNfrZLNZH52sUwmBfkWcA6X56S9/4CNCHBmiofxA/locoCTVjr7H7j7aP3COjuu4/e9+9ScQQWuNtQZBsNZinWVOAk4EhePiVDkJZSKRlWKwSZiLWQuCi67b92NgyfNRH7HFfd/Sfi4iiviJFAStNGFoyDiHtQZr3dwEYgvkRnR7TmIAKUDxrLdnVQNREotIqTTY9HMpq8XgE7+J6p1zXloarDE40d4Cdg4LKKW8BcQxM1XpSSqkAIuTpF4pOmY1bYV45iVVp1L3upNXLFHrHOIsCk1oQ7TzBFyaQMwmLlprnHMopcgNa1B0AKU9l34giR3apdqoWAXRzU4ZJTLRKbJOCMImraBBK2jQDBo0GtUEkwktSluMMViXkpCLLnoJaIrTlc4ZcuIJdcxapPREw85LIdZxh8QkWev4sS31eplKrUyjVevB4qJ2SiusM2DplVA/C3igjsFhBaL8gBlwJp7JWEptTSfS8UG5ww9i0kq8LGrNGo1GhUarjogjMwSFoVyk4dQqLDK4VhoTxlHIzE8glpD3AS+NpRPLaZUr1ItVXGATEk46LaH6EUSw1lGuXqJULrZnep71YmwBrTXGGsQ5jLHJ8xGB2SU0MKgADUpYvnwF925+lPeOv8nhw29Rnp7GNsIYMuLiiBNlisgyThzVRplqvYTFkr9moD9y1efSRRJSChOGOBGMCZM2noBrW0CipOHEoQSK0+UoRQrNRotlhWXcvPkxvrrpft764A0OvLOPyRMnCathErPbCUuo1spUqqUeK/dDrPpUu2RJIcnMW9Puyzux9XIw1mBC4wlYQSlHNuf1rETRaFWZrEyydOQ6lgws5dEvfYstm+7n4Edvc+Dga5w4ehhTaYG1NJoNqvUy1lmGRrJ0R+xOsHPoSBIGUfSxhD0WsP7Nx4QGY8IOH7g0XY0c0/Hmrjd4d/9brJyYYGJiHevGNzGx7FbuWr2FO8bv5NjkEba/8iL7XtpBUOtckqsFvRupHiqxBQBCY3DOh9EuAhZxQmjCtgXEoUShB4gkpJAwJCwFfPj2QU4cOsTOwt+49sbrWDOxkS1feYCbx1awfv0mDuzZRRZh1qL6nrZrUpXi2gtDa0KM7UfARRIKQ4xJS0goFVN5QEFmKEtmOMvK5asYX7OG1atuY+P4JoZzI1RaZU589CGViw1MPeyLsAfwLJaJbSEdFrBYGxKGXRJy1iHiw1MYpiUEKuPDoRIYv2sd9979MBvGv8zY4jHymTzGGU5fOsX2vX9l756XKZ65QEaEzHCWDknMI6H+ElOpzA/G+Anu4wM2CU+xBbyZhE8+OeeXEeLY9ODdfPPObzOSGaFkShz8+B3+ufvv7N25g/K5S7iGWdAUz+sPaQmlFoHGeB81QZ8wGvtAbIE47GktoBWQQWc0JVPitWO72bH7HxzYt4/mTB0XWjJAJte1NuyQ89xxfxYDtCXkwIR+9vtGIRHXEYVi5rVKkAA5deoUP3/2Jxza/w6tYtMvuWfHNMuNWUXftyROjODE+6pLyaojD3h2JiIQNci2N++O7H+PoNwE8S/f6MxlOGX6ZHYNdd/ut3frXFcii33AGoOJJBSvOhv1trka9XDhTjn37ajR/J3023sW12UB/9LgEn0lFhDQSs2DRiVYVt9zGytuXrkQ6ExNn+fovvdxgaU79rd7TYFNEbEp6bYTWZSJw9B0+ECr2U4acc+z8Vm3diNP/vApBtXgnOCdOLZt/z2HXj2IaZk5Hb2fBfpKKPYBk7YAURLu6DGajD4siheL7Nj/0pzgY5yTk2fweaLfdLSt2g6jKQjdEnLW4aIo5MNoJqGeXvnNV/Zu38Xe7bsW3D6otRAryWT0W5suzAJRHjDWh9HB7EBMn+nJyoIBcTltF1riFxqlEjJpH9CQ8gETEoaGIGixcuWKhMQV/aFYuWpF9B7s/bE3CkXL6TD0PiAifP/xJ8jlhtHa54G5NmTVwtbKn6oopag3akzNnE/qeiTkrBVrjbLWL+aCIKDRqH9moGYrtWqN0Biy2Sy5XI5cLtcBFtp7VkR+rQGcuLMzM9MUCov6Zr7Psjz247tZ9Z0LgH9hWbx4MYVCnsHBAQqFRT3tM5kMtVoNrdRZpZTSSqlsGJg3jh0/5tav2/C5ggd4+9x2WrYGQCFf6NhOKeQLPe1HRkaYKc5Ya+2/gXwGGMoPF45cLM88fs+Wrw2M3XAjpXKJIPh8vtKUDuepHrkWgNzQEPn8Iq4ZHWXJkqWIEiqVst/mz2YpFAo46zj+4fHg6NH//OjCuQtFBYwAix565P7vjS0b+/XDDz4yNLH6VjU6Okr8xdBFSw0nzu/NR18h41Vsu85FdYJzNnnWiUtemmzSl/hj/Iv6ESdJ+3ado1qvUyzOuI/PnA7On7/w1J6dr78IVBQwCBSAwtoNa9esW7vmyezgwGalWMKV+kzZW0SEi2ErePf9D4785sSxE8eBGlBVfldZDQF5vDWGgRwQ7z7NugX/ORWLjzgWCIAm0ADqQC35TqyUytIGPwhk+GIQiME7wJAiISKiusNmlJTinSjNlSfgSBEQkY7E0EPgaitX/Z89/gtKTbM2+RLpBQAAAABJRU5ErkJggg==","cid:82356428":"data:image/png;base64,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","cid:82356008":"data:image/png;base64,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","cid:82355644":"data:image/png;base64,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","cid:81900308":"data:image/png;base64,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","cid:81899636":"data:image/png;base64,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","cid:81899006":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAU3SURBVGiB7VlPaBRXHP5+82aTSLIrkY3YJR68VmuSPXlRPPQPGg05iD14sZfEUkpbPJQqQVJs0yQlkEDobaE9CaloTlI0InhYNOBi2yAFT0JxZW2ysn/cmTczvx4ym+7Ozs7uzK6kQj54zOzvzbz3fe/3583MEjPjbYay3QRaxY6A7caOgO2G2uoAExMTB4QQVy3LGrEsq+XxnFAUpcDMCVVVv71y5Ure2d/yhKqqLgwPDw8PDg6SEMLzWj8lu3ytlLLr9u3bXzx48OAlgJma+f3Rrcb4+HgoGo1+FI/HSUoJKWVDQpXnThsR1fSHQiEcP36849GjR2NtFxCLxYSu64qiKDBNsyXyAGBZVo3NNE2EQiEA2OU2dttj1gkvwn766+GNCvAi50eQF96IgCCrHVRQ2wW0Sq7tHhgfHw/FYrF69bELAAzDgGEYvsipqtoU+cA5MDExcUBV1Z/27t37vld97+rqEtPT056TOCGlRF9fH44dO4b9+/cHTmDAQ4AQ4uqpU6c+jMfj5Itdk0in07h27RrOnz+/ZWurByzLGjl8+DBpmlZVn5tBo/AhIuzbtw+GYSCfz6OnpycQ+UYCVCEEDMNoG/GKscHM6O7ursodv+Q9BfhBOypL0ErUsoBmCDda2WbKLTO75mJgAX43paB7QYWdiIjYsQK+X2gqB3WbqFmbc0wvQfZvBUC3815fHggaLl4hREQgoq1KV36kLh/LhYSZNQCdAKpeapoS0I5wqSciEokgEokgm80CAHbv3g0hxNY1hmHg3r17xvr6+q9u3BoKCLrCzfRJKTE3N2devHhRhMNh5HI5qKqKyclJSCl1+7bSxsbG8srKys8AXgcS4IzddnmEiEpPnjz5anFxcebChQvhPXv2AAA0TeOFhYUjxWJRBWAAKADYcBPQVBK3kqxeNgD86tWr35PJ5Oj8/PxGMpnUmRnRaLR09uzZAQAv7ZYB8I+zAgFtDiG/HiEi7u3tzV+/fn0tm82+p+v6lw8fPvyso6Ojo7+///uDBw8eWltbKwKo+7Ld0AOVIeRczRZXHwAgpRQA1GQy+Xp2dva7W7duHXr+/HnCNM2+EydOfAqAsLnQgohUIqri/EZDyE20Y1wqFoudAEI2SfXOnTvZqampr58+fTrAzO+cPn26z+ap2GIUKtdY1AkhIlIvX75cQ8rt6MfmNlWpVOqyyVU+8vLS0tLfAL5x2AGgasB6OdBJRKZpmnB+MqncdCptdlWpjO8tmxOKokBRFORyOWiaxrYAaZOz7GP53Ko4N5m5avIaAUQkAKi6rv+WSqVG4/G4UvlGJqVEPp+HEAKRSKSOfm9YloVnz56hUCi8XF1dTdvkpIN8pQDLrQK5CijrSCaT05ZldS4vL3/AzAIADQ0NWaOjoyoRIRwO4+7du3JlZUXA4dZGsPPhz8ePH/8AQLPb6zLxemRdibo8mxCAHrt1A+gAwGfOnDly7ty5xZGRkV0AsLq6Km/cuLGWSCQ+yWQymh8B+C8hS9jcpHLMXPPhthnUeICZmYh0bK4KAdABcCwWG+jv71dN08TNmzdLqVTqr6WlpY8zmUzN7uhDgG6LKAYhD7h4YKuDqBObn03EyZMno4ODg38cPXpUSaVShRcvXkwmEolfcrlc/Q+i3ignlQ6gyMxBx6m/EzOzZntCDAwM/AgA9+/fn02n01OJRKIQdEIbyuYUwYmXUdcDZVy6dOldZv7cNM3JmZmZdKsTth3OXdPZxsbGQo2u2c7W0AP/d7z1f/LtCNhu7AjYbrz1Av4F8/cV1apw1zkAAAAASUVORK5CYII=","cid:81898502":"data:image/png;base64,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","cid:81898012":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJOgAACToB8GSSSgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAS1SURBVFiF7ZddbBRVFMf/596Z3W3rtiwtUFsJFQhWMQSIWi0UKJHPlISvCGpiogkxig8SlBSj0Rij6YMPJhB9IyZqTFRC4pNKAgElplSIsRURRL6xtLRLu53dmbn3Hh9mFrZ1Kcs2pi9McnJndu8953c+7rkzxMwYz0uMq/W7AACssSpofo2qlJQfW6X66QNvs7rT9WOKQNP22Kz4xNqOadX1y1CkM0UDLH7dXlo3ddahV9a9O62m6n6/WD1FUS9qtbbMe6i5bUXDxkR/5h+AijVfBEBTa+TD1Q3PbJlX3xQ/39eFeKyyeOt3AvDIi2THJsivn1u5fUXt5LroxeRJMBjA2BoZFdIJm7fRBHFP+f4tLTvnRksism/oCjQrKOOjIlaFgWTSOX3pj0FmRiAGBszMBgyG1gqdZ38+cvh9tWGk7ttG4IltJXWTJtbsf37NjulplaSeVDeYDTRrGKMw6PahrKK89OH43FJjVAimYFhBax/aKFRXTEfn3+2T8+kfFaDpjUhD3X0z9m5e9lJNz9A5eCoDRughGxhoeF4ag+41aKOgtA9tfCgzfCwvmXRLG7cEWNRqbZ5d9+iulY2bKi8ku6CMAhGBmQFigAIAIzTYaLBQYFYwRsGwzhGD0eokL0DTzug7jXNWvjq/fkHFqd6jAANEwV4jQQEAgvwaykIoMGmwMGCjoTkACUZTOMDCndaelsZnn5oyubr0VE87iAQIBCKCEHRjyxOFBcY+UqofQ24SaX8IMACMALGEhRKAGYZ14QAEOL3XL2urzCDpdKMsloCAgLAEBBG0ceF4STg6ibRKwtVDYV0w2ABGM4xmaMUwiiE4ghnevFB1AQCHP1BbF7dG/pw+MPutWTNnVnZc/A5CANFoDBAaWmQgJUFIAkmCsAPdzATWDKIcUwwo30VGOQCDiEgyDw9H3rPgUJu/u/PEby8cO97R3TB1DWw7AtcMQlEGQhKERRA2QVqhhPfCDv4bBigDGmYIABEikqMCEJEAYHXs0ge62i+tPXjk+/Pz713FidIpECJQPsywLSAtcQNCWrnGEdTNzeBbACyim7/k2wUiFHlir//X4LneFtfd9+Xy5pYHrnKX7PXOQsjQS4tQYpcjEa0J8m+CvGvF0L4JR0ZpJA4wKEc3Idybt+uEdPEX9F0/l1rvet988uSS1Y+XJxKxC86vAYQlUFlWC75alT5/+kImaMPgoMOb4KQwxNdwlJlNb14DI8+CMEeRUOyc0X5sq/3mwgWN62vrE/HTqUOQNqEmXo8zR5z+z3Yc35BJwgGgAPiheCPus88uh4b/UwNhlepQ0TBp3+2/d/CHn9p+bz/TP2fialgyEuRYgEnCAZAB4OYYG6lDA/A4x+tbpWDkG07Q+gB9bI/63OvvOjXgDHy0fMWq6hRdBsNhIZEOAfI5kI1Chnl4W8wLEBJ6RGSyhsO5EoDs3Kd/TCUvrXOcb7/YuHZTHXE3ywgcAOlwfnbNDa9Hen67CGRBFAAV1oWdBQAgzh70T7rXe5pd79OvonbJg5E4hsII5AJ4AHQ+wwUB5IBkw4pwDwsAdOU4UiQGl8xc6r3cK3AtnMPBksK++Qp6I/o/r3H/MroL8C8JiYMXQa6AIwAAAABJRU5ErkJggg==","cid:81897676":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJOgAACToB8GSSSgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAASrSURBVFiF7ZdtaFZlGMd/133O2dgcmunUZDgzzIYvJIH2wU2UtDKKXkCCLIqiDyIWZfhCEYIRCUIgUvYhApMKKoUMDd9ymagzNHTGZNlSp5tz0z17e55zzn1ffXjOo8/WZuqH+SEfuLgOPPc5/9/1v677PhxRVW7nz9xW9TsAtwowZ7X4Ve/4i24bAFcoKb173MZH3h2yY8FSKRx8AGDqhBnpt57/eJ43aszhqqVSOugATh1i1Cx+ZvW0svEVNbNWFE4eVABVR1d4mfOpehY9+kb5tAkz9lSu8J8cNACnjshGpOMOTrcdY/7Dz42a/eBTmyqXFy6/medIfydh1Ur/64pxM+cGnq8igogICCJylXtieUXJsGF3FbV2NeLUouoYM3QCF1uaurfu//zb6oLoFX1f3S0BVK4q2PPmwg/mXOo6h4jBE58siMHINdNS6VbSUReKw6nDOcvw4tH4tij6ZvdnB21rasHeDdp5PQB/oD+6wxSN7acScYMRL8kCJE4IqCqqDtUsRHNHA8XB0OCFx5bM2rL3iyOz35Z5+9bp2YF0BpwBq5bYhkQuQ+ySbDPZTAYrIY4MTrLXlpBYM8Q25HJPMw1Xjsqzc1+aVFY26UDlqoKZNw3gXEzswiyEzYrHZHAS4gixksFKhJMIJyFWQjKuk/boIq1djbR0nuXYhd3Mnvl42eTxD22rXO6/2J/OgC2wGhO5ECMeBoPxPXwEMMk8CKHtpjPTRmfUTjrsxFqLs4qLFRtnZ6vxSh3Tx88fOaxk2PqqlYUV1R9mVt0QQCbupivTjmd8giDAOEirRV1M5Hrose3EGmYXK4gPngi5jaKAi5XQprmQqqe0ZGKh58mUG3NAkY50G80dfyEGvMDg+YLnC8YXjCcYD7zcjlAQp7icuCbhlIpRs4hSfuqnmu+/PLDWLmFNb6l/zYCIeFwdczBGMIasaALh+YIXGPxA8APBC6Q3oC/4vseM8idoOdfe9uuhXe8dWGuXAd51HcgeOHiqWQAREC9X8bXwEhfEZDnVKbndqQoFUszU0fM4WHOo6dSxhsW/b3bViZaKiNW8w6dvCwzgoUhRUELZ8PsxgcH3kyoDk3UhAUnFTaRtJ+queVbij2BicZXu3PPT37W7Wl9u+MXWX30u2CTHAwEkPXSttX8cvySmGBHIgKiIGAMogiDjxo8tHDHSL2rqqcM5AXWMKCyn1E2Jf9ixpfbIVx2vtZ+mLUHLtVT6avU6ikXEAAVAkOT86yA/Xv10+rb7ZhWPaOqpw8WOewqn4pqH9+zYuX1/zcbMsrCLHiACwj45rXrtHdHLAVV1ImITy2xiVX4FCjjAiqDGCL5vuHdIJQ3H21LVP/+4ueaTaH1yX5REnIQFonzxflugqlEyjPmiOeE4uccgqMHngSHzObzvRMtv1bVrjm6KtueJ5SByOa2qcV+9AWZAQxFxuWqT8MkOkAGMgI71prN123fnTlY3vn5yqz3RZ30OIgYyqmr70+r3ddxrQfZcCK5WnsTTH5X9GUXp83W7Ly2s30tznks5iIh+LL8hB/q4YQGb1xYDyKXLFzec2R+uO7Ofnj7i+l+ivQq88234vwf4B6YlTDQudkyaAAAAAElFTkSuQmCC","cid:81897116":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABSlJREFUWIXdl1lsVUUYx/8zc7a7daUroXQhlkpoQ4sVA8b6gilbIEIDggEiEiSRFwzEJ/pCXXjgQR8sAW0I0QQSicZIiC9IsClFFqlC6HorXW/Xe+/p7b3nnpnxobbpJW1pS+uD3+N3vpn/b2b+c853gP9rrNp1WZtNHVlo4ZLDl/YzkC+lhAMUZ+9Uv3MCIHK6eraQ4sXvX9ri0tVvD2wtMt4oyaZPvP1rE1bf93ff/f72dGMWbAcKj1xMNYTSeGh7cbxUFNhcQpE2Lvxwz1Sj4czfvn4vONU4ulAAGicni/LTjYR4Jxo7g2jzjSAzJQ5Ll3iUCDUqphu3IACF7150MUqPvr4mS2/sCkICEEKic3AUhfkZBlXJjkUF0HW6JTXJTVwOHYOmNZHv80eQlRYHSFLyQgCrdlXOeKUkIRtezklVff5ITH7U4vC4dAjO00sOVzvnASDJ8vJPz5ghPZSz+ZNg9uaq/VNOQkmypjMaifKYvC0kKBn3eaI6Z4DsTZ9/mBTvOHZ0TxnbVV7q1hXlfO6mqi3P1nEhvIFg2NbU2Ol0hcIM2yAgPHcI5pwA8rd95iFEnN5UVqS19piQTMHO8lJFEHIpb+OZ1Mm1DLjT1jVsexyxizQ0hkF/CJSSlitXKmK353kAYc4rUpPilbQlcXjQ5MOv9zvgdjuwesVSw1b4yRgAxut7B4KGxgjIpDdLSpyOx20+Swh5dTqdaQEo2I6VKzKNJ0+HwIWEkBJ1j7rx6ppcnVIcTdt4xjVeawmHyYVE1BYTZ+5xqFCpxMOmHoVSXJgzAICSrPREtHX7JxKdfSaYoiIj2UMczJ7kBVuldExY/Gu83FQXrtc2WlLImtvVe5vmBJC5tdIppUh3OjUEQ1bMM29PAMsyl6gScgMAFB+6WECkuOlxaLBsCQkgM8lAR++wbO0cClpW9PgMi5wawBg1VACghMJ65mqFLRuMMUooSwYAytgxl6EWFOSlcv9oFJpCkehScb22kQsujzyoOTg8Z4DWxFxTEvDASBhOI9bZDk1BYCRsQwovADCCbbvfKsS6wizW548gJU5HQ4tPhsJRJcevTWu+GQFwpYJT0BbfoIl4V+xL0O3Q0NfvtyXFnZLD1SrnMlNRGf78O4BwlCMlXofKxhcisucHAEAKcbW1vdfKSHZP5AgBDI2if9g0OHi9orscACAkgS3Geo5AKIqoJSVltPbuud0t8wagjF3wdvUpTo0izjm2C4yOeYJzAS2smLe/2BdglA72Do0gwaki2aMhErFQ+9ArbFvMaL7nArT+dKKJc1FT/0eztTI7GZQQcCEmrpniUFQAICBnb/7eEtaZBOwofrzxyLI5P3Xv/L662QDM2BFlb69MQFRvXlf8UlIUKmnvCWBtfhpu1TXADEUeS0LfznmltCnU3V0jBN9DKIsQKU7Xn9tbNVMfOGsAAMgpr9qpG9p3b64vUhraBpCe5IQ5PMzbO3xsNBL9yvvzxx8AQNmBb4wbNQfDsxGdHM/tB9rcK66GI1Glpb1HZiS70DUwgrycpWx9aQEIJdvG6+YjPiuAZaY3GwA0hSHBrcOKcjxo9kGAQgqZWVJSPeV3fsEAnl470UIJqbVsLobNsY4nagtwPnbE/tRux6ICAIAQ5Hirt0sKbiPJY8Dj1DDoN0FABpuvVQYWHcB77WQdF/JUw1/Nlko44gyK5raOMICzLyIOzOHPaLjpl1vuvFuir3/otW7fAOO2vLw8FP7I670hXhRizpFdVmn856KLFf8AcP0p5DnhnVEAAAAASUVORK5CYII=","cid:81896640":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAAAfCAMAAABUFvrSAAADAFBMVEUBAAAIBgMMCQQLCwsSDgYXEgkaFQoUFBQcHBwlHQ4rIhEwJhM2KxU7Lxc9MBgjIyMoKCg0MzI7OztBNBpOPh5OSz9TQiFeSyVkUChqVCpuWCx1Rzl0XC5+ZDFOTk5ST0tWUk1VVVVcXFxqXUplZWVra2twcHB7e3sAWpwIX58JYJ8OY6ERZaIVaKQaa6Yebaghb6klcqopdawxea82fbE4frI+grRFhrZMi7pVkb1alL9dlsBkm8NoncRtocZ0pcl8qsyWBAOZAACcCASIIBmdNiegDge3PB6mPiqBZzODaDSKbjaOcTiUdjuXeDyaez26QiG/TCaAeWihclPATifBUCjIXy/QbzfWej3Yfj+KgWWjgkGui0WxjUa0gVi3kkm6lEq+mEyjkmuzn2e7pnLFnU7eikXOpFHRp1PVqlXarlfesVjjlUrmm03poFDtqVTitFrmuFzqu13ywWD7xWL+y2WDg4OXl5eYmJippZ61rZisrKy0tLS/v7+Crs6FsNCLtNKQt9SWu9aYvNebvtifwdqjw9uox92ryd6yzeG20OPCwsLMzMzU1NTA1ufG2ujN3+zT4+7d6fL/7Mbn5+fs7Ozl7vXp8fbu9Pj09PTy9/r1+Pv+/v7MzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn4rtgAAAAnnRSTlP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AD6H4/gAAAABYktHRP+lB/LFAAAACXBIWXMAAABIAAAASABGyWs+AAADSUlEQVRIx+2WaU8TURSGzyCLQEUxiFYtCEo8Da3sYglQbDUaluISV6pYFdsyop1Or8ElSgg2RSjgArSZ63/13JkOXRBZgn7yTXpmyzwz857lFhb3XW9/CsEi317f2c71/OnZ/+C9gSdDKmNySI2GorQNxiaDpFA4FgrS+WgoxFhwck/gMTjBwmCJ+WCYMQso5SBUoQCcZKwGgClg2QSOt7jp7pnWGQFJ2e0tpFYX5+k3TUn+QTOsqAV/hRRmJngiYAVrYILAkipT+C34GzqJ+AW7BDiBhga4VgdwIFmdNMBKMcAQI3Ctz1cOCmPD4hEKVBX5TpdYfg/m7bhC0YHrFHvQtbY2h840fw9Hzh8tO7CaSZ6V3k2AdWXBNdaKosGtwG78SLED4xSd+I1rbWK37ii5cO58pirCUglYBXhIjVlywWGQoluBl7CT83VE8nUZ28lu3ZUycUlLZ8CVUrgGnpgeR7JgZrUxHVzh9/tjAuzxbFRFM7nwGbGZ8wF083UHLlPqDuZWxSAZrBSXqmbyGBuBEQNM0sFCUQJf8QiyAXbRp7uwA5fI7iXei9ifotzlgiMy3R+NqKpMRiv6gUwVzfTAlAiLyUJkxVWPUAYcR5fWfCGB7jV00GOciJ0an95T5133GDLAKXTMY1/K3j6HPeJ42YEJvrAX8M0M1+y8LvJhnnejURmc92HvH2aFGtuWa4I/Ido1qgbElH48j235YNkiwbhxc6QKpJN56NiN18bOnQ2uCV5BvCRaEC8aqAS2rBp76bSRPFutCT4No8chkMu95vG+ynIve3KHUAvO6i04w2d7dCu6Fwxy00LGCpsJrixlQbAVfL/35Qb3VN5068M1vQW/UrG5U3EHxrXGH4IrJTfAxluqUMWicCjLva/zvC8Mf72388fmfIeIS61UIU60o2jFxbKGxsMwzQvfuKScyTREcxz2ZOV9XDCPtY/6ZoB+X/udzl6Rw2RDWfV7ngceonFxXIqMgj83eXey3Fe7HfRh0bAlondZQJKgXM2rsrsmd2rXK4j6ZHx8PMAmhM/y2CO1oH7vmdx9X0wfZLj7v0q/8Orcv7D8T039s/8VH7bVu2c718NbJrhuBzq2leo3nTlTX62DfwGZkKiGotSUXQAAAABJRU5ErkJggg==","cid:81896052":"data:image/gif;base64,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"};
         | 
| 1095 1396 |  | 
| 1096 1397 | 
             
              $('img[src]').each(function() {
         | 
| 1097 1398 | 
             
                var image = $(this);
         | 
| 1098 | 
            -
                var  | 
| 1399 | 
            +
                var embed_uri = image.attr('src');
         | 
| 1099 1400 |  | 
| 1100 | 
            -
                if ( | 
| 1101 | 
            -
                  image.attr('src',  | 
| 1401 | 
            +
                if (data_uri_by_embed_uri.hasOwnProperty(embed_uri)) {
         | 
| 1402 | 
            +
                  image.attr('src', data_uri_by_embed_uri[embed_uri]);
         | 
| 1102 1403 | 
             
                }
         | 
| 1103 1404 | 
             
              });
         | 
| 1104 1405 |  | 
| @@ -1108,23 +1409,74 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1108 1409 |  | 
| 1109 1410 | 
             
                if (css) {
         | 
| 1110 1411 | 
             
                  for (var embed_uri in data_uri_by_embed_uri) {
         | 
| 1111 | 
            -
                     | 
| 1112 | 
            -
             | 
| 1412 | 
            +
                    if (data_uri_by_embed_uri.hasOwnProperty(embed_uri)) {
         | 
| 1413 | 
            +
                      var src = new RegExp('\\burl\\(' + embed_uri + '\\)', 'g');
         | 
| 1414 | 
            +
                      var dst = 'url("' + data_uri_by_embed_uri[embed_uri] + '")';
         | 
| 1113 1415 |  | 
| 1114 | 
            -
             | 
| 1416 | 
            +
                      css = css.replace(src, dst);
         | 
| 1417 | 
            +
                    }
         | 
| 1115 1418 | 
             
                  }
         | 
| 1116 1419 |  | 
| 1117 1420 | 
             
                  style.text(css);
         | 
| 1118 1421 | 
             
                }
         | 
| 1119 1422 | 
             
              });
         | 
| 1120 1423 |  | 
| 1121 | 
            -
               | 
| 1122 | 
            -
              //  | 
| 1123 | 
            -
               | 
| 1124 | 
            -
             | 
| 1424 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1425 | 
            +
              // create jQuery UI tabs
         | 
| 1426 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1427 | 
            +
             | 
| 1428 | 
            +
              $('.tabs').tabs();
         | 
| 1429 | 
            +
             | 
| 1430 | 
            +
              // make internal hyperlinks reveal their targets (which may be
         | 
| 1431 | 
            +
              // nested within many levels of jQuery UI tabs) when clicked
         | 
| 1432 | 
            +
              $('a[href^=#]').click(function() {
         | 
| 1433 | 
            +
                var link = $(this);
         | 
| 1434 | 
            +
                var hash = link.attr('href');
         | 
| 1435 | 
            +
             | 
| 1436 | 
            +
                if (link.parent('li').parent('.ui-tabs-nav').length) {
         | 
| 1437 | 
            +
                  // tab clicks should not cause the screen to scroll
         | 
| 1438 | 
            +
                  set_hash(hash, true);
         | 
| 1439 | 
            +
                }
         | 
| 1440 | 
            +
                else {
         | 
| 1441 | 
            +
                  reveal(hash);
         | 
| 1442 | 
            +
                }
         | 
| 1443 | 
            +
             | 
| 1444 | 
            +
                return false;
         | 
| 1445 | 
            +
              });
         | 
| 1446 | 
            +
             | 
| 1447 | 
            +
              // make external hyperlinks open in a separate window
         | 
| 1448 | 
            +
              $('a[href]').not('[href^=#]').attr('target', '_blank');
         | 
| 1449 | 
            +
             | 
| 1450 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1451 | 
            +
              // style jQuery UI icons
         | 
| 1452 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1453 | 
            +
             | 
| 1454 | 
            +
              $('.ui-icon').parent().hover(
         | 
| 1455 | 
            +
                function() { $(this).addClass('ui-state-hover');    },
         | 
| 1456 | 
            +
                function() { $(this).removeClass('ui-state-hover'); }
         | 
| 1457 | 
            +
              );
         | 
| 1458 | 
            +
             | 
| 1459 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1460 | 
            +
              // unveil the document
         | 
| 1461 | 
            +
              //--------------------------------------------------------------------------
         | 
| 1462 | 
            +
             | 
| 1463 | 
            +
              $('#_loading').append("Ready!").
         | 
| 1125 1464 | 
             
              fadeOut('slow', function() {
         | 
| 1126 | 
            -
                $( | 
| 1127 | 
            -
             | 
| 1465 | 
            +
                $(this).remove();
         | 
| 1466 | 
            +
             | 
| 1467 | 
            +
                $('#_body').show();
         | 
| 1468 | 
            +
             | 
| 1469 | 
            +
                // respond to changes in window location
         | 
| 1470 | 
            +
                (function on_hash_change() {
         | 
| 1471 | 
            +
                  var current_hash = window.location.hash;
         | 
| 1472 | 
            +
             | 
| 1473 | 
            +
                  if (current_hash && current_hash !== $last_hash) {
         | 
| 1474 | 
            +
                    $last_hash = current_hash;
         | 
| 1475 | 
            +
                    reveal(current_hash);
         | 
| 1476 | 
            +
                  }
         | 
| 1477 | 
            +
             | 
| 1478 | 
            +
                  setTimeout(on_hash_change, 300);
         | 
| 1479 | 
            +
                })();
         | 
| 1128 1480 | 
             
              });
         | 
| 1129 1481 | 
             
            });
         | 
| 1130 1482 |  | 
| @@ -1132,20 +1484,17 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1132 1484 | 
             
                </script>
         | 
| 1133 1485 | 
             
              </head>
         | 
| 1134 1486 | 
             
              <body>
         | 
| 1487 | 
            +
                <div id="_loading"></div>
         | 
| 1135 1488 |  | 
| 1136 | 
            -
                <div id=" | 
| 1137 | 
            -
                  Loading... <noscript><ins>Failed!</ins> <p>Please enable JavaScript in your Web browser.</p> <div style="display: none"><br/><hr/><br/></div></noscript>
         | 
| 1138 | 
            -
                </div>
         | 
| 1139 | 
            -
             | 
| 1140 | 
            -
                <div id="__body__">
         | 
| 1489 | 
            +
                <div id="_body">
         | 
| 1141 1490 |  | 
| 1142 1491 |  | 
| 1143 | 
            -
                  <div id=" | 
| 1492 | 
            +
                  <div id="_header">
         | 
| 1144 1493 |  | 
| 1145 1494 |  | 
| 1146 1495 |  | 
| 1147 1496 | 
             
                    <div class="title_and_subtitle">
         | 
| 1148 | 
            -
                    <h1 class="title">Dfect | 
| 1497 | 
            +
                    <h1 class="title">Dfect</h1>
         | 
| 1149 1498 |  | 
| 1150 1499 | 
             
                    <h2 class="subtitle">Assertion testing library for Ruby</h2>
         | 
| 1151 1500 | 
             
                    </div>
         | 
| @@ -1153,7 +1502,7 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1153 1502 | 
             
                    <div class="authors_and_date">
         | 
| 1154 1503 | 
             
                    <h3 class="authors"><a href="mailto:sunaku@gmail.com">Suraj N. Kurapati</a></h3>
         | 
| 1155 1504 |  | 
| 1156 | 
            -
                    <h3 class="date"> | 
| 1505 | 
            +
                    <h3 class="date">21 March 2010</h3>
         | 
| 1157 1506 | 
             
                    </div>
         | 
| 1158 1507 |  | 
| 1159 1508 |  | 
| @@ -1164,27 +1513,27 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1164 1513 | 
             
                  <div class="tabs">
         | 
| 1165 1514 | 
             
                    <ul>
         | 
| 1166 1515 |  | 
| 1167 | 
            -
                      <li><a href="# | 
| 1516 | 
            +
                      <li><a href="#_document">Document</a></li>
         | 
| 1168 1517 |  | 
| 1169 | 
            -
                      <li><a href="# | 
| 1518 | 
            +
                      <li><a href="#_contents">Contents</a></li>
         | 
| 1170 1519 |  | 
| 1171 1520 |  | 
| 1172 | 
            -
                      <li><a href="# | 
| 1521 | 
            +
                      <li><a href="#_about">About</a></li>
         | 
| 1173 1522 | 
             
                    </ul>
         | 
| 1174 1523 |  | 
| 1175 1524 |  | 
| 1176 1525 |  | 
| 1177 | 
            -
                    <div id=" | 
| 1526 | 
            +
                    <div id="_contents">
         | 
| 1178 1527 | 
             
                      <h1 class="title">Contents</h1>
         | 
| 1179 | 
            -
                      <ul><li>1  <a id=" | 
| 1528 | 
            +
                      <ul><li>1  <a id="_contents-Welcome" href="#Welcome">Welcome</a><ul><li>1.1  <a id="_contents-Features" href="#Features">Features</a></li><li>1.2  <a id="_contents-Etymology" href="#Etymology">Etymology</a></li><li>1.3  <a id="_contents-License" href="#License">License</a></li><li>1.4  <a id="_contents-Credits" href="#Credits">Credits</a></li><li>1.5  <a id="_contents-Related-works" href="#Related-works">Related works</a></li></ul></li><li>2  <a id="_contents-Setup" href="#Setup">Setup</a><ul><li>2.1  <a id="_contents-Prerequisites" href="#Prerequisites">Prerequisites</a></li><li>2.2  <a id="_contents-Installing" href="#Installing">Installing</a></li><li>2.3  <a id="_contents-Upgrading" href="#Upgrading">Upgrading</a></li><li>2.4  <a id="_contents-Uninstalling" href="#Uninstalling">Uninstalling</a></li></ul></li><li>3  <a id="_contents-Usage" href="#Usage">Usage</a><ul><li>3.1  <a id="_contents-Assertions" href="#Assertions">Assertions</a><ul><li>3.1.1  <a id="_contents-Negation" href="#Negation">Negation</a></li><li>3.1.2  <a id="_contents-Sampling" href="#Sampling">Sampling</a></li><li>3.1.3  <a id="_contents-Failures" href="#Failures">Failures</a></li><li>3.1.4  <a id="_contents-Emulation" href="#Emulation">Emulation</a></li></ul></li><li>3.2  <a id="_contents-Tests" href="#Tests">Tests</a><ul><li>3.2.1  <a id="_contents-Execution" href="#Execution">Execution</a><ul><li>3.2.1.1  <a id="_contents-Hooks" href="#Hooks">Hooks</a></li><li>3.2.1.2  <a id="_contents-Logging" href="#Logging">Logging</a></li></ul></li><li>3.2.2  <a id="_contents-Sharing" href="#Sharing">Sharing</a></li><li>3.2.3  <a id="_contents-Insulation" href="#Insulation">Insulation</a></li></ul></li></ul></li><li>4  <a id="_contents-History" href="#History">History</a><ul><li>4.1  <a id="_contents-Version-2-0-0-2010-03-21" href="#Version-2-0-0-2010-03-21">Version 2.0.0 (2010-03-21)</a></li><li>4.2  <a id="_contents-Version-1-1-0-2009-10-27" href="#Version-1-1-0-2009-10-27">Version 1.1.0 (2009-10-27)</a></li><li>4.3  <a id="_contents-Version-1-0-1-2009-10-07" href="#Version-1-0-1-2009-10-07">Version 1.0.1 (2009-10-07)</a></li><li>4.4  <a id="_contents-Version-1-0-0-2009-05-03" href="#Version-1-0-0-2009-05-03">Version 1.0.0 (2009-05-03)</a></li><li>4.5  <a id="_contents-Version-0-1-0-2009-04-28" href="#Version-0-1-0-2009-04-28">Version 0.1.0 (2009-04-28)</a></li><li>4.6  <a id="_contents-Version-0-0-0-2009-04-13" href="#Version-0-0-0-2009-04-13">Version 0.0.0 (2009-04-13)</a></li></ul></li></ul>
         | 
| 1180 1529 |  | 
| 1181 | 
            -
                    <div id=" | 
| 1530 | 
            +
                    <div id="_floats"><div id="__command__"><h2 class="title">Commands</h2> <ol><li><a id="_contents-gem-install-dfect" href="#gem-install-dfect"><tt>gem install dfect</tt></a></li><li><a id="_contents-gem-update-dfect" href="#gem-update-dfect"><tt>gem update dfect</tt></a></li><li><a id="_contents-gem-uninstall-dfect" href="#gem-uninstall-dfect"><tt>gem uninstall dfect</tt></a></li></ol></div><div id="__example__"><h2 class="title">Examples</h2> <ol><li><a id="_contents-Logging-information-in-the-execution-report" href="#Logging-information-in-the-execution-report">Logging information in the execution report</a></li><li><a id="_contents-Sharing-code-between-tests" href="#Sharing-code-between-tests">Sharing code between tests</a></li><li><a id="_contents-Insulated-and-uninsulated-tests" href="#Insulated-and-uninsulated-tests">Insulated and uninsulated tests</a></li></ol></div></div>
         | 
| 1182 1531 | 
             
                    </div>
         | 
| 1183 1532 |  | 
| 1184 | 
            -
                    <div id=" | 
| 1533 | 
            +
                    <div id="_document" class="tabs">
         | 
| 1185 1534 | 
             
                      <h1 style="display: none">Document</h1>
         | 
| 1186 1535 | 
             
                      <ul>
         | 
| 1187 | 
            -
                        <li><a href="# | 
| 1536 | 
            +
                        <li><a href="#Welcome">Welcome</a></li>
         | 
| 1188 1537 | 
             
                        <li><a href="#Setup">Setup</a></li>
         | 
| 1189 1538 | 
             
                        <li><a href="#Usage">Usage</a></li>
         | 
| 1190 1539 | 
             
                        <li><a href="#History">History</a></li>
         | 
| @@ -1192,85 +1541,84 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1192 1541 |  | 
| 1193 1542 |  | 
| 1194 1543 |  | 
| 1195 | 
            -
             | 
| 1196 | 
            -
             | 
| 1197 | 
            -
             | 
| 1198 | 
            -
             | 
| 1199 | 
            -
             | 
| 1200 | 
            -
            <div class="chapter" id="Introduction">
         | 
| 1201 | 
            -
              <a name="Introduction"/><div class="nav"><a title="Focus this segment" href="#Introduction"><img alt="Focus this segment" src="84728322" class="icon"/></a>  <a title="Focus next segment" href="#Features"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Introduction"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1544 | 
            +
            <div class="part" id="Welcome">
         | 
| 1545 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Welcome"/><div class="nav"><a title="Here" href="#Welcome"><img alt="[Here]" src="cid:81898502" class="icon"/></a>  <a title="Next" href="#Features"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Welcome"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1202 1546 | 
             
              <h1 class="title">
         | 
| 1203 | 
            -
                 | 
| 1547 | 
            +
                Part 1
         | 
| 1204 1548 | 
             
                <br/>
         | 
| 1205 | 
            -
                <big> | 
| 1549 | 
            +
                <big>Welcome</big>
         | 
| 1206 1550 | 
             
              </h1>
         | 
| 1207 1551 | 
             
              <div class="content"><p>Dfect is an assertion testing library for Ruby that emphasizes a simple assertion vocabulary, instant debuggability of failures, and flexibility in composing tests.</p>
         | 
| 1208 1552 |  | 
| 1209 | 
            -
            <ul>
         | 
| 1210 | 
            -
            <li><a class="xref" href="#History" title="Chapter 4. "History"">What’s new?</a> — history of project releases.</li>
         | 
| 1211 | 
            -
             | 
| 1212 | 
            -
            <li><a href='http://github.com/sunaku/dfect'>Source code</a> — obtain via <a href='http://git-scm.com'>Git</a> or browse online.</li>
         | 
| 1213 | 
            -
             | 
| 1214 | 
            -
            <li><a href='./api/index.html'>API reference</a> — documentation for source code.</li>
         | 
| 1215 | 
            -
             | 
| 1216 | 
            -
            <li><a href='http://snk.tuxfamily.org/lib/dfect/'>Project home</a> — the Dfect project home page.</li>
         | 
| 1217 | 
            -
            </ul>
         | 
| 1218 | 
            -
             | 
| 1219 | 
            -
            <p>To get help or provide feedback, simply <a class="xref" href="#License" title="Section 1.4. "License"">contact the author(s)</a>.</p>
         | 
| 1220 | 
            -
             | 
| 1221 | 
            -
            <div class="tabs"><ul><li><a href="#Features">Features</a></li><li><a href="#Motivation">Motivation</a></li><li><a href="#Etymology">Etymology</a></li><li><a href="#License">License</a></li><li><a href="#Credits">Credits</a></li><li><a href="#Related-works">Related works</a></li></ul>
         | 
| 1222 | 
            -
            <div class="section" id="Features">
         | 
| 1223 | 
            -
              <a name="Features"/><div class="nav"><a title="Focus this segment" href="#Features"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Introduction"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Motivation"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Features"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1224 | 
            -
              <h1 class="title">
         | 
| 1225 | 
            -
                1.1  Features
         | 
| 1226 | 
            -
              </h1>
         | 
| 1227 | 
            -
              <div class="content"><p>Dfect is exciting because:</p>
         | 
| 1228 1553 |  | 
| 1229 | 
            -
            < | 
| 1230 | 
            -
            < | 
| 1554 | 
            +
            <div class="paragraph" id="Resources">
         | 
| 1555 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Resources"/><div class="nav"><a title="Here" href="#Resources"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 1556 | 
            +
              <p class="title">Resources</p>
         | 
| 1557 | 
            +
              <div class="content"><ul>
         | 
| 1558 | 
            +
            <li>
         | 
| 1559 | 
            +
            <p><a class="xref" href="#History" title="Part 4. "History"">What’s new?</a> — release notes and project history.</p>
         | 
| 1560 | 
            +
            </li>
         | 
| 1231 1561 |  | 
| 1232 | 
            -
            <li> | 
| 1562 | 
            +
            <li>
         | 
| 1563 | 
            +
            <p><a href='http://github.com/sunaku/dfect/issues'>Issue tracker</a> — report bugs, request features, or ask for help.</p>
         | 
| 1564 | 
            +
            </li>
         | 
| 1233 1565 |  | 
| 1234 | 
            -
            <li> | 
| 1566 | 
            +
            <li>
         | 
| 1567 | 
            +
            <p><a href='http://github.com/sunaku/dfect'>Source code</a> — browse online or obtain using <a href='http://git-scm.com'>Git</a></p>
         | 
| 1568 | 
            +
            </li>
         | 
| 1235 1569 |  | 
| 1236 | 
            -
            <li> | 
| 1570 | 
            +
            <li>
         | 
| 1571 | 
            +
            <p><a href='api/index.html'>API reference</a> — documentation for source code.</p>
         | 
| 1572 | 
            +
            </li>
         | 
| 1237 1573 |  | 
| 1238 | 
            -
            <li> | 
| 1574 | 
            +
            <li>
         | 
| 1575 | 
            +
            <p><a href='http://snk.tuxfamily.org/lib/dfect/'>Project home</a> — the official project home page.</p>
         | 
| 1576 | 
            +
            </li>
         | 
| 1239 1577 | 
             
            </ul></div>
         | 
| 1240 1578 | 
             
            </div>
         | 
| 1241 1579 |  | 
| 1242 1580 |  | 
| 1243 | 
            -
             | 
| 1244 | 
            -
            <div class="section" id=" | 
| 1245 | 
            -
              <a name=" | 
| 1581 | 
            +
            <div style="display: none"><br/><hr/><br/></div><div class="tabs"><ul><li><a href="#Features"><span class="section_number">1.1  </span>Features</a></li><li><a href="#Etymology"><span class="section_number">1.2  </span>Etymology</a></li><li><a href="#License"><span class="section_number">1.3  </span>License</a></li><li><a href="#Credits"><span class="section_number">1.4  </span>Credits</a></li><li><a href="#Related-works"><span class="section_number">1.5  </span>Related works</a></li></ul>
         | 
| 1582 | 
            +
            <div class="section" id="Features">
         | 
| 1583 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Features"/><div class="nav"><a title="Here" href="#Features"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Welcome"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Etymology"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Features"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1246 1584 | 
             
              <h1 class="title">
         | 
| 1247 | 
            -
                1. | 
| 1585 | 
            +
                <span class="section_number">1.1  </span>Features
         | 
| 1248 1586 | 
             
              </h1>
         | 
| 1249 | 
            -
              <div class="content"><p> | 
| 1250 | 
            -
             | 
| 1251 | 
            -
            <p>Other testing libraries do not fulfill this need. Instead, they simply report each failed assertion along with a stack trace (if I am lucky) and abruptly terminate my program.</p>
         | 
| 1587 | 
            +
              <div class="content"><p>Dfect is exciting because:</p>
         | 
| 1252 1588 |  | 
| 1253 | 
            -
            < | 
| 1589 | 
            +
            <ul>
         | 
| 1590 | 
            +
            <li>
         | 
| 1591 | 
            +
            <p>There are only 5 methods to remember: D F E C T.</p>
         | 
| 1592 | 
            +
            </li>
         | 
| 1254 1593 |  | 
| 1255 | 
            -
            < | 
| 1594 | 
            +
            <li>
         | 
| 1595 | 
            +
            <p>It lets you debug assertion failures interactively.</p>
         | 
| 1596 | 
            +
            </li>
         | 
| 1256 1597 |  | 
| 1257 | 
            -
            < | 
| 1598 | 
            +
            <li>
         | 
| 1599 | 
            +
            <p>It keeps a detailed report of assertion failures.</p>
         | 
| 1600 | 
            +
            </li>
         | 
| 1258 1601 |  | 
| 1259 | 
            -
            < | 
| 1602 | 
            +
            <li>
         | 
| 1603 | 
            +
            <p>It lets you nest tests and execution hooks.</p>
         | 
| 1604 | 
            +
            </li>
         | 
| 1260 1605 |  | 
| 1261 | 
            -
            < | 
| 1606 | 
            +
            <li>
         | 
| 1607 | 
            +
            <p>Its core consists of a mere 378 lines of code.</p>
         | 
| 1608 | 
            +
            </li>
         | 
| 1609 | 
            +
            </ul></div>
         | 
| 1262 1610 | 
             
            </div>
         | 
| 1263 1611 |  | 
| 1264 1612 |  | 
| 1265 1613 |  | 
| 1266 1614 | 
             
            <div class="section" id="Etymology">
         | 
| 1267 | 
            -
              <a name="Etymology"/><div class="nav"><a title=" | 
| 1615 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Etymology"/><div class="nav"><a title="Here" href="#Etymology"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Features"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#License"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Etymology"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1268 1616 | 
             
              <h1 class="title">
         | 
| 1269 | 
            -
                1. | 
| 1617 | 
            +
                <span class="section_number">1.2  </span>Etymology
         | 
| 1270 1618 | 
             
              </h1>
         | 
| 1271 1619 | 
             
              <div class="content"><p>Dfect is named after the D F E C T methods it provides.</p>
         | 
| 1272 1620 |  | 
| 1273 | 
            -
            <p>The name is also play on the word “defect”, whereby the intentional misspelling of “defect” as “dfect” is a defect in itself!  | 
| 1621 | 
            +
            <p>The name is also play on the word “defect”, whereby the intentional misspelling of “defect” as “dfect” is a defect in itself! ;-)</p>
         | 
| 1274 1622 |  | 
| 1275 1623 | 
             
            <p>This wordplay is similar to <a href='http://www.erlang.org/doc/apps/mnesia/index.html'>Mnesia</a>’s play on the word “amnesia”, whereby the intentional omission of the letter “A” indicates forgetfulness—the key characteristic of having amnesia. Clever!</p></div>
         | 
| 1276 1624 | 
             
            </div>
         | 
| @@ -1278,9 +1626,9 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1278 1626 |  | 
| 1279 1627 |  | 
| 1280 1628 | 
             
            <div class="section" id="License">
         | 
| 1281 | 
            -
              <a name="License"/><div class="nav"><a title=" | 
| 1629 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="License"/><div class="nav"><a title="Here" href="#License"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Etymology"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Credits"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-License"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1282 1630 | 
             
              <h1 class="title">
         | 
| 1283 | 
            -
                1. | 
| 1631 | 
            +
                <span class="section_number">1.3  </span>License
         | 
| 1284 1632 | 
             
              </h1>
         | 
| 1285 1633 | 
             
              <div class="content"><p>(the ISC license)</p>
         | 
| 1286 1634 |  | 
| @@ -1294,25 +1642,25 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1294 1642 |  | 
| 1295 1643 |  | 
| 1296 1644 | 
             
            <div class="section" id="Credits">
         | 
| 1297 | 
            -
              <a name="Credits"/><div class="nav"><a title=" | 
| 1645 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Credits"/><div class="nav"><a title="Here" href="#Credits"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#License"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Related-works"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Credits"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1298 1646 | 
             
              <h1 class="title">
         | 
| 1299 | 
            -
                1. | 
| 1647 | 
            +
                <span class="section_number">1.4  </span>Credits
         | 
| 1300 1648 | 
             
              </h1>
         | 
| 1301 | 
            -
              <div class="content"><p>Dfect is made possible by <a class="xref" href="#History" title=" | 
| 1649 | 
            +
              <div class="content"><p>Dfect is made possible by <a class="xref" href="#History" title="Part 4. "History"">contributions</a> from users like you:</p>
         | 
| 1302 1650 |  | 
| 1303 1651 | 
             
            <ul>
         | 
| 1304 | 
            -
            <li | 
| 1652 | 
            +
            <li>François Beausoleil <a href='http://github.com/francois'>http://github.com/francois</a></li>
         | 
| 1305 1653 |  | 
| 1306 | 
            -
            <li | 
| 1654 | 
            +
            <li>Iñaki Baz Castillo <a href='http://github.com/ibc'>http://github.com/ibc</a></li>
         | 
| 1307 1655 | 
             
            </ul></div>
         | 
| 1308 1656 | 
             
            </div>
         | 
| 1309 1657 |  | 
| 1310 1658 |  | 
| 1311 1659 |  | 
| 1312 1660 | 
             
            <div class="section" id="Related-works">
         | 
| 1313 | 
            -
              <a name="Related-works"/><div class="nav"><a title=" | 
| 1661 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Related-works"/><div class="nav"><a title="Here" href="#Related-works"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Credits"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Setup"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Related-works"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1314 1662 | 
             
              <h1 class="title">
         | 
| 1315 | 
            -
                1. | 
| 1663 | 
            +
                <span class="section_number">1.5  </span>Related works
         | 
| 1316 1664 | 
             
              </h1>
         | 
| 1317 1665 | 
             
              <div class="content"><ul>
         | 
| 1318 1666 | 
             
            <li><a href='http://assert2.rubyforge.org'>assert{ 2.0 }</a></li>
         | 
| @@ -1329,7 +1677,7 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1329 1677 |  | 
| 1330 1678 | 
             
            <li><a href='http://test-spec.rubyforge.org/test-spec'>test-spec</a></li>
         | 
| 1331 1679 |  | 
| 1332 | 
            -
            <li><a href='http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/ | 
| 1680 | 
            +
            <li><a href='http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/'>Test::Unit</a></li>
         | 
| 1333 1681 |  | 
| 1334 1682 | 
             
            <li><a href='http://github.com/ahoward/testy/tree/master'>Testy</a></li>
         | 
| 1335 1683 |  | 
| @@ -1340,62 +1688,82 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1340 1688 | 
             
            </div>
         | 
| 1341 1689 |  | 
| 1342 1690 |  | 
| 1343 | 
            -
             | 
| 1344 | 
            -
             | 
| 1345 | 
            -
            <div class="chapter" id="Setup">
         | 
| 1346 | 
            -
              <a name="Setup"/><div class="nav"><a title="Focus this segment" href="#Setup"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Related-works"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Requirements"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Setup"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1691 | 
            +
            <div class="part" id="Setup">
         | 
| 1692 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Setup"/><div class="nav"><a title="Here" href="#Setup"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Related-works"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Prerequisites"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Setup"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1347 1693 | 
             
              <h1 class="title">
         | 
| 1348 | 
            -
                 | 
| 1694 | 
            +
                Part 2
         | 
| 1349 1695 | 
             
                <br/>
         | 
| 1350 1696 | 
             
                <big>Setup</big>
         | 
| 1351 1697 | 
             
              </h1>
         | 
| 1352 | 
            -
              <div class="content"><div class="tabs"><ul><li><a href="# | 
| 1353 | 
            -
            <div class="section" id=" | 
| 1354 | 
            -
              <a name=" | 
| 1698 | 
            +
              <div class="content"><div style="display: none"><br/><hr/><br/></div><div class="tabs"><ul><li><a href="#Prerequisites"><span class="section_number">2.1  </span>Prerequisites</a></li><li><a href="#Installing"><span class="section_number">2.2  </span>Installing</a></li><li><a href="#Upgrading"><span class="section_number">2.3  </span>Upgrading</a></li><li><a href="#Uninstalling"><span class="section_number">2.4  </span>Uninstalling</a></li></ul>
         | 
| 1699 | 
            +
            <div class="section" id="Prerequisites">
         | 
| 1700 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Prerequisites"/><div class="nav"><a title="Here" href="#Prerequisites"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Setup"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Installing"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Prerequisites"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1355 1701 | 
             
              <h1 class="title">
         | 
| 1356 | 
            -
                2.1   | 
| 1702 | 
            +
                <span class="section_number">2.1  </span>Prerequisites
         | 
| 1357 1703 | 
             
              </h1>
         | 
| 1358 | 
            -
              <div class="content">< | 
| 1704 | 
            +
              <div class="content"><ul>
         | 
| 1705 | 
            +
            <li>
         | 
| 1706 | 
            +
            <p><a href='http://ruby-lang.org'>Ruby</a> 1.8.6 or newer.</p>
         | 
| 1707 | 
            +
            </li>
         | 
| 1359 1708 |  | 
| 1360 | 
            -
            < | 
| 1709 | 
            +
            <li>
         | 
| 1710 | 
            +
            <p><a href='http://rubygems.org'>RubyGems</a> 1.3.6 or newer.</p>
         | 
| 1711 | 
            +
            </li>
         | 
| 1712 | 
            +
             | 
| 1713 | 
            +
            <li>
         | 
| 1714 | 
            +
            <p><a href='http://www.datanoise.com/ruby-debug'>ruby-debug</a> will be used if it is available. Otherwise the standard interactive Ruby shell (IRB) will be used instead.</p>
         | 
| 1715 | 
            +
            </li>
         | 
| 1716 | 
            +
            </ul></div>
         | 
| 1361 1717 | 
             
            </div>
         | 
| 1362 1718 |  | 
| 1363 | 
            -
            <div class="section" id="Installation">
         | 
| 1364 | 
            -
              <a name="Installation"/><div class="nav"><a title="Focus this segment" href="#Installation"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Requirements"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-numbers"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Installation"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1365 | 
            -
              <h1 class="title">
         | 
| 1366 | 
            -
                2.2  Installation
         | 
| 1367 | 
            -
              </h1>
         | 
| 1368 | 
            -
              <div class="content"><p>You can install Dfect by running this command:</p>
         | 
| 1369 1719 |  | 
| 1370 | 
            -
            <pre>gem install dfect</pre>
         | 
| 1371 1720 |  | 
| 1372 | 
            -
            < | 
| 1373 | 
            -
             | 
| 1374 | 
            -
            < | 
| 1721 | 
            +
            <div class="section" id="Installing">
         | 
| 1722 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Installing"/><div class="nav"><a title="Here" href="#Installing"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Prerequisites"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#gem-install-dfect"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Installing"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1723 | 
            +
              <h1 class="title">
         | 
| 1724 | 
            +
                <span class="section_number">2.2  </span>Installing
         | 
| 1725 | 
            +
              </h1>
         | 
| 1726 | 
            +
              <div class="content">
         | 
| 1727 | 
            +
            <div class="_float ui-tabs ui-widget ui-widget-content ui-corner-all command" id="gem-install-dfect">
         | 
| 1728 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="gem-install-dfect"/><div class="nav"><a title="Here" href="#gem-install-dfect"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Installing"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Upgrading"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-gem-install-dfect"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1729 | 
            +
              <p class="title ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"><span class="section_number">Command 1.  </span><tt>gem install dfect</tt></p>
         | 
| 1730 | 
            +
            </div>
         | 
| 1731 | 
            +
            </div>
         | 
| 1375 1732 | 
             
            </div>
         | 
| 1376 1733 |  | 
| 1377 | 
            -
             | 
| 1378 | 
            -
             | 
| 1379 | 
            -
            <div class="section" id="Version-numbers">
         | 
| 1380 | 
            -
              <a name="Version-numbers"/><div class="nav"><a title="Focus this segment" href="#Version-numbers"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Installation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Usage"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Version-numbers"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1734 | 
            +
            <div class="section" id="Upgrading">
         | 
| 1735 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Upgrading"/><div class="nav"><a title="Here" href="#Upgrading"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#gem-install-dfect"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#gem-update-dfect"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Upgrading"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1381 1736 | 
             
              <h1 class="title">
         | 
| 1382 | 
            -
                2.3   | 
| 1737 | 
            +
                <span class="section_number">2.3  </span>Upgrading
         | 
| 1383 1738 | 
             
              </h1>
         | 
| 1384 | 
            -
              <div class="content" | 
| 1739 | 
            +
              <div class="content">
         | 
| 1740 | 
            +
            <div class="_float ui-tabs ui-widget ui-widget-content ui-corner-all command" id="gem-update-dfect">
         | 
| 1741 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="gem-update-dfect"/><div class="nav"><a title="Here" href="#gem-update-dfect"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Upgrading"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Uninstalling"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-gem-update-dfect"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1742 | 
            +
              <p class="title ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"><span class="section_number">Command 2.  </span><tt>gem update dfect</tt></p>
         | 
| 1743 | 
            +
            </div>
         | 
| 1744 | 
            +
            </div>
         | 
| 1745 | 
            +
            </div>
         | 
| 1385 1746 |  | 
| 1386 | 
            -
            < | 
| 1747 | 
            +
            <div class="section" id="Uninstalling">
         | 
| 1748 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Uninstalling"/><div class="nav"><a title="Here" href="#Uninstalling"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#gem-update-dfect"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#gem-uninstall-dfect"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Uninstalling"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1749 | 
            +
              <h1 class="title">
         | 
| 1750 | 
            +
                <span class="section_number">2.4  </span>Uninstalling
         | 
| 1751 | 
            +
              </h1>
         | 
| 1752 | 
            +
              <div class="content">
         | 
| 1753 | 
            +
            <div class="_float ui-tabs ui-widget ui-widget-content ui-corner-all command" id="gem-uninstall-dfect">
         | 
| 1754 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="gem-uninstall-dfect"/><div class="nav"><a title="Here" href="#gem-uninstall-dfect"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Uninstalling"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Usage"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-gem-uninstall-dfect"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1755 | 
            +
              <p class="title ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"><span class="section_number">Command 3.  </span><tt>gem uninstall dfect</tt></p>
         | 
| 1756 | 
            +
            </div>
         | 
| 1757 | 
            +
            </div>
         | 
| 1387 1758 | 
             
            </div>
         | 
| 1388 1759 | 
             
            </div></div>
         | 
| 1389 1760 | 
             
            </div>
         | 
| 1390 1761 |  | 
| 1391 1762 |  | 
| 1392 | 
            -
             | 
| 1393 | 
            -
             | 
| 1394 | 
            -
             | 
| 1395 | 
            -
            <div class="chapter" id="Usage">
         | 
| 1396 | 
            -
              <a name="Usage"/><div class="nav"><a title="Focus this segment" href="#Usage"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Version-numbers"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Assertions"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Usage"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1763 | 
            +
            <div class="part" id="Usage">
         | 
| 1764 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Usage"/><div class="nav"><a title="Here" href="#Usage"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#gem-uninstall-dfect"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Assertions"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Usage"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1397 1765 | 
             
              <h1 class="title">
         | 
| 1398 | 
            -
                 | 
| 1766 | 
            +
                Part 3
         | 
| 1399 1767 | 
             
                <br/>
         | 
| 1400 1768 | 
             
                <big>Usage</big>
         | 
| 1401 1769 | 
             
              </h1>
         | 
| @@ -1403,7 +1771,7 @@ jQuery.effects||(function(d){d.effects={version:"1.7.2",save:function(g,h){for(v | |
| 1403 1771 |  | 
| 1404 1772 | 
             
            <ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span> <span style="color:#888"># only necessary if you are using Ruby 1.8</span>
         | 
| 1405 1773 | 
             
            require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect</span><span style="color:#710">'</span></span>
         | 
| 1406 | 
            -
            </pre></ins><p> You now have access to the < | 
| 1774 | 
            +
            </pre></ins><p> You now have access to the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span></code> module, which provides methods that can be either mixed-in or called directly, according to your preference:</p>
         | 
| 1407 1775 |  | 
| 1408 1776 | 
             
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.<span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">hello</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>  <span style="color:#888"># D() is a class method</span>
         | 
| 1409 1777 | 
             
              puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">world</span><span style="color:#710">"</span></span>
         | 
| @@ -1416,39 +1784,43 @@ include <span style="color:#036;font-weight:bold">Dfect</span>       <span style | |
| 1416 1784 | 
             
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">hello</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>        <span style="color:#888"># D() is an instance method</span>
         | 
| 1417 1785 | 
             
              puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">world</span><span style="color:#710">"</span></span>
         | 
| 1418 1786 | 
             
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1419 | 
            -
            </pre></ins | 
| 1787 | 
            +
            </pre></ins>
         | 
| 1420 1788 |  | 
| 1421 | 
            -
            <div  | 
| 1789 | 
            +
            <div style="display: none"><br/><hr/><br/></div><div class="tabs"><ul><li><a href="#Assertions"><span class="section_number">3.1  </span>Assertions</a></li><li><a href="#Tests"><span class="section_number">3.2  </span>Tests</a></li></ul>
         | 
| 1422 1790 | 
             
            <div class="section" id="Assertions">
         | 
| 1423 | 
            -
              <a name="Assertions"/><div class="nav"><a title=" | 
| 1791 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Assertions"/><div class="nav"><a title="Here" href="#Assertions"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Usage"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Negation"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Assertions"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1424 1792 | 
             
              <h1 class="title">
         | 
| 1425 | 
            -
                3.1   | 
| 1793 | 
            +
                <span class="section_number">3.1  </span>Assertions
         | 
| 1426 1794 | 
             
              </h1>
         | 
| 1427 | 
            -
              <div class="content"><p>The following methods accept a block parameter and assert something about the result of executing that block. They also accept an optional message, which is shown in <a class="xref" href="#Failures" title="Section 3.1. | 
| 1795 | 
            +
              <div class="content"><p>The following methods accept a block parameter and assert something about the result of executing that block. They also accept an optional message, which is shown in <a class="xref" href="#Failures" title="Section 3.1.3. "Failures"">failure reports</a> if they fail.</p>
         | 
| 1428 1796 |  | 
| 1429 | 
            -
            <p>See the <a href=' | 
| 1797 | 
            +
            <p>See the <a href='api/index.html'>API reference</a> for more details and examples.</p>
         | 
| 1430 1798 |  | 
| 1431 | 
            -
            <ins><table border="1"><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td>T</td><td>assert true (not <code class="line"><span style="color:#038;font-weight:bold">nil</span></code> and not <code class="line"><span style="color:#038;font-weight:bold">false</span></code>)</td></tr><tr><td>F</td><td>assert not true (<code class="line"><span style="color:#038;font-weight:bold">nil</span></code> or <code class="line"><span style="color:#038;font-weight:bold">false</span></code>)</td></tr><tr><td>E</td><td>assert that an execption is raised</td></tr><tr><td>C</td><td>assert that a symbol is thrown</td></tr></tbody></table></ins><div class="tabs"><ul><li><a href="#Negation">Negation</a></li><li><a href="#Sampling">Sampling</a></li><li><a href="#Failures">Failures</a></li></ul>
         | 
| 1432 | 
            -
            <div class=" | 
| 1433 | 
            -
              <a name="Negation"/><div class="nav"><a title=" | 
| 1434 | 
            -
              < | 
| 1799 | 
            +
            <ins><table border="1"><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td>T</td><td>assert true (not <code class="line"><span style="color:#038;font-weight:bold">nil</span></code> and not <code class="line"><span style="color:#038;font-weight:bold">false</span></code>)</td></tr><tr><td>F</td><td>assert not true (<code class="line"><span style="color:#038;font-weight:bold">nil</span></code> or <code class="line"><span style="color:#038;font-weight:bold">false</span></code>)</td></tr><tr><td>E</td><td>assert that an execption is raised</td></tr><tr><td>C</td><td>assert that a symbol is thrown</td></tr></tbody></table></ins><div style="display: none"><br/><hr/><br/></div><div class="tabs"><ul><li><a href="#Negation"><span class="section_number">3.1.1  </span>Negation</a></li><li><a href="#Sampling"><span class="section_number">3.1.2  </span>Sampling</a></li><li><a href="#Failures"><span class="section_number">3.1.3  </span>Failures</a></li><li><a href="#Emulation"><span class="section_number">3.1.4  </span>Emulation</a></li></ul>
         | 
| 1800 | 
            +
            <div class="section" id="Negation">
         | 
| 1801 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Negation"/><div class="nav"><a title="Here" href="#Negation"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Assertions"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Sampling"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Negation"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1802 | 
            +
              <h1 class="title">
         | 
| 1803 | 
            +
                <span class="section_number">3.1.1  </span>Negation
         | 
| 1804 | 
            +
              </h1>
         | 
| 1435 1805 | 
             
              <div class="content"><p>These methods are the <em>opposite</em> of <a class="xref" href="#Assertions" title="Section 3.1. "Assertions"">normal assertions</a>.</p>
         | 
| 1436 1806 |  | 
| 1437 1807 | 
             
            <ins><table border="1"><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td>T!</td><td>same as F</td></tr><tr><td>F!</td><td>same as T</td></tr><tr><td>E!</td><td>assert that an exception is <em>not</em> raised</td></tr><tr><td>C!</td><td>assert that a symbol is <em>not</em> thrown</td></tr></tbody></table></ins></div>
         | 
| 1438 1808 | 
             
            </div>
         | 
| 1439 1809 |  | 
| 1440 | 
            -
            <div class=" | 
| 1441 | 
            -
              <a name="Sampling"/><div class="nav"><a title=" | 
| 1442 | 
            -
              < | 
| 1443 | 
            -
             | 
| 1810 | 
            +
            <div class="section" id="Sampling">
         | 
| 1811 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Sampling"/><div class="nav"><a title="Here" href="#Sampling"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Negation"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Failures"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Sampling"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1812 | 
            +
              <h1 class="title">
         | 
| 1813 | 
            +
                <span class="section_number">3.1.2  </span>Sampling
         | 
| 1814 | 
            +
              </h1>
         | 
| 1815 | 
            +
              <div class="content"><p>These methods allow you to <em>check the outcome</em> of an assertion without recording a success or failure for that assertion in the execution report.</p>
         | 
| 1444 1816 |  | 
| 1445 1817 | 
             
            <ins><table border="1"><thead><tr><th>Method</th><th>Description</th></tr></thead><tbody><tr><td>T?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if T passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr><tr><td>F?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if F passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr><tr><td>E?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if E passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr><tr><td>C?</td><td>returns <code class="line"><span style="color:#038;font-weight:bold">true</span></code> if C passes; <code class="line"><span style="color:#038;font-weight:bold">false</span></code> otherwise</td></tr></tbody></table></ins></div>
         | 
| 1446 1818 | 
             
            </div>
         | 
| 1447 1819 |  | 
| 1448 1820 | 
             
            <div class="section" id="Failures">
         | 
| 1449 | 
            -
              <a name="Failures"/><div class="nav"><a title=" | 
| 1821 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Failures"/><div class="nav"><a title="Here" href="#Failures"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Sampling"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Emulation"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Failures"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1450 1822 | 
             
              <h1 class="title">
         | 
| 1451 | 
            -
                3.1. | 
| 1823 | 
            +
                <span class="section_number">3.1.3  </span>Failures
         | 
| 1452 1824 | 
             
              </h1>
         | 
| 1453 1825 | 
             
              <div class="content"><p>When an assertion fails, details about the failure will be shown:</p>
         | 
| 1454 1826 |  | 
| @@ -1473,21 +1845,39 @@ include <span style="color:#036;font-weight:bold">Dfect</span>       <span style | |
| 1473 1845 | 
             
              - test/simple.rb:17
         | 
| 1474 1846 | 
             
              - test/simple.rb:3</pre>
         | 
| 1475 1847 |  | 
| 1476 | 
            -
            <p>You will then be placed into a debugger to investigate the failure if the <code class="line"><span style="color:#A60">:debug</span></code> option is enabled in < | 
| 1848 | 
            +
            <p>You will then be placed into a debugger to investigate the failure if the <code class="line"><span style="color:#A60">:debug</span></code> option is enabled in the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>.options</code> hash.</p>
         | 
| 1477 1849 |  | 
| 1478 | 
            -
            <p>Details about all assertion failures and a trace of all tests executed are stored by Dfect and provided by the < | 
| 1850 | 
            +
            <p>Details about all assertion failures and a trace of all tests executed are stored by Dfect and provided by the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>.report()</code> method.</p></div>
         | 
| 1851 | 
            +
            </div>
         | 
| 1852 | 
            +
             | 
| 1853 | 
            +
             | 
| 1854 | 
            +
             | 
| 1855 | 
            +
            <div class="section" id="Emulation">
         | 
| 1856 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Emulation"/><div class="nav"><a title="Here" href="#Emulation"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Failures"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Tests"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Emulation"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1857 | 
            +
              <h1 class="title">
         | 
| 1858 | 
            +
                <span class="section_number">3.1.4  </span>Emulation
         | 
| 1859 | 
            +
              </h1>
         | 
| 1860 | 
            +
              <div class="content"><p>Dfect provides emulation layers for several popular testing libraries:</p>
         | 
| 1861 | 
            +
             | 
| 1862 | 
            +
            <ul>
         | 
| 1863 | 
            +
            <li><tt>dfect/unit</tt> — Test::Unit</li>
         | 
| 1864 | 
            +
             | 
| 1865 | 
            +
            <li><tt>dfect/mini</tt> — Minitest</li>
         | 
| 1866 | 
            +
             | 
| 1867 | 
            +
            <li><tt>dfect/spec</tt> — RSpec</li>
         | 
| 1868 | 
            +
            </ul>
         | 
| 1869 | 
            +
             | 
| 1870 | 
            +
            <p>Simply <code class="line">require()</code> one of these emulation layers into your test suite and you can write your tests using the familiar syntax of that testing library. See <a href='http://github.com/sunaku/dfect/tree/master/lib/dfect/'>their source code</a> for more details.</p></div>
         | 
| 1479 1871 | 
             
            </div>
         | 
| 1480 1872 | 
             
            </div></div>
         | 
| 1481 1873 | 
             
            </div>
         | 
| 1482 1874 |  | 
| 1483 1875 | 
             
            <div class="section" id="Tests">
         | 
| 1484 | 
            -
              <a name="Tests"/><div class="nav"><a title=" | 
| 1876 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Tests"/><div class="nav"><a title="Here" href="#Tests"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Emulation"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Execution"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Tests"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1485 1877 | 
             
              <h1 class="title">
         | 
| 1486 | 
            -
                3.2   | 
| 1878 | 
            +
                <span class="section_number">3.2  </span>Tests
         | 
| 1487 1879 | 
             
              </h1>
         | 
| 1488 | 
            -
              <div class="content"><p>The < | 
| 1489 | 
            -
             | 
| 1490 | 
            -
            <p>A test may also contain nested tests.</p>
         | 
| 1880 | 
            +
              <div class="content"><p>The <code class="line">D()</code> method defines a new Dfect <strong>test</strong>, which is analagous to the concept of <strong>test case</strong> in xUnit or <strong>describe</strong> in rSpec. A test may contain nested tests.</p>
         | 
| 1491 1881 |  | 
| 1492 1882 | 
             
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">outer test</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1493 1883 | 
             
              <span style="color:#888"># assertions and logic here</span>
         | 
| @@ -1498,13 +1888,44 @@ include <span style="color:#036;font-weight:bold">Dfect</span>       <span style | |
| 1498 1888 | 
             
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1499 1889 | 
             
            </pre></ins>
         | 
| 1500 1890 |  | 
| 1501 | 
            -
            <div class="tabs"><ul><li><a href="# | 
| 1891 | 
            +
            <div style="display: none"><br/><hr/><br/></div><div class="tabs"><ul><li><a href="#Execution"><span class="section_number">3.2.1  </span>Execution</a></li><li><a href="#Sharing"><span class="section_number">3.2.2  </span>Sharing</a></li><li><a href="#Insulation"><span class="section_number">3.2.3  </span>Insulation</a></li></ul>
         | 
| 1892 | 
            +
            <div class="section" id="Execution">
         | 
| 1893 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Execution"/><div class="nav"><a title="Here" href="#Execution"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Tests"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Hooks"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Execution"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1894 | 
            +
              <h1 class="title">
         | 
| 1895 | 
            +
                <span class="section_number">3.2.1  </span>Execution
         | 
| 1896 | 
            +
              </h1>
         | 
| 1897 | 
            +
              <div class="content"><p>Tests are executed in depth-first order.</p>
         | 
| 1898 | 
            +
             | 
| 1899 | 
            +
            <p>You can configure the test execution process using:</p>
         | 
| 1900 | 
            +
             | 
| 1901 | 
            +
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.options = your_options_hash
         | 
| 1902 | 
            +
            </pre></ins><p> You can execute all tests defined thus far using:</p>
         | 
| 1903 | 
            +
             | 
| 1904 | 
            +
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.run
         | 
| 1905 | 
            +
            </pre></ins><p> You can stop the execution at any time using:</p>
         | 
| 1906 | 
            +
             | 
| 1907 | 
            +
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.stop
         | 
| 1908 | 
            +
            </pre></ins><p> You can view the results of execution using:</p>
         | 
| 1909 | 
            +
             | 
| 1910 | 
            +
            <ins><pre lang="ruby" class="para">puts <span style="color:#036;font-weight:bold">Dfect</span>.report.to_yaml
         | 
| 1911 | 
            +
            </pre></ins><p> See the <a href='api/index.html'>API reference</a> for details and examples.</p>
         | 
| 1912 | 
            +
             | 
| 1913 | 
            +
             | 
| 1914 | 
            +
            <div class="paragraph" id="Automatic-test-execution">
         | 
| 1915 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Automatic-test-execution"/><div class="nav"><a title="Here" href="#Automatic-test-execution"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 1916 | 
            +
              <p class="title">Automatic test execution</p>
         | 
| 1917 | 
            +
              <div class="content"><p>To mix-in the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span></code> module into your program and execute all tests defined by your program before it terminates, simply add the following line at the top of your program:</p>
         | 
| 1918 | 
            +
             | 
| 1919 | 
            +
            <ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span>
         | 
| 1920 | 
            +
            </pre></ins></div>
         | 
| 1921 | 
            +
            </div>
         | 
| 1922 | 
            +
            <div style="display: none"><br/><hr/><br/></div><div class="tabs"><ul><li><a href="#Hooks"><span class="section_number">3.2.1.1  </span>Hooks</a></li><li><a href="#Logging"><span class="section_number">3.2.1.2  </span>Logging</a></li></ul>
         | 
| 1502 1923 | 
             
            <div class="section" id="Hooks">
         | 
| 1503 | 
            -
              <a name="Hooks"/><div class="nav"><a title=" | 
| 1924 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Hooks"/><div class="nav"><a title="Here" href="#Hooks"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Execution"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Logging"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Hooks"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1504 1925 | 
             
              <h1 class="title">
         | 
| 1505 | 
            -
                3.2.1   | 
| 1926 | 
            +
                <span class="section_number">3.2.1.1  </span>Hooks
         | 
| 1506 1927 | 
             
              </h1>
         | 
| 1507 | 
            -
              <div class="content"><p>The < | 
| 1928 | 
            +
              <div class="content"><p>The <code class="line">D()</code> method provides several entry points (hooks) into the test execution process:</p>
         | 
| 1508 1929 |  | 
| 1509 1930 | 
             
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">outer test</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1510 1931 | 
             
              <span style="color:#036;font-weight:bold">D</span> .<  { puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">before each nested test</span><span style="color:#710">"</span></span> }
         | 
| @@ -1523,441 +1944,353 @@ include <span style="color:#036;font-weight:bold">Dfect</span>       <span style | |
| 1523 1944 | 
             
            </pre></ins></div>
         | 
| 1524 1945 | 
             
            </div>
         | 
| 1525 1946 |  | 
| 1526 | 
            -
            <div class="section" id=" | 
| 1527 | 
            -
              <a name=" | 
| 1947 | 
            +
            <div class="section" id="Logging">
         | 
| 1948 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Logging"/><div class="nav"><a title="Here" href="#Logging"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Hooks"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Logging-information-in-the-execution-report"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Logging"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1528 1949 | 
             
              <h1 class="title">
         | 
| 1529 | 
            -
                3.2.2   | 
| 1950 | 
            +
                <span class="section_number">3.2.1.2  </span>Logging
         | 
| 1530 1951 | 
             
              </h1>
         | 
| 1531 | 
            -
              <div class="content"><p> | 
| 1952 | 
            +
              <div class="content"><p>The <code class="line">L()</code> method lets you insert log messages, composed of arbitrary Ruby objects, into the test execution report.</p>
         | 
| 1532 1953 |  | 
| 1533 | 
            -
            <ins><pre lang="ruby" class="para"><span style="color:#080;font-weight:bold">class</span> << <span style="color:#B06;font-weight:bold">Object</span>.new
         | 
| 1534 | 
            -
              <span style="color:#888"># your test logic here</span>
         | 
| 1535 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1536 | 
            -
            </pre></ins><p> Inside this insulated environment, you are free to:</p>
         | 
| 1537 1954 |  | 
| 1538 | 
            -
            < | 
| 1539 | 
            -
            < | 
| 1955 | 
            +
            <div class="_float ui-tabs ui-widget ui-widget-content ui-corner-all example" id="Logging-information-in-the-execution-report">
         | 
| 1956 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Logging-information-in-the-execution-report"/><div class="nav"><a title="Here" href="#Logging-information-in-the-execution-report"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Logging"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Sharing"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Logging-information-in-the-execution-report"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1957 | 
            +
              <p class="title ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"><span class="section_number">Example 1.  </span>Logging information in the execution report</p>
         | 
| 1958 | 
            +
              <div class="content"><p>When the following test is run:</p>
         | 
| 1540 1959 |  | 
| 1541 | 
            -
            < | 
| 1542 | 
            -
            </ul>
         | 
| 1543 | 
            -
             | 
| 1544 | 
            -
            <p>For example:</p>
         | 
| 1545 | 
            -
             | 
| 1546 | 
            -
            <ins><pre lang="ruby" class="para"><span style="color:#080;font-weight:bold">class</span> << <span style="color:#B06;font-weight:bold">Object</span>.new
         | 
| 1547 | 
            -
              include <span style="color:#036;font-weight:bold">SomeModule</span>
         | 
| 1548 | 
            -
              extend <span style="color:#036;font-weight:bold">AnotherModule</span>
         | 
| 1549 | 
            -
             | 
| 1550 | 
            -
              <span style="color:#036;font-weight:bold">YOUR_CONSTANT</span> = <span style="color:#00D;font-weight:bold">123</span>
         | 
| 1551 | 
            -
             | 
| 1552 | 
            -
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">your tests here</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1553 | 
            -
                <span style="color:#888"># your test logic here</span>
         | 
| 1554 | 
            -
             | 
| 1555 | 
            -
                your_helper_method
         | 
| 1556 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1960 | 
            +
            <ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span>
         | 
| 1557 1961 |  | 
| 1558 | 
            -
             | 
| 1559 | 
            -
             | 
| 1560 | 
            -
             | 
| 1561 | 
            -
                helper = <span style="color:#036;font-weight:bold">YourHelperClass</span>.new
         | 
| 1562 | 
            -
                helper.do_something_helpful
         | 
| 1962 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Wizard</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1963 | 
            +
              <span style="color:#036;font-weight:bold">L</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Preparing spell to defeat mortal foes...</span><span style="color:#710">'</span></span>
         | 
| 1964 | 
            +
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1563 1965 |  | 
| 1564 | 
            -
             | 
| 1565 | 
            -
              <span style="color:# | 
| 1966 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Magician</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1967 | 
            +
              <span style="color:#036;font-weight:bold">L</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Preparing rabbits to pull from hat...</span><span style="color:#710">'</span></span>, rand(<span style="color:#00D;font-weight:bold">15</span>)
         | 
| 1968 | 
            +
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1566 1969 |  | 
| 1567 | 
            -
             | 
| 1568 | 
            -
             | 
| 1569 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1970 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Calculator</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1971 | 
            +
              <span style="color:#036;font-weight:bold">L</span> <span style="color:#036;font-weight:bold">Math</span>::<span style="color:#036;font-weight:bold">PI</span>, [<span style="color:#00D;font-weight:bold">1</span>, <span style="color:#00D;font-weight:bold">2</span>, <span style="color:#00D;font-weight:bold">3</span>, [<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">a</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">b</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">c</span><span style="color:#710">'</span></span>]], {<span style="color:#A60">:foo</span> => <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">bar!</span><span style="color:#710">'</span></span>}
         | 
| 1570 1972 | 
             
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1571 | 
            -
            </pre></ins | 
| 1973 | 
            +
            </pre></ins><p> Dfect will output the following:</p>
         | 
| 1974 | 
            +
             | 
| 1975 | 
            +
            <pre>--- 
         | 
| 1976 | 
            +
            - Wizard: 
         | 
| 1977 | 
            +
              - Preparing spell to defeat mortal foes...
         | 
| 1978 | 
            +
            - Magician: 
         | 
| 1979 | 
            +
              - Preparing rabbits to pull from hat...
         | 
| 1980 | 
            +
              - 9
         | 
| 1981 | 
            +
            - Calculator: 
         | 
| 1982 | 
            +
              - 3.14159265358979
         | 
| 1983 | 
            +
              - - 1
         | 
| 1984 | 
            +
                - 2
         | 
| 1985 | 
            +
                - 3
         | 
| 1986 | 
            +
                - - a
         | 
| 1987 | 
            +
                  - b
         | 
| 1988 | 
            +
                  - c
         | 
| 1989 | 
            +
              - foo: bar!
         | 
| 1990 | 
            +
            --- 
         | 
| 1991 | 
            +
            time: 0.000196246</pre></div>
         | 
| 1572 1992 | 
             
            </div>
         | 
| 1573 | 
            -
            </div></div>
         | 
| 1574 1993 | 
             
            </div>
         | 
| 1575 | 
            -
             | 
| 1576 | 
            -
            <div class="section" id="Execution">
         | 
| 1577 | 
            -
              <a name="Execution"/><div class="nav"><a title="Focus this segment" href="#Execution"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Insulation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Automatic-test-execution"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Execution"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1578 | 
            -
              <h1 class="title">
         | 
| 1579 | 
            -
                3.3  Execution
         | 
| 1580 | 
            -
              </h1>
         | 
| 1581 | 
            -
              <div class="content"><p>You can configure test execution using:</p>
         | 
| 1582 | 
            -
             | 
| 1583 | 
            -
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.options = your_options_hash
         | 
| 1584 | 
            -
            </pre></ins><p> You can execute all tests defined thus far using:</p>
         | 
| 1585 | 
            -
             | 
| 1586 | 
            -
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.run
         | 
| 1587 | 
            -
            </pre></ins><p> You can stop this execution at any time using:</p>
         | 
| 1588 | 
            -
             | 
| 1589 | 
            -
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">Dfect</span>.stop
         | 
| 1590 | 
            -
            </pre></ins><p> You can view the results of execution using:</p>
         | 
| 1591 | 
            -
             | 
| 1592 | 
            -
            <ins><pre lang="ruby" class="para">puts <span style="color:#036;font-weight:bold">Dfect</span>.report.to_yaml
         | 
| 1593 | 
            -
            </pre></ins><p> See the <a href='./api/index.html'>API documentation</a> for details and examples.</p>
         | 
| 1594 | 
            -
             | 
| 1595 | 
            -
            <div class="tabs"><ul><li><a href="#Automatic-test-execution">Automatic test execution</a></li></ul>
         | 
| 1596 | 
            -
            <div class="section" id="Automatic-test-execution">
         | 
| 1597 | 
            -
              <a name="Automatic-test-execution"/><div class="nav"><a title="Focus this segment" href="#Automatic-test-execution"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Execution"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Reporting"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__Automatic-test-execution"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1598 | 
            -
              <h1 class="title">
         | 
| 1599 | 
            -
                3.3.1  Automatic test execution
         | 
| 1600 | 
            -
              </h1>
         | 
| 1601 | 
            -
              <div class="content"><ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span>     <span style="color:#888"># only necessary if you are using Ruby 1.8</span>
         | 
| 1602 | 
            -
            require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span>   <span style="color:#888"># <== notice the "auto"</span>
         | 
| 1603 | 
            -
            </pre></ins> The above code will mix-in the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span></code> module into your program and will execute all tests defined by your program before it terminates.</div>
         | 
| 1604 1994 | 
             
            </div>
         | 
| 1605 1995 | 
             
            </div></div>
         | 
| 1606 1996 | 
             
            </div>
         | 
| 1607 1997 |  | 
| 1608 | 
            -
            <div class="section" id=" | 
| 1609 | 
            -
              <a name=" | 
| 1998 | 
            +
            <div class="section" id="Sharing">
         | 
| 1999 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Sharing"/><div class="nav"><a title="Here" href="#Sharing"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Logging-information-in-the-execution-report"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Sharing-code-between-tests"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Sharing"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1610 2000 | 
             
              <h1 class="title">
         | 
| 1611 | 
            -
                3. | 
| 2001 | 
            +
                <span class="section_number">3.2.2  </span>Sharing
         | 
| 1612 2002 | 
             
              </h1>
         | 
| 1613 | 
            -
              <div class="content"><p> | 
| 2003 | 
            +
              <div class="content"><p>The <code class="line">S()</code> method is a mechanism for sharing code. When called with a block, it shares the given block (under a given identifier) for injection into other tests. When called without a block, it injects a previously shared block (under a given identifier) into the environment where it is called.</p>
         | 
| 1614 2004 |  | 
| 1615 | 
            -
            <p> | 
| 1616 | 
            -
            </div>
         | 
| 2005 | 
            +
            <p>The <code class="line">S!()</code> method is a combination of the two uses of the <code class="line">S()</code> method: it lets you simultaneously share a block of code while injecting it into the environment where that method is called.</p>
         | 
| 1617 2006 |  | 
| 2007 | 
            +
            <p>The <code class="line">S?()</code> method simply checks whether any code has been shared under a given identifier.</p>
         | 
| 1618 2008 |  | 
| 1619 2009 |  | 
| 1620 | 
            -
            <div class=" | 
| 1621 | 
            -
              <a name=" | 
| 1622 | 
            -
              < | 
| 1623 | 
            -
             | 
| 1624 | 
            -
              </h1>
         | 
| 1625 | 
            -
              <div class="content"><p>Dfect provides emulation layers for several popular testing libraries:</p>
         | 
| 2010 | 
            +
            <div class="_float ui-tabs ui-widget ui-widget-content ui-corner-all example" id="Sharing-code-between-tests">
         | 
| 2011 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Sharing-code-between-tests"/><div class="nav"><a title="Here" href="#Sharing-code-between-tests"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Sharing"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Insulation"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Sharing-code-between-tests"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2012 | 
            +
              <p class="title ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"><span class="section_number">Example 2.  </span>Sharing code between tests</p>
         | 
| 2013 | 
            +
              <div class="content"><p>When the following test is run:</p>
         | 
| 1626 2014 |  | 
| 1627 | 
            -
            < | 
| 1628 | 
            -
            <li><tt>dfect/unit</tt> — Test::Unit</li>
         | 
| 2015 | 
            +
            <ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span>
         | 
| 1629 2016 |  | 
| 1630 | 
            -
            < | 
| 2017 | 
            +
            <span style="color:#036;font-weight:bold">S</span> <span style="color:#A60">:knowledge</span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2018 | 
            +
              <span style="color:#036;font-weight:bold">L</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Knowledge is power!</span><span style="color:#710">'</span></span>
         | 
| 2019 | 
            +
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1631 2020 |  | 
| 1632 | 
            -
            < | 
| 1633 | 
            -
            </ | 
| 2021 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Healer</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2022 | 
            +
              <span style="color:#036;font-weight:bold">S</span> <span style="color:#A60">:knowledge</span>
         | 
| 2023 | 
            +
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1634 2024 |  | 
| 1635 | 
            -
            < | 
| 2025 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Warrior</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2026 | 
            +
              S! <span style="color:#A60">:strength</span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2027 | 
            +
                <span style="color:#036;font-weight:bold">L</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Strength is power!</span><span style="color:#710">'</span></span>
         | 
| 2028 | 
            +
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 2029 | 
            +
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 2030 | 
            +
             | 
| 2031 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Wizard</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2032 | 
            +
              <span style="color:#036;font-weight:bold">S</span> <span style="color:#A60">:knowledge</span>
         | 
| 2033 | 
            +
              <span style="color:#036;font-weight:bold">S</span> <span style="color:#A60">:strength</span>
         | 
| 2034 | 
            +
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1636 2035 |  | 
| 1637 | 
            -
            < | 
| 2036 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">King</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2037 | 
            +
              <span style="color:#036;font-weight:bold">T</span> { S? <span style="color:#A60">:knowledge</span> }
         | 
| 2038 | 
            +
              <span style="color:#036;font-weight:bold">T</span> { S? <span style="color:#A60">:strength</span> }
         | 
| 2039 | 
            +
              <span style="color:#036;font-weight:bold">F</span> { S? <span style="color:#A60">:power</span> }
         | 
| 2040 | 
            +
              <span style="color:#036;font-weight:bold">L</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Power is power!</span><span style="color:#710">'</span></span>
         | 
| 2041 | 
            +
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 2042 | 
            +
            </pre></ins><p> Dfect will output the following:</p>
         | 
| 2043 | 
            +
             | 
| 2044 | 
            +
            <pre>--- 
         | 
| 2045 | 
            +
            - Healer: 
         | 
| 2046 | 
            +
              - Knowledge is power!
         | 
| 2047 | 
            +
            - Warrior: 
         | 
| 2048 | 
            +
              - Strength is power!
         | 
| 2049 | 
            +
            - Wizard: 
         | 
| 2050 | 
            +
              - Knowledge is power!
         | 
| 2051 | 
            +
              - Strength is power!
         | 
| 2052 | 
            +
            - King: 
         | 
| 2053 | 
            +
              - Power is power!
         | 
| 2054 | 
            +
            --- 
         | 
| 2055 | 
            +
            pass: 3
         | 
| 2056 | 
            +
            time: 0.00045127</pre></div>
         | 
| 2057 | 
            +
            </div>
         | 
| 1638 2058 | 
             
            </div>
         | 
| 1639 2059 | 
             
            </div>
         | 
| 1640 2060 |  | 
| 2061 | 
            +
            <div class="section" id="Insulation">
         | 
| 2062 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Insulation"/><div class="nav"><a title="Here" href="#Insulation"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Sharing-code-between-tests"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Insulated-and-uninsulated-tests"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Insulation"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2063 | 
            +
              <h1 class="title">
         | 
| 2064 | 
            +
                <span class="section_number">3.2.3  </span>Insulation
         | 
| 2065 | 
            +
              </h1>
         | 
| 2066 | 
            +
              <div class="content"><p>The <code class="line">D!()</code> method defines a new test that is explicitly insulated from the tests that contain it and also from the top-level Ruby environment. Root-level calls to the <code class="line">D()</code> method are insulated by default.</p>
         | 
| 1641 2067 |  | 
| 1642 | 
            -
            < | 
| 1643 | 
            -
              <a name="A-sample-unit-test"/><div class="nav"><a title="Focus this segment" href="#A-sample-unit-test"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#Emulation"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#History"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__A-sample-unit-test"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1644 | 
            -
              <p class="title">Example 1.  A sample unit test</p>
         | 
| 1645 | 
            -
              <div class="content"><p>The following code is from Dfect’s very own test suite.</p>
         | 
| 1646 | 
            -
             | 
| 1647 | 
            -
            <ins><pre lang="ruby" class="para"><span style="color:#888">#--</span>
         | 
| 1648 | 
            -
            <span style="color:#888"># Copyright protects this work.</span>
         | 
| 1649 | 
            -
            <span style="color:#888"># See LICENSE file for details.</span>
         | 
| 1650 | 
            -
            <span style="color:#888">#++</span>
         | 
| 1651 | 
            -
             | 
| 1652 | 
            -
            require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span>
         | 
| 2068 | 
            +
            <p>Inside an insulated test, you are free to:</p>
         | 
| 1653 2069 |  | 
| 1654 | 
            -
            < | 
| 1655 | 
            -
             | 
| 1656 | 
            -
              <span style="color:#036;font-weight:bold">T</span> { !<span style="color:#038;font-weight:bold">false</span> }
         | 
| 1657 | 
            -
              <span style="color:#036;font-weight:bold">T</span> { !<span style="color:#038;font-weight:bold">nil</span>   }
         | 
| 2070 | 
            +
            <ul>
         | 
| 2071 | 
            +
            <li>mix-in any modules your test logic needs</li>
         | 
| 1658 2072 |  | 
| 1659 | 
            -
             | 
| 1660 | 
            -
             | 
| 2073 | 
            +
            <li>define your own constants, methods, and classes</li>
         | 
| 2074 | 
            +
            </ul>
         | 
| 1661 2075 |  | 
| 1662 | 
            -
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">must return block value</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1663 | 
            -
                inner = rand()
         | 
| 1664 | 
            -
                outer = <span style="color:#036;font-weight:bold">T</span> { inner }
         | 
| 1665 2076 |  | 
| 1666 | 
            -
             | 
| 1667 | 
            -
              < | 
| 1668 | 
            -
            < | 
| 2077 | 
            +
            <div class="_float ui-tabs ui-widget ui-widget-content ui-corner-all example" id="Insulated-and-uninsulated-tests">
         | 
| 2078 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Insulated-and-uninsulated-tests"/><div class="nav"><a title="Here" href="#Insulated-and-uninsulated-tests"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Insulation"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#History"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Insulated-and-uninsulated-tests"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2079 | 
            +
              <p class="title ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"><span class="section_number">Example 3.  </span>Insulated and uninsulated tests</p>
         | 
| 2080 | 
            +
              <div class="content"><p>When the following test is run:</p>
         | 
| 1669 2081 |  | 
| 1670 | 
            -
            < | 
| 1671 | 
            -
              T! { !<span style="color:#038;font-weight:bold">true</span> }
         | 
| 1672 | 
            -
              T! { <span style="color:#038;font-weight:bold">false</span> }
         | 
| 1673 | 
            -
              T! { <span style="color:#038;font-weight:bold">nil</span>   }
         | 
| 2082 | 
            +
            <ins><pre lang="ruby" class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">dfect/auto</span><span style="color:#710">'</span></span>
         | 
| 1674 2083 |  | 
| 1675 | 
            -
             | 
| 1676 | 
            -
             | 
| 1677 | 
            -
             | 
| 2084 | 
            +
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">a root-level test</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2085 | 
            +
              <span style="color:#33B">@outside</span> = <span style="color:#00D;font-weight:bold">1</span>
         | 
| 2086 | 
            +
              <span style="color:#036;font-weight:bold">T</span> { <span style="color:#080;font-weight:bold">defined?</span> <span style="color:#33B">@outside</span> }
         | 
| 2087 | 
            +
              <span style="color:#036;font-weight:bold">T</span> { <span style="color:#33B">@outside</span> == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1678 2088 |  | 
| 1679 | 
            -
             | 
| 2089 | 
            +
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">an inner, non-insulated test</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2090 | 
            +
                <span style="color:#036;font-weight:bold">T</span> { <span style="color:#080;font-weight:bold">defined?</span> <span style="color:#33B">@outside</span> }
         | 
| 2091 | 
            +
                <span style="color:#036;font-weight:bold">T</span> { <span style="color:#33B">@outside</span> == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1680 2092 | 
             
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1681 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1682 | 
            -
             | 
| 1683 | 
            -
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">T?()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1684 | 
            -
              <span style="color:#036;font-weight:bold">T</span> { T? { <span style="color:#038;font-weight:bold">true</span>  } }
         | 
| 1685 | 
            -
              <span style="color:#036;font-weight:bold">F</span> { T? { <span style="color:#038;font-weight:bold">false</span> } }
         | 
| 1686 | 
            -
              <span style="color:#036;font-weight:bold">F</span> { T? { <span style="color:#038;font-weight:bold">nil</span>   } }
         | 
| 1687 2093 |  | 
| 1688 | 
            -
               | 
| 1689 | 
            -
                 | 
| 1690 | 
            -
                 | 
| 2094 | 
            +
              D! <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">an inner, insulated test</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2095 | 
            +
                <span style="color:#036;font-weight:bold">F</span> { <span style="color:#080;font-weight:bold">defined?</span> <span style="color:#33B">@outside</span> }
         | 
| 2096 | 
            +
                <span style="color:#036;font-weight:bold">F</span> { <span style="color:#33B">@outside</span> == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1691 2097 |  | 
| 1692 | 
            -
                <span style="color:# | 
| 1693 | 
            -
                <span style="color:#036;font-weight:bold">T</span> {  | 
| 2098 | 
            +
                <span style="color:#33B">@inside</span> = <span style="color:#00D;font-weight:bold">2</span>
         | 
| 2099 | 
            +
                <span style="color:#036;font-weight:bold">T</span> { <span style="color:#080;font-weight:bold">defined?</span> <span style="color:#33B">@inside</span> }
         | 
| 2100 | 
            +
                <span style="color:#036;font-weight:bold">T</span> { <span style="color:#33B">@inside</span> == <span style="color:#00D;font-weight:bold">2</span> }
         | 
| 1694 2101 | 
             
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1695 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1696 | 
            -
             | 
| 1697 | 
            -
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">F() must be same as T!()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1698 | 
            -
              <span style="color:#036;font-weight:bold">T</span> { <span style="color:#036;font-weight:bold">D</span>.method(<span style="color:#A60">:F</span>) == <span style="color:#036;font-weight:bold">D</span>.method(<span style="color:#A60">:T!</span>) }
         | 
| 1699 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1700 2102 |  | 
| 1701 | 
            -
            <span style="color:#036;font-weight:bold"> | 
| 1702 | 
            -
              <span style="color:#036;font-weight:bold"> | 
| 2103 | 
            +
              <span style="color:#036;font-weight:bold">F</span> { <span style="color:#080;font-weight:bold">defined?</span> <span style="color:#33B">@inside</span> }
         | 
| 2104 | 
            +
              <span style="color:#036;font-weight:bold">F</span> { <span style="color:#33B">@inside</span> == <span style="color:#00D;font-weight:bold">2</span> }
         | 
| 1703 2105 | 
             
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 2106 | 
            +
            </pre></ins><p> Dfect will output the following:</p>
         | 
| 1704 2107 |  | 
| 1705 | 
            -
            < | 
| 1706 | 
            -
             | 
| 1707 | 
            -
               | 
| 1708 | 
            -
              <span style="color:#036;font-weight:bold">F</span> { T? { <span style="color:#038;font-weight:bold">nil</span>   } }
         | 
| 1709 | 
            -
             | 
| 1710 | 
            -
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">must not return block value</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1711 | 
            -
                inner = rand()
         | 
| 1712 | 
            -
                outer = F? { inner }
         | 
| 1713 | 
            -
             | 
| 1714 | 
            -
                <span style="color:#036;font-weight:bold">F</span> { outer == inner }
         | 
| 1715 | 
            -
                <span style="color:#036;font-weight:bold">T</span> { outer == <span style="color:#038;font-weight:bold">false</span> }
         | 
| 1716 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1717 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 2108 | 
            +
            <pre>--- 
         | 
| 2109 | 
            +
            - a root-level test: 
         | 
| 2110 | 
            +
              - an inner, non-insulated test: []
         | 
| 1718 2111 |  | 
| 1719 | 
            -
             | 
| 1720 | 
            -
              E(<span style="color:#036;font-weight:bold">SyntaxError</span>) { raise <span style="color:#036;font-weight:bold">SyntaxError</span> }
         | 
| 2112 | 
            +
              - an inner, insulated test: []
         | 
| 1721 2113 |  | 
| 1722 | 
            -
             | 
| 1723 | 
            -
             | 
| 1724 | 
            -
             | 
| 1725 | 
            -
             | 
| 1726 | 
            -
             | 
| 1727 | 
            -
             | 
| 1728 | 
            -
             | 
| 1729 | 
            -
             | 
| 1730 | 
            -
             | 
| 1731 | 
            -
             | 
| 1732 | 
            -
                <span style="color:#036;font-weight:bold">E</span> { raise }
         | 
| 1733 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1734 | 
            -
             | 
| 1735 | 
            -
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">does not default to StandardError when kinds are specified</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1736 | 
            -
                <span style="color:#036;font-weight:bold">F</span> { E?(<span style="color:#036;font-weight:bold">SyntaxError</span>) { raise } }
         | 
| 1737 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 2114 | 
            +
            --- 
         | 
| 2115 | 
            +
            pass: 10
         | 
| 2116 | 
            +
            time: 0.000505745</pre></div>
         | 
| 2117 | 
            +
            </div>
         | 
| 2118 | 
            +
            </div>
         | 
| 2119 | 
            +
            </div>
         | 
| 2120 | 
            +
            </div></div>
         | 
| 2121 | 
            +
            </div>
         | 
| 2122 | 
            +
            </div></div>
         | 
| 2123 | 
            +
            </div>
         | 
| 1738 2124 |  | 
| 1739 | 
            -
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">allows nested rescue</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1740 | 
            -
                <span style="color:#036;font-weight:bold">E</span> <span style="color:#036;font-weight:bold">SyntaxError</span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1741 | 
            -
                  <span style="color:#080;font-weight:bold">begin</span>
         | 
| 1742 | 
            -
                    raise <span style="color:#036;font-weight:bold">LoadError</span>
         | 
| 1743 | 
            -
                  <span style="color:#080;font-weight:bold">rescue</span> <span style="color:#036;font-weight:bold">LoadError</span>
         | 
| 1744 | 
            -
                  <span style="color:#080;font-weight:bold">end</span>
         | 
| 1745 2125 |  | 
| 1746 | 
            -
             | 
| 2126 | 
            +
            <div class="part" id="History">
         | 
| 2127 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="History"/><div class="nav"><a title="Here" href="#History"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Insulated-and-uninsulated-tests"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Version-2-0-0-2010-03-21"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-History"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2128 | 
            +
              <h1 class="title">
         | 
| 2129 | 
            +
                Part 4
         | 
| 2130 | 
            +
                <br/>
         | 
| 2131 | 
            +
                <big>History</big>
         | 
| 2132 | 
            +
              </h1>
         | 
| 2133 | 
            +
              <div class="content"><div style="display: none"><br/><hr/><br/></div><div class="tabs"><ul><li><a href="#Version-2-0-0-2010-03-21"><span class="section_number">4.1  </span>Version 2.0.0 (2010-03-21)</a></li><li><a href="#Version-1-1-0-2009-10-27"><span class="section_number">4.2  </span>Version 1.1.0 (2009-10-27)</a></li><li><a href="#Version-1-0-1-2009-10-07"><span class="section_number">4.3  </span>Version 1.0.1 (2009-10-07)</a></li><li><a href="#Version-1-0-0-2009-05-03"><span class="section_number">4.4  </span>Version 1.0.0 (2009-05-03)</a></li><li><a href="#Version-0-1-0-2009-04-28"><span class="section_number">4.5  </span>Version 0.1.0 (2009-04-28)</a></li><li><a href="#Version-0-0-0-2009-04-13"><span class="section_number">4.6  </span>Version 0.0.0 (2009-04-13)</a></li></ul>
         | 
| 2134 | 
            +
            <div class="section" id="Version-2-0-0-2010-03-21">
         | 
| 2135 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Version-2-0-0-2010-03-21"/><div class="nav"><a title="Here" href="#Version-2-0-0-2010-03-21"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#History"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Version-1-1-0-2009-10-27"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Version-2-0-0-2010-03-21"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2136 | 
            +
              <h1 class="title">
         | 
| 2137 | 
            +
                <span class="section_number">4.1  </span>Version 2.0.0 (2010-03-21)
         | 
| 2138 | 
            +
              </h1>
         | 
| 2139 | 
            +
              <div class="content"><p>This release adds the ability to insulate tests from each other, share code between them, makes the order of parameters consistent in the API, improves user interactivity, fixes some bugs, and revises the user manual.</p>
         | 
| 1747 2140 |  | 
| 1748 | 
            -
                  raise <span style="color:#036;font-weight:bold">SyntaxError</span>
         | 
| 1749 | 
            -
                <span style="color:#080;font-weight:bold">end</span>
         | 
| 1750 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1751 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1752 2141 |  | 
| 1753 | 
            -
            < | 
| 1754 | 
            -
               | 
| 2142 | 
            +
            <div class="paragraph" id="Incompatible-changes">
         | 
| 2143 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Incompatible-changes"/><div class="nav"><a title="Here" href="#Incompatible-changes"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2144 | 
            +
              <p class="title">Incompatible changes</p>
         | 
| 2145 | 
            +
              <div class="content"><ul>
         | 
| 2146 | 
            +
            <li>
         | 
| 2147 | 
            +
            <p>Root-level calls to the <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::D()</code> method are <a class="xref" href="#Insulation" title="Section 3.2.3. "Insulation"">automatically insulated</a> now.</p>
         | 
| 2148 | 
            +
            </li>
         | 
| 1755 2149 |  | 
| 1756 | 
            -
             | 
| 1757 | 
            -
             | 
| 1758 | 
            -
             | 
| 2150 | 
            +
            <li>
         | 
| 2151 | 
            +
            <p>The <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::E()</code> methods now expects its optional message parameter to be the <em>last parameter</em> in the parameter list.</p>
         | 
| 2152 | 
            +
            </li>
         | 
| 1759 2153 |  | 
| 1760 | 
            -
             | 
| 1761 | 
            -
             | 
| 1762 | 
            -
             | 
| 2154 | 
            +
            <li>
         | 
| 2155 | 
            +
            <p>The <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::C()</code> methods now expect their first parameter to be a symbol instead of the optional message to be shown in case of assertion failure.</p>
         | 
| 2156 | 
            +
            </li>
         | 
| 1763 2157 |  | 
| 1764 | 
            -
             | 
| 1765 | 
            -
             | 
| 1766 | 
            -
             | 
| 2158 | 
            +
            <li>
         | 
| 2159 | 
            +
            <p>The <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::R()</code> has been renamed to <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::L()</code>, which is a mnemonic for <a class="xref" href="#Logging" title="Section 3.2.1.2">Logging</a>.</p>
         | 
| 2160 | 
            +
            </li>
         | 
| 1767 2161 |  | 
| 1768 | 
            -
             | 
| 1769 | 
            -
             | 
| 1770 | 
            -
             | 
| 2162 | 
            +
            <li>
         | 
| 2163 | 
            +
            <p>Shorten names of hash keys in the execution trace for brevity and rename <code class="line"><span style="color:#A60">:raise</span></code> key in report statistics to <code class="line"><span style="color:#A60">:error</span></code>.</p>
         | 
| 2164 | 
            +
            </li>
         | 
| 1771 2165 |  | 
| 1772 | 
            -
             | 
| 1773 | 
            -
             | 
| 1774 | 
            -
             | 
| 1775 | 
            -
                    raise <span style="color:#036;font-weight:bold">LoadError</span>
         | 
| 1776 | 
            -
                  <span style="color:#080;font-weight:bold">rescue</span> <span style="color:#036;font-weight:bold">LoadError</span>
         | 
| 1777 | 
            -
                  <span style="color:#080;font-weight:bold">end</span>
         | 
| 2166 | 
            +
            <li>
         | 
| 2167 | 
            +
            <p>Only the most helpful subset of the failure details is shown before placing the user into a debugger because they can query the omitted information (on demand) inside the debugger.</p>
         | 
| 2168 | 
            +
            </li>
         | 
| 1778 2169 |  | 
| 1779 | 
            -
             | 
| 2170 | 
            +
            <li>
         | 
| 2171 | 
            +
            <p>The execution trace is only shown if all tests passed in <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::run()</code>.</p>
         | 
| 2172 | 
            +
            </li>
         | 
| 1780 2173 |  | 
| 1781 | 
            -
             | 
| 1782 | 
            -
             | 
| 1783 | 
            -
             | 
| 1784 | 
            -
             | 
| 2174 | 
            +
            <li>
         | 
| 2175 | 
            +
            <p>The <code class="line"><span style="color:#A60">:debug</span></code> option is now set to Ruby’s <code class="line"><span style="color:#d70;font-weight:bold">$DEBUG</span></code> global by default.</p>
         | 
| 2176 | 
            +
            </li>
         | 
| 2177 | 
            +
            </ul></div>
         | 
| 2178 | 
            +
            </div>
         | 
| 1785 2179 |  | 
| 1786 | 
            -
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">C()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1787 | 
            -
              C(<span style="color:#A60">:foo</span>) { throw <span style="color:#A60">:foo</span> }
         | 
| 1788 2180 |  | 
| 1789 | 
            -
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">forbids block to not throw anything</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1790 | 
            -
                <span style="color:#036;font-weight:bold">F</span> { C?(<span style="color:#A60">:bar</span>) {} }
         | 
| 1791 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1792 2181 |  | 
| 1793 | 
            -
             | 
| 1794 | 
            -
             | 
| 1795 | 
            -
              < | 
| 2182 | 
            +
            <div class="paragraph" id="New-features">
         | 
| 2183 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="New-features"/><div class="nav"><a title="Here" href="#New-features"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2184 | 
            +
              <p class="title">New features</p>
         | 
| 2185 | 
            +
              <div class="content"><ul>
         | 
| 2186 | 
            +
            <li>
         | 
| 2187 | 
            +
            <p>Print failures as they occur instead of waiting until the end.</p>
         | 
| 2188 | 
            +
            </li>
         | 
| 1796 2189 |  | 
| 1797 | 
            -
             | 
| 1798 | 
            -
             | 
| 1799 | 
            -
                  catch <span style="color:#A60">:bar</span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1800 | 
            -
                    throw <span style="color:#A60">:bar</span>
         | 
| 1801 | 
            -
                  <span style="color:#080;font-weight:bold">end</span>
         | 
| 2190 | 
            +
            <li>
         | 
| 2191 | 
            +
            <p>Allow passing condition as argument to true/false assertions instead of requiring the condition to be passed as a code block, and also fall back to the binding of inner-most enclosing test or hook when debugging or constructing a failure report for an assertion that was not given a block.</p>
         | 
| 1802 2192 |  | 
| 1803 | 
            -
             | 
| 1804 | 
            -
             | 
| 1805 | 
            -
             | 
| 2193 | 
            +
            <p>This allows you to reduce “line noise” in your tests:</p>
         | 
| 2194 | 
            +
            </li>
         | 
| 2195 | 
            +
            </ul>
         | 
| 1806 2196 |  | 
| 1807 | 
            -
             | 
| 1808 | 
            -
             | 
| 1809 | 
            -
                outer = C(<span style="color:#A60">:foo</span>) { throw <span style="color:#A60">:foo</span>, inner }
         | 
| 2197 | 
            +
            <ins><pre lang="ruby" class="para"><span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Lottery</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2198 | 
            +
              winning_ticket = rand()
         | 
| 1810 2199 |  | 
| 1811 | 
            -
             | 
| 2200 | 
            +
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">My chances of winning</span><span style="color:#710">"</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 2201 | 
            +
                my_ticket = rand()
         | 
| 2202 | 
            +
                <span style="color:#036;font-weight:bold">F</span> my_ticket == winning_ticket, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">I won?!  Dream on.</span><span style="color:#710">"</span></span>
         | 
| 1812 2203 | 
             
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1813 2204 | 
             
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 2205 | 
            +
            </pre></ins>
         | 
| 1814 2206 |  | 
| 1815 | 
            -
            < | 
| 1816 | 
            -
             | 
| 2207 | 
            +
            <ul>
         | 
| 2208 | 
            +
            <li>
         | 
| 2209 | 
            +
            <p>Add <a class="xref" href="#Sharing" title="Section 3.2.2. "Sharing""><code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::S()</code> methods</a> for sharing code between tests.</p>
         | 
| 2210 | 
            +
            </li>
         | 
| 1817 2211 |  | 
| 1818 | 
            -
             | 
| 1819 | 
            -
             | 
| 1820 | 
            -
             | 
| 2212 | 
            +
            <li>
         | 
| 2213 | 
            +
            <p>Add <a class="xref" href="#Insulation" title="Section 3.2.3. "Insulation""><code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::D!()</code> method</a> to explicitly insulate a test from other tests, the top-level Ruby environment, and the code being tested.</p>
         | 
| 2214 | 
            +
            </li>
         | 
| 1821 2215 |  | 
| 1822 | 
            -
             | 
| 1823 | 
            -
             | 
| 1824 | 
            -
             | 
| 2216 | 
            +
            <li>
         | 
| 2217 | 
            +
            <p>Add <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::info()</code> method which returns the details of the failure that is currently being debugged by the user.</p>
         | 
| 2218 | 
            +
            </li>
         | 
| 1825 2219 |  | 
| 1826 | 
            -
             | 
| 1827 | 
            -
             | 
| 1828 | 
            -
             | 
| 1829 | 
            -
                    throw <span style="color:#A60">:moz</span>
         | 
| 1830 | 
            -
                  <span style="color:#080;font-weight:bold">end</span>
         | 
| 2220 | 
            +
            <li>
         | 
| 2221 | 
            +
            <p>Add instance variables to the <code class="line"><span style="color:#A60">:vars</span></code> section of a failure report.</p>
         | 
| 2222 | 
            +
            </li>
         | 
| 1831 2223 |  | 
| 1832 | 
            -
             | 
| 1833 | 
            -
             | 
| 1834 | 
            -
             | 
| 2224 | 
            +
            <li>
         | 
| 2225 | 
            +
            <p>Add <code class="line">setup!()</code> and <code class="line">teardown!()</code> methods for before-all and after-all hooks in the <tt>dfect/unit</tt> emulation library.</p>
         | 
| 2226 | 
            +
            </li>
         | 
| 1835 2227 |  | 
| 1836 | 
            -
             | 
| 1837 | 
            -
             | 
| 1838 | 
            -
             | 
| 2228 | 
            +
            <li>
         | 
| 2229 | 
            +
            <p>Add test execution time to statistics hash (under the <code class="line"><span style="color:#A60">:time</span></code> key).</p>
         | 
| 2230 | 
            +
            </li>
         | 
| 2231 | 
            +
            </ul></div>
         | 
| 2232 | 
            +
            </div>
         | 
| 1839 2233 |  | 
| 1840 | 
            -
                <span style="color:#036;font-weight:bold">F</span> { outer == inner }
         | 
| 1841 | 
            -
                <span style="color:#036;font-weight:bold">T</span> { outer == <span style="color:#038;font-weight:bold">nil</span>   }
         | 
| 1842 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1843 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1844 2234 |  | 
| 1845 | 
            -
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">D()</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1846 | 
            -
              history = []
         | 
| 1847 2235 |  | 
| 1848 | 
            -
             | 
| 1849 | 
            -
              < | 
| 1850 | 
            -
              < | 
| 1851 | 
            -
              < | 
| 2236 | 
            +
            <div class="paragraph" id="Bug-fixes">
         | 
| 2237 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Bug-fixes"/><div class="nav"><a title="Here" href="#Bug-fixes"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2238 | 
            +
              <p class="title">Bug fixes</p>
         | 
| 2239 | 
            +
              <div class="content"><ul>
         | 
| 2240 | 
            +
            <li>
         | 
| 2241 | 
            +
            <p>Do not print any output when <code class="line"><span style="color:#A60">:quiet</span></code> option is active.</p>
         | 
| 2242 | 
            +
            </li>
         | 
| 1852 2243 |  | 
| 1853 | 
            -
             | 
| 1854 | 
            -
             | 
| 1855 | 
            -
             | 
| 1856 | 
            -
                <span style="color:#036;font-weight:bold">F</span> { history.select {|x| x == <span style="color:#A60">:after_each</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1857 | 
            -
                <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_all</span>   }.length == <span style="color:#00D;font-weight:bold">0</span> }
         | 
| 1858 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 2244 | 
            +
            <li>
         | 
| 2245 | 
            +
            <p>Allow passing multiple strings/objects to <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::D()</code> like in RSpec.</p>
         | 
| 2246 | 
            +
            </li>
         | 
| 1859 2247 |  | 
| 1860 | 
            -
             | 
| 1861 | 
            -
             | 
| 1862 | 
            -
             | 
| 1863 | 
            -
                <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_each</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1864 | 
            -
                <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_all</span>   }.length == <span style="color:#00D;font-weight:bold">0</span> }
         | 
| 1865 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 2248 | 
            +
            <li>
         | 
| 2249 | 
            +
            <p>Make before and after hook methods mixin-able like assertions.</p>
         | 
| 2250 | 
            +
            </li>
         | 
| 1866 2251 |  | 
| 1867 | 
            -
             | 
| 1868 | 
            -
             | 
| 1869 | 
            -
             | 
| 1870 | 
            -
             | 
| 1871 | 
            -
             | 
| 1872 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 2252 | 
            +
            <li>
         | 
| 2253 | 
            +
            <p>Do not assume that <code class="line"><span style="color:#036;font-weight:bold">Module</span><span style="color:#888">#to_s</span></code> is the same as <code class="line"><span style="color:#036;font-weight:bold">Module</span><span style="color:#888">#name</span></code>.</p>
         | 
| 2254 | 
            +
            </li>
         | 
| 2255 | 
            +
            </ul></div>
         | 
| 2256 | 
            +
            </div>
         | 
| 1873 2257 |  | 
| 1874 | 
            -
              <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">fourth nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1875 | 
            -
                <span style="color:#036;font-weight:bold">D</span> .<< { history << <span style="color:#A60">:nested_before_all</span>  }
         | 
| 1876 | 
            -
                <span style="color:#036;font-weight:bold">D</span> .<  { history << <span style="color:#A60">:nested_before_each</span> }
         | 
| 1877 | 
            -
                <span style="color:#036;font-weight:bold">D</span> .>  { history << <span style="color:#A60">:nested_after_each</span>  }
         | 
| 1878 | 
            -
                <span style="color:#036;font-weight:bold">D</span> .>> { history << <span style="color:#A60">:nested_after_all</span>   }
         | 
| 1879 | 
            -
             | 
| 1880 | 
            -
                nested_before_each = <span style="color:#00D;font-weight:bold">0</span>
         | 
| 1881 | 
            -
             | 
| 1882 | 
            -
                <span style="color:#036;font-weight:bold">D</span> .< <span style="color:#080;font-weight:bold">do</span>
         | 
| 1883 | 
            -
                  <span style="color:#888"># outer values remain the same for this nesting</span>
         | 
| 1884 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_all</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1885 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:before_each</span> }.length == <span style="color:#00D;font-weight:bold">4</span> }
         | 
| 1886 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_each</span>  }.length == <span style="color:#00D;font-weight:bold">3</span> }
         | 
| 1887 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:after_all</span>   }.length == <span style="color:#00D;font-weight:bold">0</span> }
         | 
| 1888 | 
            -
             | 
| 1889 | 
            -
                  nested_before_each += <span style="color:#00D;font-weight:bold">1</span>
         | 
| 1890 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == nested_before_each }
         | 
| 1891 | 
            -
                <span style="color:#080;font-weight:bold">end</span>
         | 
| 1892 | 
            -
             | 
| 1893 | 
            -
                <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">first double-nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1894 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_all</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1895 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1896 | 
            -
                  <span style="color:#036;font-weight:bold">F</span> { history.select {|x| x == <span style="color:#A60">:nested_after_each</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1897 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_all</span>   }.length == <span style="color:#00D;font-weight:bold">0</span> }
         | 
| 1898 | 
            -
                <span style="color:#080;font-weight:bold">end</span>
         | 
| 1899 | 
            -
             | 
| 1900 | 
            -
                <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">second double-nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1901 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_all</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1902 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == <span style="color:#00D;font-weight:bold">2</span> }
         | 
| 1903 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_each</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1904 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_all</span>   }.length == <span style="color:#00D;font-weight:bold">0</span> }
         | 
| 1905 | 
            -
                <span style="color:#080;font-weight:bold">end</span>
         | 
| 1906 | 
            -
             | 
| 1907 | 
            -
                <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">third double-nesting</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1908 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_all</span>  }.length == <span style="color:#00D;font-weight:bold">1</span> }
         | 
| 1909 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_before_each</span> }.length == <span style="color:#00D;font-weight:bold">3</span> }
         | 
| 1910 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_each</span>  }.length == <span style="color:#00D;font-weight:bold">2</span> }
         | 
| 1911 | 
            -
                  <span style="color:#036;font-weight:bold">T</span> { history.select {|x| x == <span style="color:#A60">:nested_after_all</span>   }.length == <span style="color:#00D;font-weight:bold">0</span> }
         | 
| 1912 | 
            -
                <span style="color:#080;font-weight:bold">end</span>
         | 
| 1913 | 
            -
              <span style="color:#080;font-weight:bold">end</span>
         | 
| 1914 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 1915 2258 |  | 
| 1916 | 
            -
            <span style="color:#036;font-weight:bold">D</span> <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">D.<() must allow inheritance checking when called without a block</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
         | 
| 1917 | 
            -
              <span style="color:#036;font-weight:bold">F</span> { <span style="color:#036;font-weight:bold">D</span> < <span style="color:#036;font-weight:bold">Kernel</span> }
         | 
| 1918 | 
            -
              <span style="color:#036;font-weight:bold">F</span> { <span style="color:#036;font-weight:bold">D</span> < <span style="color:#036;font-weight:bold">Object</span> }
         | 
| 1919 | 
            -
              <span style="color:#036;font-weight:bold">F</span> { <span style="color:#036;font-weight:bold">D</span> < <span style="color:#036;font-weight:bold">Module</span> }
         | 
| 1920 | 
            -
              <span style="color:#036;font-weight:bold">T</span> { <span style="color:#036;font-weight:bold">D</span>.class == <span style="color:#036;font-weight:bold">Module</span> }
         | 
| 1921 2259 |  | 
| 1922 | 
            -
             | 
| 1923 | 
            -
              < | 
| 1924 | 
            -
            < | 
| 2260 | 
            +
            <div class="paragraph" id="Housekeeping">
         | 
| 2261 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Housekeeping"/><div class="nav"><a title="Here" href="#Housekeeping"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2262 | 
            +
              <p class="title">Housekeeping</p>
         | 
| 2263 | 
            +
              <div class="content"><ul>
         | 
| 2264 | 
            +
            <li>
         | 
| 2265 | 
            +
            <p>Upgrade to Inochi 2.0.0 for managing this project.</p>
         | 
| 2266 | 
            +
            </li>
         | 
| 1925 2267 |  | 
| 1926 | 
            -
            < | 
| 1927 | 
            -
             | 
| 1928 | 
            -
             | 
| 2268 | 
            +
            <li>
         | 
| 2269 | 
            +
            <p>Make emulation libraries modify Dfect module instead of Kernel.</p>
         | 
| 2270 | 
            +
            </li>
         | 
| 1929 2271 |  | 
| 1930 | 
            -
            < | 
| 1931 | 
            -
             | 
| 1932 | 
            -
             | 
| 1933 | 
            -
            <span style="color:#080;font-weight:bold">end</span>
         | 
| 2272 | 
            +
            <li>
         | 
| 2273 | 
            +
            <p>Do not pollute the user’s output with our <code class="line"><span style="color:#036;font-weight:bold">Class</span><span style="color:#888">#to_yaml</span></code> workaround.</p>
         | 
| 2274 | 
            +
            </li>
         | 
| 1934 2275 |  | 
| 1935 | 
            -
             | 
| 2276 | 
            +
            <li>
         | 
| 2277 | 
            +
            <p>Remove “Motivation” section from user manual. It was too fanatic!</p>
         | 
| 2278 | 
            +
            </li>
         | 
| 2279 | 
            +
            </ul></div>
         | 
| 1936 2280 | 
             
            </div>
         | 
| 1937 2281 | 
             
            </div>
         | 
| 1938 2282 | 
             
            </div>
         | 
| 1939 | 
            -
             | 
| 1940 | 
            -
             | 
| 1941 | 
            -
             | 
| 1942 | 
            -
             | 
| 1943 | 
            -
            <div class="chapter" id="History">
         | 
| 1944 | 
            -
              <a name="History"/><div class="nav"><a title="Focus this segment" href="#History"><img alt="Focus this segment" src="84728322" class="icon"/></a> <a title="Focus previous segment" href="#A-sample-unit-test"><img alt="Focus previous segment" src="84727874" class="icon"/></a> <a title="Focus next segment" href="#Version-1-1-0-2009-10-27"><img alt="Focus next segment" src="84727398" class="icon"/></a> <a title="Return to listing" href="#a__toc__History"><img alt="Return to listing" src="84726992" class="icon"/></a></div>
         | 
| 1945 | 
            -
              <h1 class="title">
         | 
| 1946 | 
            -
                Chapter 4
         | 
| 1947 | 
            -
                <br/>
         | 
| 1948 | 
            -
                <big>History</big>
         | 
| 1949 | 
            -
              </h1>
         | 
| 1950 | 
            -
              <div class="content"><div class="tabs"><ul><li><a href="#Version-1-1-0-2009-10-27">Version 1.1.0 (2009-10-27)</a></li><li><a href="#Version-1-0-1-2009-10-07">Version 1.0.1 (2009-10-07)</a></li><li><a href="#Version-1-0-0-2009-05-03">Version 1.0.0 (2009-05-03)</a></li><li><a href="#Version-0-1-0-2009-04-28">Version 0.1.0 (2009-04-28)</a></li><li><a href="#Version-0-0-0-2009-04-13">Version 0.0.0 (2009-04-13)</a></li></ul>
         | 
| 2283 | 
            +
             
         | 
| 1951 2284 | 
             
            <div class="section" id="Version-1-1-0-2009-10-27">
         | 
| 1952 | 
            -
              <a name="Version-1-1-0-2009-10-27"/><div class="nav"><a title=" | 
| 2285 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Version-1-1-0-2009-10-27"/><div class="nav"><a title="Here" href="#Version-1-1-0-2009-10-27"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Version-2-0-0-2010-03-21"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Version-1-0-1-2009-10-07"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Version-1-1-0-2009-10-27"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 1953 2286 | 
             
              <h1 class="title">
         | 
| 1954 | 
            -
                4. | 
| 2287 | 
            +
                <span class="section_number">4.2  </span>Version 1.1.0 (2009-10-27)
         | 
| 1955 2288 | 
             
              </h1>
         | 
| 1956 2289 | 
             
              <div class="content"><p>This release adds a new method for emitting status messages and does some internal housekeeping.</p>
         | 
| 1957 2290 |  | 
| 1958 | 
            -
             | 
| 2291 | 
            +
             | 
| 1959 2292 | 
             
            <div class="paragraph" id="Thank-you">
         | 
| 1960 | 
            -
              < | 
| 2293 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Thank-you"/><div class="nav"><a title="Here" href="#Thank-you"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 1961 2294 | 
             
              <p class="title">Thank you</p>
         | 
| 1962 2295 | 
             
              <div class="content"><ul>
         | 
| 1963 2296 | 
             
            <li>Iñaki Baz Castillo used Dfect and suggested new features.</li>
         | 
| @@ -1966,18 +2299,18 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 1966 2299 |  | 
| 1967 2300 |  | 
| 1968 2301 |  | 
| 1969 | 
            -
            <div class="paragraph" id="New-features">
         | 
| 1970 | 
            -
              < | 
| 2302 | 
            +
            <div class="paragraph" id="New-features-85749454">
         | 
| 2303 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="New-features-85749454"/><div class="nav"><a title="Here" href="#New-features-85749454"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 1971 2304 | 
             
              <p class="title">New features</p>
         | 
| 1972 2305 | 
             
              <div class="content"><ul>
         | 
| 1973 | 
            -
            <li>Add <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::S()</code> method for <a class="xref" href="# | 
| 2306 | 
            +
            <li>Add <code class="line"><span style="color:#036;font-weight:bold">Dfect</span>::S()</code> method for <a class="xref" href="#Logging" title="Section 3.2.1.2. "Logging"">adding status messages</a> to the execution report. This feature was <a href='http://github.com/sunaku/dfect/issues/closed#issue/1'>requested by</a> Iñaki Baz Castillo.</li>
         | 
| 1974 2307 | 
             
            </ul></div>
         | 
| 1975 2308 | 
             
            </div>
         | 
| 1976 2309 |  | 
| 1977 2310 |  | 
| 1978 2311 |  | 
| 1979 | 
            -
            <div class="paragraph" id="Housekeeping">
         | 
| 1980 | 
            -
              < | 
| 2312 | 
            +
            <div class="paragraph" id="Housekeeping-85773044">
         | 
| 2313 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Housekeeping-85773044"/><div class="nav"><a title="Here" href="#Housekeeping-85773044"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 1981 2314 | 
             
              <p class="title">Housekeeping</p>
         | 
| 1982 2315 | 
             
              <div class="content"><ul>
         | 
| 1983 2316 | 
             
            <li>
         | 
| @@ -1985,7 +2318,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 1985 2318 | 
             
            </li>
         | 
| 1986 2319 |  | 
| 1987 2320 | 
             
            <li>
         | 
| 1988 | 
            -
            <p>Mention <a class="xref" href="#Emulation" title="Section 3. | 
| 2321 | 
            +
            <p>Mention <a class="xref" href="#Emulation" title="Section 3.1.4">Emulation</a> layers for popular testing libraries.</p>
         | 
| 1989 2322 | 
             
            </li>
         | 
| 1990 2323 |  | 
| 1991 2324 | 
             
            <li>
         | 
| @@ -2001,19 +2334,19 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2001 2334 | 
             
            </li>
         | 
| 2002 2335 | 
             
            </ul></div>
         | 
| 2003 2336 | 
             
            </div>
         | 
| 2004 | 
            -
            </div | 
| 2337 | 
            +
            </div>
         | 
| 2005 2338 | 
             
            </div>
         | 
| 2006 2339 |  | 
| 2007 2340 | 
             
            <div class="section" id="Version-1-0-1-2009-10-07">
         | 
| 2008 | 
            -
              <a name="Version-1-0-1-2009-10-07"/><div class="nav"><a title=" | 
| 2341 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Version-1-0-1-2009-10-07"/><div class="nav"><a title="Here" href="#Version-1-0-1-2009-10-07"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Version-1-1-0-2009-10-27"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Version-1-0-0-2009-05-03"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Version-1-0-1-2009-10-07"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2009 2342 | 
             
              <h1 class="title">
         | 
| 2010 | 
            -
                4. | 
| 2343 | 
            +
                <span class="section_number">4.3  </span>Version 1.0.1 (2009-10-07)
         | 
| 2011 2344 | 
             
              </h1>
         | 
| 2012 2345 | 
             
              <div class="content"><p>This release fixes a bug in the Test::Unit emulation library and revises the user manual.</p>
         | 
| 2013 2346 |  | 
| 2014 | 
            -
             | 
| 2015 | 
            -
            <div class="paragraph" id="Bug-fixes">
         | 
| 2016 | 
            -
              < | 
| 2347 | 
            +
             | 
| 2348 | 
            +
            <div class="paragraph" id="Bug-fixes-85824340">
         | 
| 2349 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Bug-fixes-85824340"/><div class="nav"><a title="Here" href="#Bug-fixes-85824340"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2017 2350 | 
             
              <p class="title">Bug fixes</p>
         | 
| 2018 2351 | 
             
              <div class="content"><ul>
         | 
| 2019 2352 | 
             
            <li>The parameters for the <code class="line">assert_equal()</code> method in the <tt>dfect/unit</tt> library were in the wrong order.</li>
         | 
| @@ -2022,8 +2355,8 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2022 2355 |  | 
| 2023 2356 |  | 
| 2024 2357 |  | 
| 2025 | 
            -
            <div class="paragraph" id="Housekeeping- | 
| 2026 | 
            -
              < | 
| 2358 | 
            +
            <div class="paragraph" id="Housekeeping-85820322">
         | 
| 2359 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Housekeeping-85820322"/><div class="nav"><a title="Here" href="#Housekeeping-85820322"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2027 2360 | 
             
              <p class="title">Housekeeping</p>
         | 
| 2028 2361 | 
             
              <div class="content"><ul>
         | 
| 2029 2362 | 
             
            <li>
         | 
| @@ -2047,23 +2380,23 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2047 2380 | 
             
            </li>
         | 
| 2048 2381 |  | 
| 2049 2382 | 
             
            <li>
         | 
| 2050 | 
            -
            <p>Open source is for fun, so <a href='http://loiclemeur.com/english/2009/03/never-criticize-your-competitors.html'>be nice</a | 
| 2383 | 
            +
            <p>Open source is for fun, so <a href='http://loiclemeur.com/english/2009/03/never-criticize-your-competitors.html'>be nice</a> and speak of “related works” instead of “competitors”.</p>
         | 
| 2051 2384 | 
             
            </li>
         | 
| 2052 2385 | 
             
            </ul></div>
         | 
| 2053 2386 | 
             
            </div>
         | 
| 2054 | 
            -
            </div | 
| 2387 | 
            +
            </div>
         | 
| 2055 2388 | 
             
            </div>
         | 
| 2056 2389 |  | 
| 2057 2390 | 
             
            <div class="section" id="Version-1-0-0-2009-05-03">
         | 
| 2058 | 
            -
              <a name="Version-1-0-0-2009-05-03"/><div class="nav"><a title=" | 
| 2391 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Version-1-0-0-2009-05-03"/><div class="nav"><a title="Here" href="#Version-1-0-0-2009-05-03"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Version-1-0-1-2009-10-07"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Version-0-1-0-2009-04-28"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Version-1-0-0-2009-05-03"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2059 2392 | 
             
              <h1 class="title">
         | 
| 2060 | 
            -
                4. | 
| 2393 | 
            +
                <span class="section_number">4.4  </span>Version 1.0.0 (2009-05-03)
         | 
| 2061 2394 | 
             
              </h1>
         | 
| 2062 2395 | 
             
              <div class="content"><p>This release improves default choices, adds emulation layers to mimic other testing libraries, and fixes some bugs.</p>
         | 
| 2063 2396 |  | 
| 2064 | 
            -
             | 
| 2065 | 
            -
            <div class="paragraph" id="Incompatible-changes">
         | 
| 2066 | 
            -
              < | 
| 2397 | 
            +
             | 
| 2398 | 
            +
            <div class="paragraph" id="Incompatible-changes-85843282">
         | 
| 2399 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Incompatible-changes-85843282"/><div class="nav"><a title="Here" href="#Incompatible-changes-85843282"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2067 2400 | 
             
              <p class="title">Incompatible changes</p>
         | 
| 2068 2401 | 
             
              <div class="content"><ul>
         | 
| 2069 2402 | 
             
            <li>
         | 
| @@ -2080,8 +2413,8 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2080 2413 |  | 
| 2081 2414 |  | 
| 2082 2415 |  | 
| 2083 | 
            -
            <div class="paragraph" id="New-features- | 
| 2084 | 
            -
              < | 
| 2416 | 
            +
            <div class="paragraph" id="New-features-85870708">
         | 
| 2417 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="New-features-85870708"/><div class="nav"><a title="Here" href="#New-features-85870708"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2085 2418 | 
             
              <p class="title">New features</p>
         | 
| 2086 2419 | 
             
              <div class="content"><ul>
         | 
| 2087 2420 | 
             
            <li>
         | 
| @@ -2100,8 +2433,8 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2100 2433 |  | 
| 2101 2434 |  | 
| 2102 2435 |  | 
| 2103 | 
            -
            <div class="paragraph" id="Bug-fixes- | 
| 2104 | 
            -
              < | 
| 2436 | 
            +
            <div class="paragraph" id="Bug-fixes-85866662">
         | 
| 2437 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Bug-fixes-85866662"/><div class="nav"><a title="Here" href="#Bug-fixes-85866662"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2105 2438 | 
             
              <p class="title">Bug fixes</p>
         | 
| 2106 2439 | 
             
              <div class="content"><ul>
         | 
| 2107 2440 | 
             
            <li>Do not blindly replace <code class="line"><span style="color:#036;font-weight:bold">Class</span><span style="color:#888">#to_yaml</span></code>; it might be fixed someday.</li>
         | 
| @@ -2110,16 +2443,16 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2110 2443 |  | 
| 2111 2444 |  | 
| 2112 2445 |  | 
| 2113 | 
            -
            <div class="paragraph" id="Housekeeping- | 
| 2114 | 
            -
              < | 
| 2446 | 
            +
            <div class="paragraph" id="Housekeeping-85894242">
         | 
| 2447 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Housekeeping-85894242"/><div class="nav"><a title="Here" href="#Housekeeping-85894242"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2115 2448 | 
             
              <p class="title">Housekeeping</p>
         | 
| 2116 2449 | 
             
              <div class="content"><ul>
         | 
| 2117 2450 | 
             
            <li>
         | 
| 2118 | 
            -
            <p>Add  | 
| 2451 | 
            +
            <p>Add “Motivation” section in user manual to promote interactive debugging.</p>
         | 
| 2119 2452 | 
             
            </li>
         | 
| 2120 2453 |  | 
| 2121 2454 | 
             
            <li>
         | 
| 2122 | 
            -
            <p>Add brief <a class="xref" href="#History" title=" | 
| 2455 | 
            +
            <p>Add brief <a class="xref" href="#History" title="Part 4">History</a> of this project’s inception.</p>
         | 
| 2123 2456 | 
             
            </li>
         | 
| 2124 2457 |  | 
| 2125 2458 | 
             
            <li>
         | 
| @@ -2131,19 +2464,19 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2131 2464 | 
             
            </li>
         | 
| 2132 2465 | 
             
            </ul></div>
         | 
| 2133 2466 | 
             
            </div>
         | 
| 2134 | 
            -
            </div | 
| 2467 | 
            +
            </div>
         | 
| 2135 2468 | 
             
            </div>
         | 
| 2136 2469 |  | 
| 2137 2470 | 
             
            <div class="section" id="Version-0-1-0-2009-04-28">
         | 
| 2138 | 
            -
              <a name="Version-0-1-0-2009-04-28"/><div class="nav"><a title=" | 
| 2471 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Version-0-1-0-2009-04-28"/><div class="nav"><a title="Here" href="#Version-0-1-0-2009-04-28"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Version-1-0-0-2009-05-03"><img alt="[Previous]" src="cid:81898012" class="icon"/></a> <a title="Next" href="#Version-0-0-0-2009-04-13"><img alt="[Next]" src="cid:81897676" class="icon"/></a> <a title="Contents" href="#_contents-Version-0-1-0-2009-04-28"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2139 2472 | 
             
              <h1 class="title">
         | 
| 2140 | 
            -
                4. | 
| 2473 | 
            +
                <span class="section_number">4.5  </span>Version 0.1.0 (2009-04-28)
         | 
| 2141 2474 | 
             
              </h1>
         | 
| 2142 2475 | 
             
              <div class="content"><p>This release adds new variations to assertion methods, fixes several bugs, and improves test coverage.</p>
         | 
| 2143 2476 |  | 
| 2144 | 
            -
             | 
| 2145 | 
            -
            <div class="paragraph" id="Thank-you- | 
| 2146 | 
            -
              < | 
| 2477 | 
            +
             | 
| 2478 | 
            +
            <div class="paragraph" id="Thank-you-80236618">
         | 
| 2479 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Thank-you-80236618"/><div class="nav"><a title="Here" href="#Thank-you-80236618"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2147 2480 | 
             
              <p class="title">Thank you</p>
         | 
| 2148 2481 | 
             
              <div class="content"><ul>
         | 
| 2149 2482 | 
             
            <li>François Beausoleil contributed patches for both code <em>and</em> tests! :-)</li>
         | 
| @@ -2152,26 +2485,24 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2152 2485 |  | 
| 2153 2486 |  | 
| 2154 2487 |  | 
| 2155 | 
            -
            <div class="paragraph" id="New-features- | 
| 2156 | 
            -
              < | 
| 2488 | 
            +
            <div class="paragraph" id="New-features-80867682">
         | 
| 2489 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="New-features-80867682"/><div class="nav"><a title="Here" href="#New-features-80867682"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2157 2490 | 
             
              <p class="title">New features</p>
         | 
| 2158 2491 | 
             
              <div class="content"><ul>
         | 
| 2159 | 
            -
            <li>
         | 
| 2160 | 
            -
             | 
| 2492 | 
            +
            <li>Added <a class="xref" href="#Negation" title="Section 3.1.1. "Negation"">negation (m!)</a> and <a class="xref" href="#Sampling" title="Section 3.1.2. "Sampling"">sampling (m?)</a> variations to <a class="xref" href="#Assertions" title="Section 3.1. "Assertions"">assertion methods</a>.</li>
         | 
| 2493 | 
            +
            </ul>
         | 
| 2161 2494 |  | 
| 2162 2495 | 
             
            <p>These new methods implement assertion functionality missing so far (previously we could not assert that a given exception was NOT thrown) and thereby allow us to fully test Dfect using itself.</p>
         | 
| 2163 | 
            -
            </li>
         | 
| 2164 2496 |  | 
| 2165 | 
            -
            < | 
| 2166 | 
            -
             | 
| 2167 | 
            -
             | 
| 2168 | 
            -
            </ul></div>
         | 
| 2497 | 
            +
            <pre>* Added documentation on <a class="xref" href="#Insulation" title="Section 3.2.3. "Insulation"">how to insulate tests</a></pre>
         | 
| 2498 | 
            +
             | 
| 2499 | 
            +
            <p>from the global Ruby namespace.</p></div>
         | 
| 2169 2500 | 
             
            </div>
         | 
| 2170 2501 |  | 
| 2171 2502 |  | 
| 2172 2503 |  | 
| 2173 | 
            -
            <div class="paragraph" id="Bug-fixes- | 
| 2174 | 
            -
              < | 
| 2504 | 
            +
            <div class="paragraph" id="Bug-fixes-84138754">
         | 
| 2505 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Bug-fixes-84138754"/><div class="nav"><a title="Here" href="#Bug-fixes-84138754"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2175 2506 | 
             
              <p class="title">Bug fixes</p>
         | 
| 2176 2507 | 
             
              <div class="content"><ul>
         | 
| 2177 2508 | 
             
            <li>
         | 
| @@ -2198,22 +2529,22 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2198 2529 |  | 
| 2199 2530 |  | 
| 2200 2531 |  | 
| 2201 | 
            -
            <div class="paragraph" id="Housekeeping- | 
| 2202 | 
            -
              < | 
| 2532 | 
            +
            <div class="paragraph" id="Housekeeping-84457184">
         | 
| 2533 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Housekeeping-84457184"/><div class="nav"><a title="Here" href="#Housekeeping-84457184"><img alt="[Here]" src="cid:81898502" class="icon"/></a>   </div>
         | 
| 2203 2534 | 
             
              <p class="title">Housekeeping</p>
         | 
| 2204 2535 | 
             
              <div class="content"><ul>
         | 
| 2205 2536 | 
             
            <li>Filled the big holes in test coverage. Everything except the runtime debugging logic is now covered by the unit tests.</li>
         | 
| 2206 2537 | 
             
            </ul></div>
         | 
| 2207 2538 | 
             
            </div>
         | 
| 2208 | 
            -
            </div | 
| 2539 | 
            +
            </div>
         | 
| 2209 2540 | 
             
            </div>
         | 
| 2210 2541 |  | 
| 2211 2542 | 
             
            <div class="section" id="Version-0-0-0-2009-04-13">
         | 
| 2212 | 
            -
              <a name="Version-0-0-0-2009-04-13"/><div class="nav"><a title=" | 
| 2543 | 
            +
              <div style="display: none"><br/><hr/><br/></div><a name="Version-0-0-0-2009-04-13"/><div class="nav"><a title="Here" href="#Version-0-0-0-2009-04-13"><img alt="[Here]" src="cid:81898502" class="icon"/></a> <a title="Previous" href="#Version-0-1-0-2009-04-28"><img alt="[Previous]" src="cid:81898012" class="icon"/></a>  <a title="Contents" href="#_contents-Version-0-0-0-2009-04-13"><img alt="[Contents]" src="cid:81897116" class="icon"/></a></div>
         | 
| 2213 2544 | 
             
              <h1 class="title">
         | 
| 2214 | 
            -
                4. | 
| 2545 | 
            +
                <span class="section_number">4.6  </span>Version 0.0.0 (2009-04-13)
         | 
| 2215 2546 | 
             
              </h1>
         | 
| 2216 | 
            -
              <div class="content"><p>For the longest time, I took  | 
| 2547 | 
            +
              <div class="content"><p>For the longest time, I took Test::Unit and <a href='http://rspec.info'>RSpec</a> for granted. They were the epitomy of modern Ruby practice; the insurmountable status quo; immortalized in books, conferences, and blogs alike.</p>
         | 
| 2217 2548 |  | 
| 2218 2549 | 
             
            <p>Why would <em>anyone</em> think of using anything remotely different, let alone be foolish enough to write an alternative testing library when these are clearly <em>good enough</em>?</p>
         | 
| 2219 2550 |  | 
| @@ -2231,19 +2562,18 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2231 2562 |  | 
| 2232 2563 | 
             
            <p>Empowered by this revelation and inspired by <a href='http://www.ruby-forum.com/topic/183354#801895'>Sean O’Halpin’s musing</a> on alternative names for assertion methods, I rose to challenge the status quo.</p>
         | 
| 2233 2564 |  | 
| 2234 | 
            -
            <p>And so I present to you the first public release of Dfect | 
| 2565 | 
            +
            <p>And so I present to you the first public release of “Dfect”.</p></div>
         | 
| 2235 2566 | 
             
            </div>
         | 
| 2236 2567 | 
             
            </div></div>
         | 
| 2237 2568 | 
             
            </div>
         | 
| 2238 2569 |  | 
| 2239 | 
            -
             | 
| 2240 2570 | 
             
                    </div>
         | 
| 2241 2571 |  | 
| 2242 2572 |  | 
| 2243 2573 | 
             
                    <div style="display: none"><br/><hr/><br/></div>
         | 
| 2244 2574 |  | 
| 2245 | 
            -
                    <div id=" | 
| 2246 | 
            -
                      <p>This document was generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 9. | 
| 2575 | 
            +
                    <div id="_about">
         | 
| 2576 | 
            +
                      <p>This document was generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 9.2.1 (2009-11-18)</a> on <b>Sun Mar 21 16:21:47 2010</b> using the following resources.</p>
         | 
| 2247 2577 |  | 
| 2248 2578 | 
             
                      <table border="1">
         | 
| 2249 2579 | 
             
                        <thead>
         | 
| @@ -2256,17 +2586,18 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2256 2586 | 
             
                        <tbody>
         | 
| 2257 2587 | 
             
                          <tr>
         | 
| 2258 2588 | 
             
                            <td>
         | 
| 2259 | 
            -
                              <img alt="here_frag" src=" | 
| 2260 | 
            -
                              <img alt=" | 
| 2261 | 
            -
                              <img alt=" | 
| 2262 | 
            -
                              <img alt=" | 
| 2263 | 
            -
                              <img alt=" | 
| 2264 | 
            -
                              <img alt=" | 
| 2265 | 
            -
                              <img alt=" | 
| 2266 | 
            -
                              <img alt=" | 
| 2267 | 
            -
                              <img alt=" | 
| 2268 | 
            -
                              <img alt=" | 
| 2269 | 
            -
                              <img alt=" | 
| 2589 | 
            +
                              <img alt="here_frag" src="cid:82357212" class="icon"/>
         | 
| 2590 | 
            +
                              <img alt="command" src="cid:82356834" class="icon"/>
         | 
| 2591 | 
            +
                              <img alt="important" src="cid:82356428" class="icon"/>
         | 
| 2592 | 
            +
                              <img alt="warning" src="cid:82356008" class="icon"/>
         | 
| 2593 | 
            +
                              <img alt="caution" src="cid:82355644" class="icon"/>
         | 
| 2594 | 
            +
                              <img alt="note" src="cid:81900308" class="icon"/>
         | 
| 2595 | 
            +
                              <img alt="tip" src="cid:81899636" class="icon"/>
         | 
| 2596 | 
            +
                              <img alt="quote" src="cid:81899006" class="icon"/>
         | 
| 2597 | 
            +
                              <img alt="nav_here" src="cid:81898502" class="icon"/>
         | 
| 2598 | 
            +
                              <img alt="nav_prev" src="cid:81898012" class="icon"/>
         | 
| 2599 | 
            +
                              <img alt="nav_next" src="cid:81897676" class="icon"/>
         | 
| 2600 | 
            +
                              <img alt="nav_list" src="cid:81897116" class="icon"/>
         | 
| 2270 2601 | 
             
                            </td>
         | 
| 2271 2602 | 
             
                            <td>
         | 
| 2272 2603 | 
             
                              <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a>
         | 
| @@ -2280,7 +2611,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2280 2611 |  | 
| 2281 2612 | 
             
                          <tr>
         | 
| 2282 2613 | 
             
                            <td>
         | 
| 2283 | 
            -
                              <img alt="hyperlink" src=" | 
| 2614 | 
            +
                              <img alt="hyperlink" src="cid:82357576" class="icon"/>
         | 
| 2284 2615 | 
             
                            </td>
         | 
| 2285 2616 | 
             
                            <td>
         | 
| 2286 2617 | 
             
                              <a href="http://www.mediawiki.org/skins-1.5/monobook/external.png">MediaWiki Monobook Skin</a>
         | 
| @@ -2296,12 +2627,12 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2296 2627 |  | 
| 2297 2628 | 
             
                      <p class="validations">
         | 
| 2298 2629 | 
             
                        <a href="http://validator.w3.org/check?uri=referer"><img
         | 
| 2299 | 
            -
                            src=" | 
| 2630 | 
            +
                            src="cid:81896640"
         | 
| 2300 2631 | 
             
                            alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
         | 
| 2301 2632 |  | 
| 2302 2633 | 
             
                        <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
         | 
| 2303 | 
            -
                          src=" | 
| 2304 | 
            -
                          alt="Valid CSS!" height="31" width="88" /></a>
         | 
| 2634 | 
            +
                          src="cid:81896052"
         | 
| 2635 | 
            +
                          alt="Valid CSS 3!" height="31" width="88" /></a>
         | 
| 2305 2636 | 
             
                      </p>
         | 
| 2306 2637 | 
             
                    </div>
         | 
| 2307 2638 | 
             
                  </div>
         | 
| @@ -2309,7 +2640,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71 | |
| 2309 2640 |  | 
| 2310 2641 |  | 
| 2311 2642 |  | 
| 2312 | 
            -
                  <div id=" | 
| 2643 | 
            +
                  <div id="_footer">
         | 
| 2313 2644 |  | 
| 2314 2645 |  | 
| 2315 2646 |  |