Home | History | Annotate | Download | only in testing
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 /**
      6  * Asserts that a given argument's value is undefined.
      7  * @param {object} a The argument to check.
      8  */
      9 function assertUndefined(a) {
     10   if (a !== undefined) {
     11     throw new Error('Assertion failed: expected undefined');
     12   }
     13 }
     14 
     15 /**
     16  * Asserts that the argument is neither null nor undefined.
     17  * @param {object} obj The argument to check.
     18  * @param {string=} opt_message Error message if the condition is not met.
     19  */
     20 function assertNotNullNorUndefined(obj, opt_message) {
     21   if (obj === undefined || obj === null) {
     22     throw new Error('Can\'t be null or undefined: ' + (opt_message || '') +
     23         '\n' + 'Actual: ' + a);
     24   }
     25 }
     26 
     27 /**
     28  * Asserts that a given function call throws an exception.
     29  * @param {string} msg Message to print if exception not thrown.
     30  * @param {Function} fn The function to call.
     31  * @param {string} error The name of the exception we expect {@code fn} to
     32  *     throw.
     33  */
     34 function assertException(msg, fn, error) {
     35   try {
     36     fn();
     37   } catch (e) {
     38     if (error && e.name != error) {
     39       throw new Error('Expected to throw ' + error + ' but threw ' + e.name +
     40           ' - ' + msg);
     41     }
     42     return;
     43   }
     44 
     45   throw new Error('Expected to throw exception ' + error + ' - ' + msg);
     46 }
     47 
     48 /**
     49  * Asserts that two arrays of strings are equal.
     50  * @param {Array.<string>} array1 The expected array.
     51  * @param {Array.<string>} array2 The test array.
     52  */
     53 function assertEqualStringArrays(array1, array2) {
     54   var same = true;
     55   if (array1.length != array2.length) {
     56     same = false;
     57   }
     58   for (var i = 0; i < Math.min(array1.length, array2.length); i++) {
     59     if (array1[i].trim() != array2[i].trim()) {
     60       same = false;
     61     }
     62   }
     63   if (!same) {
     64     throw new Error('Expected ' + JSON.stringify(array1) +
     65                     ', got ' + JSON.stringify(array2));
     66   }
     67 }
     68 
     69 /**
     70  * Asserts that two objects have the same JSON serialization.
     71  * @param {Object} expected The expected object.
     72  * @param {Object} actual The actual object.
     73  * @param {string=} opt_message Message used for errors.
     74  */
     75 function assertEqualsJSON(expected, actual, opt_message) {
     76   if (JSON.stringify(actual) !== JSON.stringify(expected)) {
     77     throw new Error((opt_message ? opt_message + '\n' : '') +
     78         'Expected ' + JSON.stringify(expected) + '\n' +
     79         'Got      ' + JSON.stringify(actual));
     80   }
     81 }
     82 
     83 assertSame = assertEquals;
     84 assertNotSame = assertNotEquals;
     85