Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / resources / chromeos / chromevox / testing / assert_additions.js
blobc51cbc7c6385e984fe92e0c227aa6ba5a26dfb2d
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.
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   }
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: ' + obj);
24   }
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   }
45   throw new Error('Expected to throw exception ' + error + ' - ' + msg);
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   }
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   }
83 assertSame = assertEquals;
84 assertNotSame = assertNotEquals;