mocha_rails 0.0.3 → 0.0.4
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.
| 
         @@ -79,11 +79,19 @@ require.register("assertion.js", function(module, exports, require){ 
     | 
|
| 
       79 
79 
     | 
    
         
             
             * #### Differences
         
     | 
| 
       80 
80 
     | 
    
         
             
             *
         
     | 
| 
       81 
81 
     | 
    
         
             
             * The `expect` interface provides a function as a starting point for chaining
         
     | 
| 
       82 
     | 
    
         
            -
             * your language assertions. It works on  
     | 
| 
      
 82 
     | 
    
         
            +
             * your language assertions. It works on node.js and in all browsers.
         
     | 
| 
       83 
83 
     | 
    
         
             
             *
         
     | 
| 
       84 
84 
     | 
    
         
             
             * The `should` interface extends `Object.prototype` to provide a single getter as
         
     | 
| 
       85 
     | 
    
         
            -
             * the starting point for your language assertions.  
     | 
| 
       86 
     | 
    
         
            -
             *  
     | 
| 
      
 85 
     | 
    
         
            +
             * the starting point for your language assertions. It works on node.js and in
         
     | 
| 
      
 86 
     | 
    
         
            +
             * all browsers except Internet Explorer.
         
     | 
| 
      
 87 
     | 
    
         
            +
             *
         
     | 
| 
      
 88 
     | 
    
         
            +
             * #### Configuration
         
     | 
| 
      
 89 
     | 
    
         
            +
             *
         
     | 
| 
      
 90 
     | 
    
         
            +
             * By default, Chai does not show stack traces upon an AssertionError. This can
         
     | 
| 
      
 91 
     | 
    
         
            +
             * be changed by modifying the `includeStack` parameter for chai.Assertion. For example:
         
     | 
| 
      
 92 
     | 
    
         
            +
             *
         
     | 
| 
      
 93 
     | 
    
         
            +
             *      var chai = require('chai');
         
     | 
| 
      
 94 
     | 
    
         
            +
             *      chai.Assertion.includeStack = true; // defaults to false
         
     | 
| 
       87 
95 
     | 
    
         
             
             */
         
     | 
| 
       88 
96 
     | 
    
         | 
| 
       89 
97 
     | 
    
         
             
            /*!
         
     | 
| 
         @@ -92,6 +100,7 @@ require.register("assertion.js", function(module, exports, require){ 
     | 
|
| 
       92 
100 
     | 
    
         | 
| 
       93 
101 
     | 
    
         
             
            var AssertionError = require('./error')
         
     | 
| 
       94 
102 
     | 
    
         
             
              , eql = require('./utils/eql')
         
     | 
| 
      
 103 
     | 
    
         
            +
              , toString = Object.prototype.toString
         
     | 
| 
       95 
104 
     | 
    
         
             
              , inspect = require('./utils/inspect');
         
     | 
| 
       96 
105 
     | 
    
         | 
| 
       97 
106 
     | 
    
         
             
            /*!
         
     | 
| 
         @@ -100,6 +109,7 @@ var AssertionError = require('./error') 
     | 
|
| 
       100 
109 
     | 
    
         | 
| 
       101 
110 
     | 
    
         
             
            module.exports = Assertion;
         
     | 
| 
       102 
111 
     | 
    
         | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
       103 
113 
     | 
    
         
             
            /*!
         
     | 
| 
       104 
114 
     | 
    
         
             
             * # Assertion Constructor
         
     | 
| 
       105 
115 
     | 
    
         
             
             *
         
     | 
| 
         @@ -115,7 +125,22 @@ function Assertion (obj, msg, stack) { 
     | 
|
| 
       115 
125 
     | 
    
         
             
            }
         
     | 
| 
       116 
126 
     | 
    
         | 
| 
       117 
127 
     | 
    
         
             
            /*!
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
      
 128 
     | 
    
         
            +
              * ## Assertion.includeStack
         
     | 
| 
      
 129 
     | 
    
         
            +
              * , toString = Object.prototype.toString
         
     | 
| 
      
 130 
     | 
    
         
            +
              *
         
     | 
| 
      
 131 
     | 
    
         
            +
              * User configurable property, influences whether stack trace
         
     | 
| 
      
 132 
     | 
    
         
            +
              * is included in Assertion error message. Default of false
         
     | 
| 
      
 133 
     | 
    
         
            +
              * suppresses stack trace in the error message
         
     | 
| 
      
 134 
     | 
    
         
            +
              *
         
     | 
| 
      
 135 
     | 
    
         
            +
              *     Assertion.includeStack = true;  // enable stack on error
         
     | 
| 
      
 136 
     | 
    
         
            +
              *
         
     | 
| 
      
 137 
     | 
    
         
            +
              * @api public
         
     | 
| 
      
 138 
     | 
    
         
            +
              */
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
            Assertion.includeStack = false;
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
            /*!
         
     | 
| 
      
 143 
     | 
    
         
            +
             * # .assert(expression, message, negateMessage, expected, actual)
         
     | 
| 
       119 
144 
     | 
    
         
             
             *
         
     | 
| 
       120 
145 
     | 
    
         
             
             * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.
         
     | 
| 
       121 
146 
     | 
    
         
             
             *
         
     | 
| 
         @@ -123,18 +148,22 @@ function Assertion (obj, msg, stack) { 
     | 
|
| 
       123 
148 
     | 
    
         
             
             * @param {Philosophical} expression to be tested
         
     | 
| 
       124 
149 
     | 
    
         
             
             * @param {String} message to display if fails
         
     | 
| 
       125 
150 
     | 
    
         
             
             * @param {String} negatedMessage to display if negated expression fails
         
     | 
| 
       126 
     | 
    
         
            -
             * @ 
     | 
| 
      
 151 
     | 
    
         
            +
             * @param {*} expected value (remember to check for negation)
         
     | 
| 
      
 152 
     | 
    
         
            +
             * @param {*} actual (optional) will default to `this.obj`
         
     | 
| 
      
 153 
     | 
    
         
            +
             * @api private
         
     | 
| 
       127 
154 
     | 
    
         
             
             */
         
     | 
| 
       128 
155 
     | 
    
         | 
| 
       129 
     | 
    
         
            -
            Assertion.prototype.assert = function (expr, msg, negateMsg) {
         
     | 
| 
      
 156 
     | 
    
         
            +
            Assertion.prototype.assert = function (expr, msg, negateMsg, expected, actual) {
         
     | 
| 
      
 157 
     | 
    
         
            +
              actual = actual || this.obj;
         
     | 
| 
       130 
158 
     | 
    
         
             
              var msg = (this.negate ? negateMsg : msg)
         
     | 
| 
       131 
159 
     | 
    
         
             
                , ok = this.negate ? !expr : expr;
         
     | 
| 
       132 
160 
     | 
    
         | 
| 
       133 
161 
     | 
    
         
             
              if (!ok) {
         
     | 
| 
       134 
162 
     | 
    
         
             
                throw new AssertionError({
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
                   
     | 
| 
       137 
     | 
    
         
            -
                   
     | 
| 
      
 163 
     | 
    
         
            +
                    message: this.msg ? this.msg + ': ' + msg : msg // include custom message if available
         
     | 
| 
      
 164 
     | 
    
         
            +
                  , actual: actual
         
     | 
| 
      
 165 
     | 
    
         
            +
                  , expected: expected
         
     | 
| 
      
 166 
     | 
    
         
            +
                  , stackStartFunction: (Assertion.includeStack) ? this.assert : this.ssfi
         
     | 
| 
       138 
167 
     | 
    
         
             
                });
         
     | 
| 
       139 
168 
     | 
    
         
             
              }
         
     | 
| 
       140 
169 
     | 
    
         
             
            };
         
     | 
| 
         @@ -152,6 +181,7 @@ Object.defineProperty(Assertion.prototype, 'inspect', 
     | 
|
| 
       152 
181 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       153 
182 
     | 
    
         
             
                  return inspect(this.obj);
         
     | 
| 
       154 
183 
     | 
    
         
             
                }
         
     | 
| 
      
 184 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       155 
185 
     | 
    
         
             
            });
         
     | 
| 
       156 
186 
     | 
    
         | 
| 
       157 
187 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -167,6 +197,7 @@ Object.defineProperty(Assertion.prototype, 'to', 
     | 
|
| 
       167 
197 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       168 
198 
     | 
    
         
             
                  return this;
         
     | 
| 
       169 
199 
     | 
    
         
             
                }
         
     | 
| 
      
 200 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       170 
201 
     | 
    
         
             
            });
         
     | 
