- Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtinytest.js
More file actions
Latest commit
116 lines (109 loc) · 3.22 KB
/
Copy pathtinytest.js
File metadata and controls
116 lines (109 loc) · 3.22 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
/**
* Very simple in-browser unit-test library, with zero deps.
*
* Background turns green if all tests pass, otherwise red.
* View the JavaScript console to see failure reasons.
*
* Example:
*
* adder.js (code under test)
*
* function add(a, b) {
* return a + b;
* }
*
* adder-test.html (tests - just open a browser to see results)
*
* <script src="tinytest.js"></script>
* <script src="adder.js"></script>
* <script>
*
* tests({
*
* 'adds numbers': function() {
* eq(6, add(2, 4));
* eq(6.6, add(2.6, 4));
* },
*
* 'subtracts numbers': function() {
* eq(-2, add(2, -4));
* },
*
* });
* </script>
*
* That's it. Stop using over complicated frameworks that get in your way.
*
* -Joe Walnes
* MIT License. See https://github.com/joewalnes/jstinytest/
*/
constsimpleTestHelper={
renderTestingCasesToDom: function(tests,failures){
letnumberOfTestCases=Object.keys(tests).length;
lettemplateString=`Ran ${numberOfTestCases} tests: ${numberOfTestCases-
failures} successes, ${failures} failures`;
letelement=document.createElement('h1');
element.textContent=templateString;
document.body.appendChild(element);
}
};
constTinyTest={
run: function(tests){
letfailures=0;
for(lettestNameintests){
lettestAction=tests[testName];
try{
testAction();
console.log(
'%c'+testName,
'color: green; font-weight: bold;'
);
}catch(e){
failures++;
console.groupCollapsed(
'%c'+testName,
'color: red; font-weight: bold;'
);
console.error('%c'+e.stack,'color: red;');
console.trace('%c'+'Stack trace','color: purple;');
console.groupEnd();
}
}
setTimeout(function(){
// Give document a chance to complete
if(window.document&&document.body){
document.body.style.backgroundColor=
failures==0 ? '#99ff99' : '#ff9999';
simpleTestHelper.renderTestingCasesToDom(tests,failures);
}
},0);
},
fail: function(msg){
thrownewError('fail(): '+msg);
},
assert: function(value,msg){
if(!value){
thrownewError('assert(): '+msg);
}
},
assertEquals: function(expected,actual){
if(expected!=actual){
thrownewError(
'assertEquals() "'+expected+'" != "'+actual+'"'
);
}
},
assertStrictEquals: function(expected,actual){
if(expected!==actual){
thrownewError(
'assertStrictEquals() "'+expected+'" !== "'+actual+'"'
);
}
}
};
constfail=TinyTest.fail,
assert=TinyTest.assert,
assertEquals=TinyTest.assertEquals,
eq=TinyTest.assertEquals,// alias for assertEquals
assertStrictEquals=TinyTest.assertStrictEquals,
tests=TinyTest.run;