Skip to content

Commit 8cceb27

Browse files
committed
add tests
1 parent cdbeccc commit 8cceb27

File tree

1 file changed

+199
-0
lines changed

1 file changed

+199
-0
lines changed

test/synchronous-inspection-tests.js

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
var assert = require('better-assert');
2+
var Promise = require('../');
3+
4+
describe('synchronous-inspection-tests', function () {
5+
it('cannot synchronously inspect before enabling synchronous inspection', function() {
6+
var finished = null;
7+
var fulfilledPromise = new Promise(function(resolve, reject) {
8+
setTimeout(function() {
9+
resolve();
10+
}, 500);
11+
});
12+
var rejectedPromise = new Promise(function(resolve, reject) {
13+
setTimeout(function() {
14+
reject();
15+
}, 500);
16+
});
17+
18+
assert(fulfilledPromise.value == undefined);
19+
assert(fulfilledPromise.reason == undefined);
20+
assert(fulfilledPromise.isFulfilled == undefined);
21+
assert(fulfilledPromise.isPending == undefined);
22+
assert(fulfilledPromise.isRejected == undefined);
23+
24+
assert(rejectedPromise.value == undefined);
25+
assert(rejectedPromise.reason == undefined);
26+
assert(rejectedPromise.isFulfilled == undefined);
27+
assert(rejectedPromise.isPending == undefined);
28+
assert(rejectedPromise.isRejected == undefined);
29+
30+
setTimeout(function() {
31+
assert(fulfilledPromise.value == undefined);
32+
assert(fulfilledPromise.reason == undefined);
33+
assert(fulfilledPromise.isFulfilled == undefined);
34+
assert(fulfilledPromise.isPending == undefined);
35+
assert(fulfilledPromise.isRejected == undefined);
36+
37+
assert(rejectedPromise.value == undefined);
38+
assert(rejectedPromise.reason == undefined);
39+
assert(rejectedPromise.isFulfilled == undefined);
40+
assert(rejectedPromise.isPending == undefined);
41+
assert(rejectedPromise.isRejected == undefined);
42+
}, 500);
43+
44+
});
45+
46+
it('can poll a promise to see if it is resolved', function () {
47+
Promise.enableSynchronous();
48+
var finished = null;
49+
var fulfilledPromise = new Promise(function(resolve, reject) {
50+
var interval = setInterval(function() {
51+
if (finished !== null) {
52+
clearTimeout(interval);
53+
54+
if (finished) {
55+
resolve(true);
56+
}
57+
else {
58+
reject(false);
59+
}
60+
}
61+
}, 10);
62+
});
63+
64+
assert(fulfilledPromise.isPending());
65+
assert(!fulfilledPromise.isFulfilled());
66+
assert(!fulfilledPromise.isRejected());
67+
68+
finished = true;
69+
70+
setTimeout(function () {
71+
assert(fulfilledPromise.isFulfilled());
72+
assert(!fulfilledPromise.isRejected());
73+
assert(fulfilledPromise.value());
74+
assert(!fulfilledPromise.isPending());
75+
}, 30);
76+
});
77+
78+
it('can poll a promise to see if it is rejected', function () {
79+
Promise.enableSynchronous();
80+
var finished = null;
81+
var fulfilledPromise = new Promise(function(resolve, reject) {
82+
var interval = setInterval(function() {
83+
if (finished !== null) {
84+
clearTimeout(interval);
85+
86+
if (finished) {
87+
resolve(true);
88+
}
89+
else {
90+
reject(false);
91+
}'s'
92+
}
93+
}, 10);
94+
});
95+
96+
assert(fulfilledPromise.isPending());
97+
assert(!fulfilledPromise.isFulfilled());
98+
assert(!fulfilledPromise.isRejected());
99+
100+
finished = false;
101+
102+
setTimeout(function () {
103+
assert(!fulfilledPromise.isFulfilled());
104+
assert(fulfilledPromise.isRejected());
105+
assert(!fulfilledPromise.reason());
106+
assert(!fulfilledPromise.isPending());
107+
}, 30);
108+
});
109+
110+
it('will throw an error if getting a value of an unfulfilled promise', function () {
111+
Promise.enableSynchronous();
112+
var finished = null;
113+
var fulfilledPromise = new Promise(function(resolve, reject) {
114+
var interval = setInterval(function() {
115+
if (finished !== null) {
116+
clearTimeout(interval);
117+
118+
if (finished) {
119+
resolve(true);
120+
}
121+
else {
122+
reject(false);
123+
}
124+
}
125+
}, 10);
126+
});
127+
128+
assert(fulfilledPromise.isPending());
129+
assert(!fulfilledPromise.isFulfilled());
130+
assert(!fulfilledPromise.isRejected());
131+
132+
try {
133+
fulfilledPromise.value();
134+
135+
assert(false);
136+
}
137+
catch (e) {
138+
assert(true);
139+
}
140+
141+
finished = false;
142+
143+
setTimeout(function () {
144+
try {
145+
fulfilledPromise.value();
146+
147+
assert(false);
148+
}
149+
catch (e) {
150+
assert(true);
151+
}
152+
}, 30);
153+
});
154+
155+
it('will throw an error if getting a reason of a non-rejected promise', function () {
156+
Promise.enableSynchronous();
157+
var finished = null;
158+
var fulfilledPromise = new Promise(function(resolve, reject) {
159+
var interval = setInterval(function() {
160+
if (finished !== null) {
161+
clearTimeout(interval);
162+
163+
if (finished) {
164+
resolve(true);
165+
}
166+
else {
167+
reject(false);
168+
}
169+
}
170+
}, 10);
171+
});
172+
173+
assert(fulfilledPromise.isPending());
174+
assert(!fulfilledPromise.isFulfilled());
175+
assert(!fulfilledPromise.isRejected());
176+
177+
try {
178+
fulfilledPromise.reason();
179+
180+
assert(false);
181+
}
182+
catch (e) {
183+
assert(true);
184+
}
185+
186+
finished = true;
187+
188+
setTimeout(function () {
189+
try {
190+
fulfilledPromise.reason();
191+
192+
assert(false);
193+
}
194+
catch (e) {
195+
assert(true);
196+
}
197+
}, 30);
198+
});
199+
});

0 commit comments

Comments
 (0)