| 
       171 
202 
     | 
    
         | 
| 
       172 
203 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -182,6 +213,7 @@ Object.defineProperty(Assertion.prototype, 'be', 
     | 
|
| 
       182 
213 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       183 
214 
     | 
    
         
             
                  return this;
         
     | 
| 
       184 
215 
     | 
    
         
             
                }
         
     | 
| 
      
 216 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       185 
217 
     | 
    
         
             
            });
         
     | 
| 
       186 
218 
     | 
    
         | 
| 
       187 
219 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -199,6 +231,7 @@ Object.defineProperty(Assertion.prototype, 'been', 
     | 
|
| 
       199 
231 
     | 
    
         
             
                  this.tense = 'past';
         
     | 
| 
       200 
232 
     | 
    
         
             
                  return this;
         
     | 
| 
       201 
233 
     | 
    
         
             
                }
         
     | 
| 
      
 234 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       202 
235 
     | 
    
         
             
            });
         
     | 
| 
       203 
236 
     | 
    
         | 
| 
       204 
237 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -214,6 +247,7 @@ Object.defineProperty(Assertion.prototype, 'an', 
     | 
|
| 
       214 
247 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       215 
248 
     | 
    
         
             
                  return this;
         
     | 
| 
       216 
249 
     | 
    
         
             
                }
         
     | 
| 
      
 250 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       217 
251 
     | 
    
         
             
            });
         
     | 
| 
       218 
