forked from mihaifm/linq
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestutils.js
More file actions
125 lines (96 loc) · 2.37 KB
/
testutils.js
File metadata and controls
125 lines (96 loc) · 2.37 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
const assert = require('assert').strict;
var tests = []
var failedTests = []
var currentModule = "";
var numAssertions = 0;
var assertionIndex = 0;
function init() {
tests = []
numAssertions = 0
}
function test(name, run) {
tests.push({name, run, module: currentModule})
}
function testModule(name) {
currentModule = name;
}
function deepEqual(x, y) {
numAssertions++
assertionIndex++
try {
assert.deepEqual(x, y);
}
catch(e) {
throw `[deepEqual] Assertion ${assertionIndex} failed`;
}
return true;
}
function notDeepEqual(x, y) {
numAssertions++
assertionIndex++
try {
assert.deepEqual(x, y);
}
catch(e) {
return true;
}
throw `[deepEqual] Assertion ${assertionIndex} failed`;
}
function strictEqual(x, y) {
numAssertions++
assertionIndex++
if (x === y)
return true;
throw `[deepEqual] Assertion ${assertionIndex} failed`;
}
function strictNotEqual(x, y) {
numAssertions++
assertionIndex++
if (x !== y)
return true;
throw `[strictNotEqual] Assertion ${assertionIndex} failed`;
}
function equal(x, y) {
numAssertions++
assertionIndex++
if (x == y)
return true;
throw `[equal] Assertion ${assertionIndex} failed`;
}
function notEqual(x, y) {
numAssertions++
assertionIndex++
if (x != y)
return true;
throw `[notEqual] Assertion ${assertionIndex} failed`;
}
function ok(condition) {
numAssertions++
assertionIndex++
if (condition == true)
return true;
throw `[ok] Assertion ${assertionIndex} failed`
}
function runAll(showExceptions) {
tests.forEach(test => {
try {
assertionIndex = 0;
test.run();
}
catch (e) {
let info = { module: test.module, test: test.name, assertion: assertionIndex }
failedTests.push(info);
if (showExceptions) {
console.log("Failed: ", info)
throw e;
}
}
})
console.log(`Tests: ${tests.length}`)
console.log(`Assertions: ${numAssertions}`)
console.log(`Failed tests: ${failedTests.length}`)
}
function getFailedTests() {
return failedTests;
}
module.exports = { init, test, testModule, getFailedTests, runAll, deepEqual, notDeepEqual, strictEqual, strictNotEqual, equal, notEqual, ok }