forked from jamesshore/lets_code_javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_fail_fast_test.js
More file actions
61 lines (51 loc) · 1.85 KB
/
Copy path_fail_fast_test.js
File metadata and controls
61 lines (51 loc) · 1.85 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
// Copyright (c) 2013 Titanium I.T. LLC. All rights reserved. See LICENSE.TXT for details.
(function() {
"use strict";
var failFast = require("./fail_fast.js");
var FailFastException = failFast.FailFastException;
var assert = require("_assert");
describe("SHARED: Fail Fast module", function() {
it("uses custom exception", function() {
try {
throw new FailFastException("foo");
}
catch (e) {
assert.equal(e.name, "FailFastException");
assert.equal(e.constructor, FailFastException);
assert.equal("" + e, "FailFastException");
}
});
it("checks if variable is defined", function() {
assert.doesNotThrow(unlessDefined("foo"));
assert.doesNotThrow(unlessDefined(null));
assert.throws(unlessDefined(undefined), /^Required variable was not defined$/);
assert.throws(unlessDefined(undefined, "myVariable"), /^Required variable \[myVariable\] was not defined$/);
function unlessDefined(variable, variableName) {
return function() {
failFast.unlessDefined(variable, variableName);
};
}
});
it("checks if expression is true", function() {
assert.doesNotThrow(unlessTrue(true));
assert.throws(unlessTrue(false), /^Expected condition to be true$/);
assert.throws(unlessTrue(false, "a message"), /^a message$/);
assert.throws(unlessTrue("foo"), /^Expected condition to be true or false$/);
assert.throws(unlessTrue("foo", "ignoredMessage"), /^Expected condition to be true or false$/);
function unlessTrue(variable, message) {
return function() {
failFast.unlessTrue(variable, message);
};
}
});
it("fails when statement is unreachable", function() {
assert.throws(unreachable(), /^Unreachable code executed$/);
assert.throws(unreachable("foo"), /^foo$/);
function unreachable(message) {
return function() {
failFast.unreachable(message);
};
}
});
});
}());