252 
     | 
    
         
             
            /**
         
     | 
| 
       219 
253 
     | 
    
         
             
             * # is
         
     | 
| 
         @@ -228,6 +262,7 @@ Object.defineProperty(Assertion.prototype, 'is', 
     | 
|
| 
       228 
262 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       229 
263 
     | 
    
         
             
                  return this;
         
     | 
| 
       230 
264 
     | 
    
         
             
                }
         
     | 
| 
      
 265 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       231 
266 
     | 
    
         
             
            });
         
     | 
| 
       232 
267 
     | 
    
         | 
| 
       233 
268 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -243,6 +278,7 @@ Object.defineProperty(Assertion.prototype, 'and', 
     | 
|
| 
       243 
278 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       244 
279 
     | 
    
         
             
                  return this;
         
     | 
| 
       245 
280 
     | 
    
         
             
                }
         
     | 
| 
      
 281 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       246 
282 
     | 
    
         
             
            });
         
     | 
| 
       247 
283 
     | 
    
         | 
| 
       248 
284 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -258,6 +294,7 @@ Object.defineProperty(Assertion.prototype, 'have', 
     | 
|
| 
       258 
294 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       259 
295 
     | 
    
         
             
                  return this;
         
     | 
| 
       260 
296 
     | 
    
         
             
                }
         
     | 
| 
      
 297 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       261 
298 
     | 
    
         
             
            });
         
     | 
| 
       262 
299 
     | 
    
         | 
| 
       263 
300 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -273,6 +310,7 @@ Object.defineProperty(Assertion.prototype, 'with', 
     | 
|
| 
       273 
310 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       274 
311 
     | 
    
         
             
                  return this;
         
     | 
| 
       275 
312 
     | 
    
         
             
                }
         
     | 
| 
      
 313 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       276 
314 
     | 
    
         
             
            });
         
     | 
| 
       277 
315 
     | 
    
         | 
| 
       278 
316 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -289,6 +327,7 @@ Object.defineProperty(Assertion.prototype, 'not', 
     | 
|
| 
       289 
327 
     | 
    
         
             
                  this.negate = true;
         
     | 
| 
       290 
328 
     | 
    
         
             
                  return this;
         
     | 
| 
       291 
329 
     | 
    
         
             
                }
         
     | 
| 
      
 330 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       292 
331 
     | 
    
         
             
            });
         
     | 
| 
       293 
332 
     | 
    
         | 
| 
       294 
333 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -310,10 +349,11 @@ Object.defineProperty(Assertion.prototype, 'ok', 
     | 
|
| 
       310 
349 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       311 
350 
     | 
    
         
             
                      this.obj
         
     | 
| 
       312 
351 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to be truthy'
         
     | 
| 
       313 
     | 
    
         
            -
                    , 'expected ' + this.inspect + ' to be  
     | 
| 
      
 352 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to be falsy');
         
     | 
| 
       314 
353 
     | 
    
         | 
| 
       315 
354 
     | 
    
         
             
                  return this;
         
     | 
| 
       316 
355 
     | 
    
         
             
                }
         
     | 
| 
      
 356 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       317 
357 
     | 
    
         
             
            });
         
     | 
| 
       318 
358 
     | 
    
         | 
| 
       319 
359 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -330,10 +370,13 @@ Object.defineProperty(Assertion.prototype, 'true', 
     | 
|
| 
       330 
370 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       331 
371 
     | 
    
         
             
                      true === this.obj
         
     | 
| 
       332 
372 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to be true'
         
     | 
| 
       333 
     | 
    
         
            -
                    , 'expected ' + this.inspect + ' to be false' 
     | 
| 
      
 373 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to be false'
         
     | 
| 
      
 374 
     | 
    
         
            +
                    , this.negate ? false : true
         
     | 
| 
      
 375 
     | 
    
         
            +
                  );
         
     | 
| 
       334 
376 
     | 
    
         | 
| 
       335 
377 
     | 
    
         
             
                  return this;
         
     | 
| 
       336 
378 
     | 
    
         
             
                }
         
     | 
| 
      
 379 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       337 
380 
     | 
    
         
             
            });
         
     | 
| 
       338 
381 
     | 
    
         | 
| 
       339 
382 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -350,10 +393,13 @@ Object.defineProperty(Assertion.prototype, 'false', 
     | 
|
| 
       350 
393 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       351 
394 
     | 
    
         
             
                      false === this.obj
         
     | 
| 
       352 
395 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to be false'
         
     | 
| 
       353 
     | 
    
         
            -
                    , 'expected ' + this.inspect + ' to be true' 
     | 
| 
      
 396 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to be true'
         
     | 
| 
      
 397 
     | 
    
         
            +
                    , this.negate ? true : false
         
     | 
| 
      
 398 
     | 
    
         
            +
                  );
         
     | 
| 
       354 
399 
     | 
    
         | 
| 
       355 
400 
     | 
    
         
             
                  return this;
         
     | 
| 
       356 
401 
     | 
    
         
             
                }
         
     | 
| 
      
 402 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       357 
403 
     | 
    
         
             
            });
         
     | 
| 
       358 
404 
     | 
    
         | 
| 
       359 
405 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -375,10 +421,12 @@ Object.defineProperty(Assertion.prototype, 'exist', 
     | 
|
| 
       375 
421 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       376 
422 
     | 
    
         
             
                      null != this.obj
         
     | 
| 
       377 
423 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to exist'
         
     | 
| 
       378 
     | 
    
         
            -
                    , 'expected ' + this.inspect + ' to not exist' 
     | 
| 
      
 424 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to not exist'
         
     | 
| 
      
 425 
     | 
    
         
            +
                  );
         
     | 
| 
       379 
426 
     | 
    
         | 
| 
       380 
427 
     | 
    
         
             
                  return this;
         
     | 
| 
       381 
428 
     | 
    
         
             
                }
         
     | 
| 
      
 429 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       382 
430 
     | 
    
         
             
            });
         
     | 
| 
       383 
431 
     | 
    
         | 
| 
       384 
432 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -394,15 +442,22 @@ Object.defineProperty(Assertion.prototype, 'exist', 
     | 
|
| 
       394 
442 
     | 
    
         | 
| 
       395 
443 
     | 
    
         
             
            Object.defineProperty(Assertion.prototype, 'empty',
         
     | 
| 
       396 
444 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       397 
     | 
    
         
            -
                   
     | 
| 
      
 445 
     | 
    
         
            +
                  var expected = this.obj;
         
     | 
| 
      
 446 
     | 
    
         
            +
             
     | 
| 
      
 447 
     | 
    
         
            +
                  if (Array.isArray(this.obj)) {
         
     | 
| 
      
 448 
     | 
    
         
            +
                    expected = this.obj.length;
         
     | 
| 
      
 449 
     | 
    
         
            +
                  } else if (typeof this.obj === 'object') {
         
     | 
| 
      
 450 
     | 
    
         
            +
                    expected = Object.keys(this.obj).length;
         
     | 
| 
      
 451 
     | 
    
         
            +
                  }
         
     | 
| 
       398 
452 
     | 
    
         | 
| 
       399 
453 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       400 
     | 
    
         
            -
                       
     | 
| 
      
 454 
     | 
    
         
            +
                      !expected
         
     | 
| 
       401 
455 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to be empty'
         
     | 
| 
       402 
456 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' not to be empty');
         
     | 
| 
       403 
457 
     | 
    
         | 
| 
       404 
458 
     | 
    
         
             
                  return this;
         
     | 
| 
       405 
459 
     | 
    
         
             
                }
         
     | 
| 
      
 460 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       406 
461 
     | 
    
         
             
            });
         
     | 
| 
       407 
462 
     | 
    
         | 
| 
       408 
463 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -423,10 +478,14 @@ Object.defineProperty(Assertion.prototype, 'arguments', 
     | 
|
| 
       423 
478 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       424 
479 
     | 
    
         
             
                      '[object Arguments]' == Object.prototype.toString.call(this.obj)
         
     | 
| 
       425 
480 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to be arguments'
         
     | 
| 
       426 
     | 
    
         
            -
                    , 'expected ' + this.inspect + ' to not be arguments' 
     | 
| 
      
 481 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to not be arguments'
         
     | 
| 
      
 482 
     | 
    
         
            +
                    , '[object Arguments]'
         
     | 
| 
      
 483 
     | 
    
         
            +
                    , Object.prototype.toString.call(this.obj)
         
     | 
| 
      
 484 
     | 
    
         
            +
                  );
         
     | 
| 
       427 
485 
     | 
    
         | 
| 
       428 
486 
     | 
    
         
             
                  return this;
         
     | 
| 
       429 
487 
     | 
    
         
             
                }
         
     | 
| 
      
 488 
     | 
    
         
            +
              , configurable: true
         
     | 
| 
       430 
489 
     | 
    
         
             
            });
         
     | 
| 
       431 
490 
     | 
    
         | 
| 
       432 
491 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -445,7 +504,8 @@ Assertion.prototype.equal = function (val) { 
     | 
|
| 
       445 
504 
     | 
    
         
             
              this.assert(
         
     | 
| 
       446 
505 
     | 
    
         
             
                  val === this.obj
         
     | 
| 
       447 
506 
     | 
    
         
             
                , 'expected ' + this.inspect + ' to equal ' + inspect(val)
         
     | 
| 
       448 
     | 
    
         
            -
                , 'expected ' + this.inspect + ' to not equal ' + inspect(val) 
     | 
| 
      
 507 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to not equal ' + inspect(val)
         
     | 
| 
      
 508 
     | 
    
         
            +
                , val );
         
     | 
| 
       449 
509 
     | 
    
         | 
| 
       450 
510 
     | 
    
         
             
              return this;
         
     | 
| 
       451 
511 
     | 
    
         
             
            };
         
     | 
| 
         @@ -466,7 +526,9 @@ Assertion.prototype.eql = function (obj) { 
     | 
|
| 
       466 
526 
     | 
    
         
             
              this.assert(
         
     | 
| 
       467 
527 
     | 
    
         
             
                  eql(obj, this.obj)
         
     | 
| 
       468 
528 
     | 
    
         
             
                , 'expected ' + this.inspect + ' to equal ' + inspect(obj)
         
     | 
| 
       469 
     | 
    
         
            -
                , 'expected ' + this.inspect + ' to not equal ' + inspect(obj) 
     | 
| 
      
 529 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to not equal ' + inspect(obj)
         
     | 
| 
      
 530 
     | 
    
         
            +
                , obj );
         
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
       470 
532 
     | 
    
         
             
              return this;
         
     | 
| 
       471 
533 
     | 
    
         
             
            };
         
     | 
| 
       472 
534 
     | 
    
         | 
| 
         @@ -549,10 +611,15 @@ Assertion.prototype.within = function (start, finish) { 
     | 
|
| 
       549 
611 
     | 
    
         
             
             */
         
     | 
| 
       550 
612 
     | 
    
         | 
| 
       551 
613 
     | 
    
         
             
            Assertion.prototype.a = function (type) {
         
     | 
| 
      
 614 
     | 
    
         
            +
              var klass = type.charAt(0).toUpperCase() + type.slice(1);
         
     | 
| 
      
 615 
     | 
    
         
            +
             
     | 
| 
       552 
616 
     | 
    
         
             
              this.assert(
         
     | 
| 
       553 
     | 
    
         
            -
                   
     | 
| 
      
 617 
     | 
    
         
            +
                  '[object ' + klass + ']' === toString.call(this.obj)
         
     | 
| 
       554 
618 
     | 
    
         
             
                , 'expected ' + this.inspect + ' to be a ' + type
         
     | 
| 
       555 
     | 
    
         
            -
                , 'expected ' + this.inspect + ' not to be a ' + type 
     | 
| 
      
 619 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' not to be a ' + type
         
     | 
| 
      
 620 
     | 
    
         
            +
                , '[object ' + klass + ']'
         
     | 
| 
      
 621 
     | 
    
         
            +
                , toString.call(this.obj)
         
     | 
| 
      
 622 
     | 
    
         
            +
              );
         
     | 
| 
       556 
623 
     | 
    
         | 
| 
       557 
624 
     | 
    
         
             
              return this;
         
     | 
| 
       558 
625 
     | 
    
         
             
            };
         
     | 
