forked from jamesshore/lets_code_javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_assert.js
More file actions
87 lines (77 loc) · 2.47 KB
/
_assert.js
File metadata and controls
87 lines (77 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Copyright (c) 2014-2015 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
(function() {
"use strict";
// We use Proclaim rather than Chai because Chai doesn't support IE 8.
// But Proclaim error messages are terrible, so we end up doing a lot ourselves.
var assert = require("./vendor/proclaim-2.0.0.js");
exports.fail = function(message) {
assert.fail(null, null, message);
};
exports.defined = function(value, message) {
message = message ? message + ": " : "";
assert.isDefined(value, message + "expected any value, but was undefined");
};
exports.equal = function(actual, expected, message) {
message = message ? message + ": " : "";
var expectedType = typeof expected;
var actualType = typeof actual;
assert.strictEqual(
actualType,
expectedType,
message + "expected " + expectedType + " '" + expected + "', but got " + actualType + " '" + actual + "'"
);
assert.strictEqual(
actual,
expected,
message + "expected '" + expected + "', but got '" + actual + "'"
);
};
exports.deepEqual = function(actual, expected, message) {
message = message ? message + ": " : "";
assert.deepEqual(
actual,
expected,
message + "expected " + JSON.stringify(expected) + ", but got " + JSON.stringify(actual));
};
exports.matches = function(actual, expectedRegex, message) {
message = message ? message + ": " : "";
assert.match(
actual,
expectedRegex,
message + "expected string to match " + expectedRegex + ", but got '" + actual + "'"
);
};
exports.doesNotThrow = function(fn, message) {
try {
fn();
}
catch (e) {
message = message ? message + ": " : "";
exports.fail(message + "expected no exception, but got '" + e + "'");
}
};
exports.throws = function(fn, expected, message) {
message = message ? message + ": " : "";
var noException = false;
try {
fn();
noException = true;
}
catch (e) {
if (typeof expected === "string") {
assert.strictEqual(
e.message,
expected,
message + "expected exception message to be '" + expected + "', but was '" + e.message + "'"
);
}
else if (expected instanceof RegExp) assert.match(
e.message,
expected,
message + "expected exception message to match " + expected + ", but was '" + e.message + "'"
);
else if (expected !== undefined) throw new Error("Unrecognized 'expected' parameter in assertion: " + expected);
}
if (noException) exports.fail(message + "expected exception");
};
}());