| 
         @@ -617,7 +684,10 @@ Assertion.prototype.property = function (name, val) { 
     | 
|
| 
       617 
684 
     | 
    
         
             
                    val === this.obj[name]
         
     | 
| 
       618 
685 
     | 
    
         
             
                  , 'expected ' + this.inspect + ' to have a property ' + inspect(name) + ' of ' +
         
     | 
| 
       619 
686 
     | 
    
         
             
                      inspect(val) + ', but got ' + inspect(this.obj[name])
         
     | 
| 
       620 
     | 
    
         
            -
                  , 'expected ' + this.inspect + ' to not have a property ' + inspect(name) + ' of ' +  inspect(val) 
     | 
| 
      
 687 
     | 
    
         
            +
                  , 'expected ' + this.inspect + ' to not have a property ' + inspect(name) + ' of ' +  inspect(val)
         
     | 
| 
      
 688 
     | 
    
         
            +
                  , val
         
     | 
| 
      
 689 
     | 
    
         
            +
                  , this.obj[val]
         
     | 
| 
      
 690 
     | 
    
         
            +
                );
         
     | 
| 
       621 
691 
     | 
    
         
             
              }
         
     | 
| 
       622 
692 
     | 
    
         | 
| 
       623 
693 
     | 
    
         
             
              this.obj = this.obj[name];
         
     | 
| 
         @@ -666,7 +736,10 @@ Assertion.prototype.length = function (n) { 
     | 
|
| 
       666 
736 
     | 
    
         
             
              this.assert(
         
     | 
| 
       667 
737 
     | 
    
         
             
                  len == n
         
     | 
| 
       668 
738 
     | 
    
         
             
                , 'expected ' + this.inspect + ' to have a length of ' + n + ' but got ' + len
         
     | 
| 
       669 
     | 
    
         
            -
                , 'expected ' + this.inspect + ' to not have a length of ' + len 
     | 
| 
      
 739 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to not have a length of ' + len
         
     | 
| 
      
 740 
     | 
    
         
            +
                , n
         
     | 
| 
      
 741 
     | 
    
         
            +
                , len
         
     | 
| 
      
 742 
     | 
    
         
            +
              );
         
     | 
| 
       670 
743 
     | 
    
         | 
| 
       671 
744 
     | 
    
         
             
              return this;
         
     | 
| 
       672 
745 
     | 
    
         
             
            };
         
     | 
| 
         @@ -697,7 +770,7 @@ Assertion.prototype.match = function (re) { 
     | 
|
| 
       697 
770 
     | 
    
         
             
             *
         
     | 
| 
       698 
771 
     | 
    
         
             
             * Assert the inclusion of an object in an Array or substring in string.
         
     | 
| 
       699 
772 
     | 
    
         
             
             *
         
     | 
| 
       700 
     | 
    
         
            -
             *      expect([1,2,3]).to. 
     | 
| 
      
 773 
     | 
    
         
            +
             *      expect([1,2,3]).to.include(2);
         
     | 
| 
       701 
774 
     | 
    
         
             
             *
         
     | 
| 
       702 
775 
     | 
    
         
             
             * @name include
         
     | 
| 
       703 
776 
     | 
    
         
             
             * @param {Object|String|Number} obj
         
     | 
| 
         @@ -718,7 +791,7 @@ Assertion.prototype.include = function (obj) { 
     | 
|
| 
       718 
791 
     | 
    
         
             
             *
         
     | 
| 
       719 
792 
     | 
    
         
             
             * Assert inclusion of string in string.
         
     | 
| 
       720 
793 
     | 
    
         
             
             *
         
     | 
| 
       721 
     | 
    
         
            -
             *      expect('foobar').to. 
     | 
| 
      
 794 
     | 
    
         
            +
             *      expect('foobar').to.have.string('bar');
         
     | 
| 
       722 
795 
     | 
    
         
             
             *
         
     | 
| 
       723 
796 
     | 
    
         
             
             * @name string
         
     | 
| 
       724 
797 
     | 
    
         
             
             * @param {String} string
         
     | 
| 
         @@ -751,7 +824,8 @@ Object.defineProperty(Assertion.prototype, 'contain', 
     | 
|
| 
       751 
824 
     | 
    
         
             
              { get: function () {
         
     | 
| 
       752 
825 
     | 
    
         
             
                  this.contains = true;
         
     | 
| 
       753 
826 
     | 
    
         
             
                  return this;
         
     | 
| 
       754 
     | 
    
         
            -
                }
         
     | 
| 
      
 827 
     | 
    
         
            +
                },
         
     | 
| 
      
 828 
     | 
    
         
            +
                configurable: true
         
     | 
| 
       755 
829 
     | 
    
         
             
            });
         
     | 
| 
       756 
830 
     | 
    
         | 
| 
       757 
831 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -812,7 +886,10 @@ Assertion.prototype.keys = function(keys) { 
     | 
|
| 
       812 
886 
     | 
    
         
             
              this.assert(
         
     | 
| 
       813 
887 
     | 
    
         
             
                  ok
         
     | 
| 
       814 
888 
     | 
    
         
             
                , 'expected ' + this.inspect + ' to ' + str
         
     | 
| 
       815 
     | 
    
         
            -
                , 'expected ' + this.inspect + ' to not ' + str 
     | 
| 
      
 889 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to not ' + str
         
     | 
| 
      
 890 
     | 
    
         
            +
                , keys
         
     | 
| 
      
 891 
     | 
    
         
            +
                , Object.keys(this.obj)
         
     | 
| 
      
 892 
     | 
    
         
            +
              );
         
     | 
| 
       816 
893 
     | 
    
         | 
| 
       817 
894 
     | 
    
         
             
              return this;
         
     | 
| 
       818 
895 
     | 
    
         
             
            }
         
     | 
| 
         @@ -820,10 +897,21 @@ Assertion.prototype.keys = function(keys) { 
     | 
|
| 
       820 
897 
     | 
    
         
             
            /**
         
     | 
| 
       821 
898 
     | 
    
         
             
             * # .throw(constructor)
         
     | 
| 
       822 
899 
     | 
    
         
             
             *
         
     | 
| 
       823 
     | 
    
         
            -
             * Assert that a function will throw a specific type of error 
     | 
| 
      
 900 
     | 
    
         
            +
             * Assert that a function will throw a specific type of error or that error
         
     | 
| 
      
 901 
     | 
    
         
            +
             * thrown will match a RegExp or include a string.
         
     | 
| 
       824 
902 
     | 
    
         
             
             *
         
     | 
| 
       825 
     | 
    
         
            -
             *      var fn = function () { throw new ReferenceError(''); }
         
     | 
| 
      
 903 
     | 
    
         
            +
             *      var fn = function () { throw new ReferenceError('This is a bad function.'); }
         
     | 
| 
       826 
904 
     | 
    
         
             
             *      expect(fn).to.throw(ReferenceError);
         
     | 
| 
      
 905 
     | 
    
         
            +
             *      expect(fn).to.throw(/bad function/);
         
     | 
| 
      
 906 
     | 
    
         
            +
             *      expect(fn).to.not.throw('good function');
         
     | 
| 
      
 907 
     | 
    
         
            +
             *      expect(fn).to.throw(ReferenceError, /bad function/);
         
     | 
| 
      
 908 
     | 
    
         
            +
             *
         
     | 
| 
      
 909 
     | 
    
         
            +
             * Please note that when a throw expectation is negated, it will check each
         
     | 
| 
      
 910 
     | 
    
         
            +
             * parameter independently, starting with Error constructor type. The appropriate way
         
     | 
| 
      
 911 
     | 
    
         
            +
             * to check for the existence of a type of error but for a message that does not match
         
     | 
| 
      
 912 
     | 
    
         
            +
             * is to use `and`.
         
     | 
| 
      
 913 
     | 
    
         
            +
             *
         
     | 
| 
      
 914 
     | 
    
         
            +
             *      expect(fn).to.throw(ReferenceError).and.not.throw(/good function/);
         
     | 
| 
       827 
915 
     | 
    
         
             
             *
         
     | 
| 
       828 
916 
     | 
    
         
             
             * @name throw
         
     | 
| 
       829 
917 
     | 
    
         
             
             * @alias throws
         
     | 
| 
         @@ -833,25 +921,44 @@ Assertion.prototype.keys = function(keys) { 
     | 
|
| 
       833 
921 
     | 
    
         
             
             * @api public
         
     | 
| 
       834 
922 
     | 
    
         
             
             */
         
     | 
| 
       835 
923 
     | 
    
         | 
| 
       836 
     | 
    
         
            -
            Assertion.prototype.throw = function (constructor) {
         
     | 
| 
      
 924 
     | 
    
         
            +
            Assertion.prototype.throw = function (constructor, msg) {
         
     | 
| 
       837 
925 
     | 
    
         
             
              new Assertion(this.obj).is.a('function');
         
     | 
| 
       838 
926 
     | 
    
         | 
| 
       839 
927 
     | 
    
         
             
              var thrown = false;
         
     | 
| 
       840 
928 
     | 
    
         | 
| 
      
 929 
     | 
    
         
            +
              if (arguments.length === 0) {
         
     | 
| 
      
 930 
     | 
    
         
            +
                msg = null;
         
     | 
| 
      
 931 
     | 
    
         
            +
                constructor = null;
         
     | 
| 
      
 932 
     | 
    
         
            +
              } else if (constructor && (constructor instanceof RegExp || 'string' === typeof constructor)) {
         
     | 
| 
      
 933 
     | 
    
         
            +
                msg = constructor;
         
     | 
| 
      
 934 
     | 
    
         
            +
                constructor = null;
         
     | 
| 
      
 935 
     | 
    
         
            +
              }
         
     | 
| 
      
 936 
     | 
    
         
            +
             
     | 
| 
       841 
937 
     | 
    
         
             
              try {
         
     | 
| 
       842 
938 
     | 
    
         
             
                this.obj();
         
     | 
| 
       843 
939 
     | 
    
         
             
              } catch (err) {
         
     | 
| 
       844 
     | 
    
         
            -
                 
     | 
| 
      
 940 
     | 
    
         
            +
                // first, check constructor
         
     | 
| 
      
 941 
     | 
    
         
            +
                if (constructor && 'function' === typeof constructor) {
         
     | 
| 
       845 
942 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       846 
943 
     | 
    
         
             
                      err instanceof constructor && err.name == constructor.name
         
     | 
| 
       847 
944 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to throw ' + constructor.name + ' but a ' + err.name + ' was thrown'
         
     | 
| 
       848 
945 
     | 
    
         
             
                    , 'expected ' + this.inspect + ' to not throw ' + constructor.name );
         
     | 
| 
      
 946 
     | 
    
         
            +
                  if (!msg) return this;
         
     | 
| 
      
 947 
     | 
    
         
            +
                }
         
     | 
| 
      
 948 
     | 
    
         
            +
                // next, check message
         
     | 
| 
      
 949 
     | 
    
         
            +
                if (err.message && msg && msg instanceof RegExp) {
         
     | 
| 
      
 950 
     | 
    
         
            +
                  this.assert(
         
     | 
| 
      
 951 
     | 
    
         
            +
                      msg.exec(err.message)
         
     | 
| 
      
 952 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to throw error matching ' + msg + ' but got ' + inspect(err.message)
         
     | 
| 
      
 953 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to throw error not matching ' + msg
         
     | 
| 
      
 954 
     | 
    
         
            +
                  );
         
     | 
| 
       849 
955 
     | 
    
         
             
                  return this;
         
     | 
| 
       850 
     | 
    
         
            -
                } else if ( 
     | 
| 
      
 956 
     | 
    
         
            +
                } else if (err.message && msg && 'string' === typeof msg) {
         
     | 
| 
       851 
957 
     | 
    
         
             
                  this.assert(
         
     | 
| 
       852 
     | 
    
         
            -
                       
     | 
| 
       853 
     | 
    
         
            -
                    , 'expected ' + this.inspect + ' to throw error  
     | 
| 
       854 
     | 
    
         
            -
                    , 'expected ' + this.inspect + ' to throw error not  
     | 
| 
      
 958 
     | 
    
         
            +
                      ~err.message.indexOf(msg)
         
     | 
| 
      
 959 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to throw error including ' + inspect(msg) + ' but got ' + inspect(err.message)
         
     | 
| 
      
 960 
     | 
    
         
            +
                    , 'expected ' + this.inspect + ' to throw error not including ' + inspect(msg)
         
     | 
| 
      
 961 
     | 
    
         
            +
                  );
         
     | 
| 
       855 
962 
     | 
    
         
             
                  return this;
         
     | 
| 
       856 
963 
     | 
    
         
             
                } else {
         
     | 
| 
       857 
964 
     | 
    
         
             
                  thrown = true;
         
     | 
| 
         @@ -868,6 +975,81 @@ Assertion.prototype.throw = function (constructor) { 
     | 
|
| 
       868 
975 
     | 
    
         
             
              return this;
         
     | 
| 
       869 
976 
     | 
    
         
             
            };
         
     | 
| 
       870 
977 
     | 
    
         | 
| 
      
 978 
     | 
    
         
            +
            /**
         
     | 
| 
      
 979 
     | 
    
         
            +
             * # .respondTo(method)
         
     | 
| 
      
 980 
     | 
    
         
            +
             *
         
     | 
| 
      
 981 
     | 
    
         
            +
             * Assert that object/class will respond to a method.
         
     | 
| 
      
 982 
     | 
    
         
            +
             *
         
     | 
| 
      
 983 
     | 
    
         
            +
             *      expect(Klass).to.respondTo('bar');
         
     | 
| 
      
 984 
     | 
    
         
            +
             *      expect(obj).to.respondTo('bar');
         
     | 
| 
      
 985 
     | 
    
         
            +
             *
         
     | 
| 
      
 986 
     | 
    
         
            +
             * @name respondTo
         
     | 
| 
      
 987 
     | 
    
         
            +
             * @param {String} method
         
     | 
| 
      
 988 
     | 
    
         
            +
             * @api public
         
     | 
| 
      
 989 
     | 
    
         
            +
             */
         
     | 
| 
      
 990 
     | 
    
         
            +
             
     | 
| 
      
 991 
     | 
    
         
            +
            Assertion.prototype.respondTo = function (method) {
         
     | 
| 
      
 992 
     | 
    
         
            +
              var context = ('function' === typeof this.obj)
         
     | 
| 
      
 993 
     | 
    
         
            +
                ? this.obj.prototype[method]
         
     | 
| 
      
 994 
     | 
    
         
            +
                : this.obj[method];
         
     | 
| 
      
 995 
     | 
    
         
            +
             
     | 
| 
      
 996 
     | 
    
         
            +
              this.assert(
         
     | 
| 
      
 997 
     | 
    
         
            +
                  'function' === typeof context
         
     | 
| 
      
 998 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to respond to ' + inspect(method)
         
     | 
| 
      
 999 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to not respond to ' + inspect(method)
         
     | 
| 
      
 1000 
     | 
    
         
            +
                , 'function'
         
     | 
| 
      
 1001 
     | 
    
         
            +
                , typeof context
         
     | 
| 
      
 1002 
     | 
    
         
            +
              );
         
     | 
| 
      
 1003 
     | 
    
         
            +
             
     | 
| 
      
 1004 
     | 
    
         
            +
              return this;
         
     | 
| 
      
 1005 
     | 
    
         
            +
            };
         
     | 
| 
      
 1006 
     | 
    
         
            +
             
     | 
| 
      
 1007 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1008 
     | 
    
         
            +
             * # .satisfy(method)
         
     | 
| 
      
 1009 
     | 
    
         
            +
             *
         
     | 
| 
      
 1010 
     | 
    
         
            +
             * Assert that passes a truth test.
         
     | 
| 
      
 1011 
     | 
    
         
            +
             *
         
     | 
| 
      
 1012 
     | 
    
         
            +
             *      expect(1).to.satisfy(function(num) { return num > 0; });
         
     | 
| 
      
 1013 
     | 
    
         
            +
             *
         
     | 
| 
      
 1014 
     | 
    
         
            +
             * @name satisfy
         
     | 
| 
      
 1015 
     | 
    
         
            +
             * @param {Function} matcher
         
     | 
| 
      
 1016 
     | 
    
         
            +
             * @api public
         
     | 
| 
      
 1017 
     | 
    
         
            +
             */
         
     | 
| 
      
 1018 
     | 
    
         
            +
             
     | 
| 
      
 1019 
     | 
    
         
            +
            Assertion.prototype.satisfy = function (matcher) {
         
     | 
| 
      
 1020 
     | 
    
         
            +
              this.assert(
         
     | 
| 
      
 1021 
     | 
    
         
            +
                  matcher(this.obj)
         
     | 
| 
      
 1022 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to satisfy ' + inspect(matcher)
         
     | 
| 
      
 1023 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to not satisfy' + inspect(matcher)
         
     | 
| 
      
 1024 
     | 
    
         
            +
                , this.negate ? false : true
         
     | 
| 
      
 1025 
     | 
    
         
            +
                , matcher(this.obj)
         
     | 
| 
      
 1026 
     | 
    
         
            +
              );
         
     | 
| 
      
 1027 
     | 
    
         
            +
             
     | 
| 
      
 1028 
     | 
    
         
            +
              return this;
         
     | 
| 
      
 1029 
     | 
    
         
            +
            };
         
     | 
| 
      
 1030 
     | 
    
         
            +
             
     | 
| 
      
 1031 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1032 
     | 
    
         
            +
             * # .closeTo(expected, delta)
         
     | 
| 
      
 1033 
     | 
    
         
            +
             *
         
     | 
| 
      
 1034 
     | 
    
         
            +
             * Assert that actual is equal to +/- delta.
         
     | 
| 
      
 1035 
     | 
    
         
            +
             *
         
     | 
| 
      
 1036 
     | 
    
         
            +
             *      expect(1.5).to.be.closeTo(1, 0.5);
         
     | 
| 
      
 1037 
     | 
    
         
            +
             *
         
     | 
| 
      
 1038 
     | 
    
         
            +
             * @name closeTo
         
     | 
| 
      
 1039 
     | 
    
         
            +
             * @param {Number} expected
         
     | 
| 
      
 1040 
     | 
    
         
            +
             * @param {Number} delta
         
     | 
| 
      
 1041 
     | 
    
         
            +
             * @api public
         
     | 
| 
      
 1042 
     | 
    
         
            +
             */
         
     | 
| 
      
 1043 
     | 
    
         
            +
             
     | 
| 
      
 1044 
     | 
    
         
            +
            Assertion.prototype.closeTo = function (expected, delta) {
         
     | 
| 
      
 1045 
     | 
    
         
            +
              this.assert(
         
     | 
| 
      
 1046 
     | 
    
         
            +
                  (this.obj - delta === expected) || (this.obj + delta === expected)
         
     | 
| 
      
 1047 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' to be close to ' + expected + ' +/- ' + delta
         
     | 
| 
      
 1048 
     | 
    
         
            +
                , 'expected ' + this.inspect + ' not to be close to ' + expected + ' +/- ' + delta);
         
     | 
| 
      
 1049 
     | 
    
         
            +
             
     | 
| 
      
 1050 
     | 
    
         
            +
              return this;
         
     | 
| 
      
 1051 
     | 
    
         
            +
            };
         
     | 
| 
      
 1052 
     | 
    
         
            +
             
     | 
| 
       871 
1053 
     | 
    
         
             
            /*!
         
     | 
| 
       872 
1054 
     | 
    
         
             
             * Aliases.
         
     | 
| 
       873 
1055 
     | 
    
         
             
             */
         
     | 
| 
         @@ -897,7 +1079,7 @@ require.register("chai.js", function(module, exports, require){ 
     | 
|
| 
       897 
1079 
     | 
    
         
             
            var used = [];
         
     | 
| 
       898 
1080 
     | 
    
         
             
            var exports = module.exports = {};
         
     | 
| 
       899 
1081 
     | 
    
         | 
| 
       900 
     | 
    
         
            -
            exports.version = '0. 
     | 
| 
      
 1082 
     | 
    
         
            +
            exports.version = '0.5.2';
         
     | 
| 
       901 
1083 
     | 
    
         | 
| 
       902 
1084 
     | 
    
         
             
            exports.Assertion = require('./assertion');
         
     | 
| 
       903 
1085 
     | 
    
         
             
            exports.AssertionError = require('./error');
         
     | 
| 
         @@ -913,16 +1095,6 @@ exports.use = function (fn) { 
     | 
|
| 
       913 
1095 
     | 
    
         
             
              return this;
         
     | 
| 
       914 
1096 
     | 
    
         
             
            };
         
     | 
| 
       915 
1097 
     | 
    
         | 
| 
       916 
     | 
    
         
            -
            exports.fail = function (actual, expected, message, operator, stackStartFunction) {
         
     | 
| 
       917 
     | 
    
         
            -
              throw new exports.AssertionError({
         
     | 
| 
       918 
     | 
    
         
            -
                message: message,
         
     | 
| 
       919 
     | 
    
         
            -
                actual: actual,
         
     | 
| 
       920 
     | 
    
         
            -
                expected: expected,
         
     | 
| 
       921 
     | 
    
         
            -
                operator: operator,
         
     | 
| 
       922 
     | 
    
         
            -
                stackStartFunction: stackStartFunction
         
     | 
| 
       923 
     | 
    
         
            -
              });
         
     | 
| 
       924 
     | 
    
         
            -
            };
         
     | 
| 
       925 
     | 
    
         
            -
             
     | 
| 
       926 
1098 
     | 
    
         
             
            var expect = require('./interface/expect');
         
     | 
| 
       927 
1099 
     | 
    
         
             
            exports.use(expect);
         
     | 
| 
       928 
1100 
     | 
    
         | 
| 
         @@ -965,25 +1137,10 @@ function AssertionError (options) { 
     | 
|
| 
       965 
1137 
     | 
    
         | 
| 
       966 
1138 
     | 
    
         
             
            AssertionError.prototype.__proto__ = Error.prototype;
         
     | 
| 
       967 
1139 
     | 
    
         | 
| 
       968 
     | 
    
         
            -
            AssertionError.prototype.summary = function() {
         
     | 
| 
       969 
     | 
    
         
            -
              var str = '';
         
     | 
| 
       970 
     | 
    
         
            -
             
     | 
| 
       971 
     | 
    
         
            -
              if (this.operator) {
         
     | 
| 
       972 
     | 
    
         
            -
                str += 'In: \'' + this.operator + '\'\n\t';
         
     | 
| 
       973 
     | 
    
         
            -
              }
         
     | 
| 
       974 
     | 
    
         
            -
             
     | 
| 
       975 
     | 
    
         
            -
              str += '' + this.name + (this.message ? ': ' + this.message : '');
         
     | 
| 
       976 
     | 
    
         
            -
             
     | 
| 
       977 
     | 
    
         
            -
              return str;
         
     | 
| 
       978 
     | 
    
         
            -
            };
         
     | 
| 
       979 
     | 
    
         
            -
             
     | 
| 
       980 
     | 
    
         
            -
            AssertionError.prototype.details = function() {
         
     | 
| 
       981 
     | 
    
         
            -
              return this.summary();
         
     | 
| 
       982 
     | 
    
         
            -
            };
         
     | 
| 
       983 
     | 
    
         
            -
             
     | 
| 
       984 
1140 
     | 
    
         
             
            AssertionError.prototype.toString = function() {
         
     | 
| 
       985 
     | 
    
         
            -
              return this. 
     | 
| 
      
 1141 
     | 
    
         
            +
              return this.message;
         
     | 
| 
       986 
1142 
     | 
    
         
             
            };
         
     | 
| 
      
 1143 
     | 
    
         
            +
             
     | 
| 
       987 
1144 
     | 
    
         
             
            }); // module: error.js
         
     | 
| 
       988 
1145 
     | 
    
         | 
| 
       989 
1146 
     | 
    
         
             
            require.register("interface/assert.js", function(module, exports, require){
         
     | 
| 
         @@ -1007,6 +1164,14 @@ require.register("interface/assert.js", function(module, exports, require){ 
     | 
|
| 
       1007 
1164 
     | 
    
         
             
             *
         
     | 
| 
       1008 
1165 
     | 
    
         
             
             *      assert.typeOf(foo, 'string');
         
     | 
| 
       1009 
1166 
     | 
    
         
             
             *      assert.equal(foo, 'bar');
         
     | 
| 
      
 1167 
     | 
    
         
            +
             *
         
     | 
| 
      
 1168 
     | 
    
         
            +
             * #### Configuration
         
     | 
| 
      
 1169 
     | 
    
         
            +
             *
         
     | 
| 
      
 1170 
     | 
    
         
            +
             * By default, Chai does not show stack traces upon an AssertionError. This can
         
     | 
| 
      
 1171 
     | 
    
         
            +
             * be changed by modifying the `includeStack` parameter for chai.Assertion. For example:
         
     | 
| 
      
 1172 
     | 
    
         
            +
             *
         
     | 
| 
      
 1173 
     | 
    
         
            +
             *      var chai = require('chai');
         
     | 
| 
      
 1174 
     | 
    
         
            +
             *      chai.Assertion.includeStack = true; // defaults to false
         
     | 
| 
       1010 
1175 
     | 
    
         
             
             */
         
     | 
| 
       1011 
1176 
     | 
    
         | 
| 
       1012 
1177 
     | 
    
         
             
            module.exports = function (chai) {
         
     | 
| 
         @@ -1022,6 +1187,29 @@ module.exports = function (chai) { 
     | 
|
| 
       1022 
1187 
     | 
    
         | 
| 
       1023 
1188 
     | 
    
         
             
              var assert = chai.assert = {};
         
     | 
| 
       1024 
1189 
     | 
    
         | 
| 
      
 1190 
     | 
    
         
            +
              /**
         
     | 
| 
      
 1191 
     | 
    
         
            +
               * # .fail(actual, expect, msg, operator)
         
     | 
| 
      
 1192 
     | 
    
         
            +
               *
         
     | 
| 
      
 1193 
     | 
    
         
            +
               * Throw a failure. Node.js compatible.
         
     | 
| 
      
 1194 
     | 
    
         
            +
               *
         
     | 
| 
      
 1195 
     | 
    
         
            +
               * @name fail
         
     | 
| 
      
 1196 
     | 
    
         
            +
               * @param {*} actual value
         
     | 
| 
      
 1197 
     | 
    
         
            +
               * @param {*} expected value
         
     | 
| 
      
 1198 
     | 
    
         
            +
               * @param {String} message
         
     | 
| 
      
 1199 
     | 
    
         
            +
               * @param {String} operator
         
     | 
| 
      
 1200 
     | 
    
         
            +
               * @api public
         
     | 
| 
      
 1201 
     | 
    
         
            +
               */
         
     | 
| 
      
 1202 
     | 
    
         
            +
             
     | 
| 
      
 1203 
     | 
    
         
            +
              assert.fail = function (actual, expected, message, operator) {
         
     | 
| 
      
 1204 
     | 
    
         
            +
                throw new chai.AssertionError({
         
     | 
| 
      
 1205 
     | 
    
         
            +
                    actual: actual
         
     | 
| 
      
 1206 
     | 
    
         
            +
                  , expected: expected
         
     | 
| 
      
 1207 
     | 
    
         
            +
                  , message: message
         
     | 
| 
      
 1208 
     | 
    
         
            +
                  , operator: operator
         
     | 
| 
      
 1209 
     | 
    
         
            +
                  , stackStartFunction: assert.fail
         
     | 
| 
      
 1210 
     | 
    
         
            +
                });
         
     | 
| 
      
 1211 
     | 
    
         
            +
              }
         
     | 
| 
      
 1212 
     | 
    
         
            +
             
     | 
| 
       1025 
1213 
     | 
    
         
             
              /**
         
     | 
| 
       1026 
1214 
     | 
    
         
             
               * # .ok(object, [message])
         
     | 
| 
       1027 
1215 
     | 
    
         
             
               *
         
     | 
| 
         @@ -1208,7 +1396,7 @@ module.exports = function (chai) { 
     | 
|
| 
       1208 
1396 
     | 
    
         
             
               */
         
     | 
| 
       1209 
1397 
     | 
    
         | 
| 
       1210 
1398 
     | 
    
         
             
              assert.isNull = function (val, msg) {
         
     | 
| 
       1211 
     | 
    
         
            -
                new Assertion(val, msg).to. 
     | 
| 
      
 1399 
     | 
    
         
            +
                new Assertion(val, msg).to.equal(null);
         
     | 
| 
       1212 
1400 
     | 
    
         
             
              };
         
     | 
| 
       1213 
1401 
     | 
    
         | 
| 
       1214 
1402 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1226,7 +1414,7 @@ module.exports = function (chai) { 
     | 
|
| 
       1226 
1414 
     | 
    
         
             
               */
         
     | 
| 
       1227 
1415 
     | 
    
         | 
| 
       1228 
1416 
     | 
    
         
             
              assert.isNotNull = function (val, msg) {
         
     | 
| 
       1229 
     | 
    
         
            -
                new Assertion(val, msg).to. 
     | 
| 
      
 1417 
     | 
    
         
            +
                new Assertion(val, msg).to.not.equal(null);
         
     | 
| 
       1230 
1418 
     | 
    
         
             
              };
         
     | 
| 
       1231 
1419 
     | 
    
         | 
| 
       1232 
1420 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1246,6 +1434,24 @@ module.exports = function (chai) { 
     | 
|
| 
       1246 
1434 
     | 
    
         
             
                new Assertion(val, msg).to.equal(undefined);
         
     | 
| 
       1247 
1435 
     | 
    
         
             
              };
         
     | 
| 
       1248 
1436 
     | 
    
         | 
| 
      
 1437 
     | 
    
         
            +
              /**
         
     | 
| 
      
 1438 
     | 
    
         
            +
               * # .isDefined(value, [message])
         
     | 
| 
      
 1439 
     | 
    
         
            +
               *
         
     | 
| 
      
 1440 
     | 
    
         
            +
               * Assert `value` is not undefined.
         
     | 
| 
      
 1441 
     | 
    
         
            +
               *
         
     | 
| 
      
 1442 
     | 
    
         
            +
               *      var tea = 'cup of chai';
         
     | 
| 
      
 1443 
     | 
    
         
            +
               *      assert.isDefined(tea, 'no tea defined');
         
     | 
| 
      
 1444 
     | 
    
         
            +
               *
         
     | 
| 
      
 1445 
     | 
    
         
            +
               * @name isUndefined
         
     | 
| 
      
 1446 
     | 
    
         
            +
               * @param {*} value
         
     | 
| 
      
 1447 
     | 
    
         
            +
               * @param {String} message
         
     | 
| 
      
 1448 
     | 
    
         
            +
               * @api public
         
     | 
| 
      
 1449 
     | 
    
         
            +
               */
         
     | 
| 
      
 1450 
     | 
    
         
            +
             
     | 
| 
      
 1451 
     | 
    
         
            +
              assert.isDefined = function (val, msg) {
         
     | 
| 
      
 1452 
     | 
    
         
            +
                new Assertion(val, msg).to.not.equal(undefined);
         
     | 
| 
      
 1453 
     | 
    
         
            +
              };
         
     | 
| 
      
 1454 
     | 
    
         
            +
             
     | 
| 
       1249 
1455 
     | 
    
         
             
              /**
         
     | 
| 
       1250 
1456 
     | 
    
         
             
               * # .isFunction(value, [message])
         
     | 
| 
       1251 
1457 
     | 
    
         
             
               *
         
     | 
| 
         @@ -1333,7 +1539,7 @@ module.exports = function (chai) { 
     | 
|
| 
       1333 
1539 
     | 
    
         
             
               */
         
     | 
| 
       1334 
1540 
     | 
    
         | 
| 
       1335 
1541 
     | 
    
         
             
              assert.isNumber = function (val, msg) {
         
     | 
| 
       1336 
     | 
    
         
            -
                new Assertion(val, msg).to.be. 
     | 
| 
      
 1542 
     | 
    
         
            +
                new Assertion(val, msg).to.be.a('number');
         
     | 
| 
       1337 
1543 
     | 
    
         
             
              };
         
     | 
| 
       1338 
1544 
     | 
    
         | 
| 
       1339 
1545 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -1511,6 +1717,33 @@ module.exports = function (chai) { 
     | 
|
| 
       1511 
1717 
     | 
    
         
             
                new Assertion(fn, msg).to.not.throw(type);
         
     | 
| 
       1512 
1718 
     | 
    
         
             
              };
         
     | 
| 
       1513 
1719 
     | 
    
         | 
| 
      
 1720 
     | 
    
         
            +
              /**
         
     | 
| 
      
 1721 
     | 
    
         
            +
               * # .operator(val, operator, val2, [message])
         
     | 
| 
      
 1722 
     | 
    
         
            +
               *
         
     | 
| 
      
 1723 
     | 
    
         
            +
               * Compare two values using operator.
         
     | 
| 
      
 1724 
     | 
    
         
            +
               *
         
     | 
| 
      
 1725 
     | 
    
         
            +
               *      assert.operator(1, '<', 2, 'everything is ok');
         
     | 
| 
      
 1726 
     | 
    
         
            +
               *      assert.operator(1, '>', 2, 'this will fail');
         
     | 
| 
      
 1727 
     | 
    
         
            +
               *
         
     | 
| 
      
 1728 
     | 
    
         
            +
               * @name operator
         
     | 
| 
      
 1729 
     | 
    
         
            +
               * @param {*} object to test
         
     | 
| 
      
 1730 
     | 
    
         
            +
               * @param {String} operator
         
     | 
| 
      
 1731 
     | 
    
         
            +
               * @param {*} second object
         
     | 
| 
      
 1732 
     | 
    
         
            +
               * @param {String} message
         
     | 
| 
      
 1733 
     | 
    
         
            +
               * @api public
         
     | 
| 
      
 1734 
     | 
    
         
            +
               */
         
     | 
| 
      
 1735 
     | 
    
         
            +
             
     | 
| 
      
 1736 
     | 
    
         
            +
              assert.operator = function (val, operator, val2, msg) {
         
     | 
| 
      
 1737 
     | 
    
         
            +
                if (!~['==', '===', '>', '>=', '<', '<=', '!=', '!=='].indexOf(operator)) {
         
     | 
| 
      
 1738 
     | 
    
         
            +
                  throw new Error('Invalid operator "' + operator + '"');
         
     | 
| 
      
 1739 
     | 
    
         
            +
                }
         
     | 
| 
      
 1740 
     | 
    
         
            +
                var test = new Assertion(eval(val + operator + val2), msg);
         
     | 
| 
      
 1741 
     | 
    
         
            +
                test.assert(
         
     | 
| 
      
 1742 
     | 
    
         
            +
                    true === test.obj
         
     | 
| 
      
 1743 
     | 
    
         
            +
                  , 'expected ' + inspect(val) + ' to be ' + operator + ' ' + inspect(val2)
         
     | 
| 
      
 1744 
     | 
    
         
            +
                  , 'expected ' + inspect(val) + ' to not be ' + operator + ' ' + inspect(val2) );
         
     | 
| 
      
 1745 
     | 
    
         
            +
              };
         
     | 
| 
      
 1746 
     | 
    
         
            +
             
     | 
| 
       1514 
1747 
     | 
    
         
             
              /*!
         
     | 
| 
       1515 
1748 
     | 
    
         
             
               * Undocumented / untested
         
     | 
| 
       1516 
1749 
     | 
    
         
             
               */
         
     | 
| 
         @@ -1580,8 +1813,8 @@ module.exports = function (chai) { 
     | 
|
| 
       1580 
1813 
     | 
    
         
             
                  new Assertion(val1).to.equal(val2);
         
     | 
| 
       1581 
1814 
     | 
    
         
             
                };
         
     | 
| 
       1582 
1815 
     | 
    
         | 
| 
       1583 
     | 
    
         
            -
                should.throw = function (fn,  
     | 
| 
       1584 
     | 
    
         
            -
                  new Assertion(fn).to.throw( 
     | 
| 
      
 1816 
     | 
    
         
            +
                should.throw = function (fn, errt, errs) {
         
     | 
| 
      
 1817 
     | 
    
         
            +
                  new Assertion(fn).to.throw(errt, errs);
         
     | 
| 
       1585 
1818 
     | 
    
         
             
                };
         
     | 
| 
       1586 
1819 
     | 
    
         | 
| 
       1587 
1820 
     | 
    
         
             
                should.exist = function (val) {
         
     | 
| 
         @@ -1595,8 +1828,8 @@ module.exports = function (chai) { 
     | 
|
| 
       1595 
1828 
     | 
    
         
             
                  new Assertion(val1).to.not.equal(val2);
         
     | 
| 
       1596 
1829 
     | 
    
         
             
                };
         
     | 
| 
       1597 
1830 
     | 
    
         | 
| 
       1598 
     | 
    
         
            -
                should.not.throw = function (fn,  
     | 
| 
       1599 
     | 
    
         
            -
                  new Assertion(fn).to.not.throw( 
     | 
| 
      
 1831 
     | 
    
         
            +
                should.not.throw = function (fn, errt, errs) {
         
     | 
| 
      
 1832 
     | 
    
         
            +
                  new Assertion(fn).to.not.throw(errt, errs);
         
     | 
| 
       1600 
1833 
     | 
    
         
             
                };
         
     | 
| 
       1601 
1834 
     | 
    
         | 
| 
       1602 
1835 
     | 
    
         
             
                should.not.exist = function (val) {
         
     |