92 lines
2.5 KiB
JavaScript
92 lines
2.5 KiB
JavaScript
function ensurePromise(expr) {
|
|
var p;
|
|
try {
|
|
p = eval(expr);
|
|
} catch (e) {
|
|
testFailed("evaluating " + expr + " threw exception " + e);
|
|
return null;
|
|
}
|
|
|
|
if (!(p instanceof Promise)) {
|
|
testFailed(expr + " does not evaluate to a promise.");
|
|
return null;
|
|
}
|
|
|
|
return p;
|
|
}
|
|
|
|
function promiseShouldResolve(expr) {
|
|
return new Promise(function (done) {
|
|
var p = ensurePromise(expr);
|
|
if (!p) {
|
|
done();
|
|
return;
|
|
}
|
|
|
|
p.then(function (value) {
|
|
testPassed("promise " + expr + " fulfilled with " + value);
|
|
done();
|
|
})
|
|
.catch(function (reason) {
|
|
testFailed("promise " + expr + " rejected unexpectedly:" + reason);
|
|
done();
|
|
});
|
|
});
|
|
}
|
|
|
|
function promiseShouldReject(expr, reasonArg) {
|
|
return new Promise(function (done) {
|
|
var p = ensurePromise(expr);
|
|
if (!p) {
|
|
done();
|
|
return;
|
|
}
|
|
|
|
p.then(function () {
|
|
testFailed("promise " + expr + " fulfilled unexpectedly.");
|
|
done();
|
|
})
|
|
.catch(function (actualReason) {
|
|
if (!reasonArg) {
|
|
testPassed("promise " + expr + " rejected with " + actualReason);
|
|
} else {
|
|
var reasonValue;
|
|
try {
|
|
reasonValue = eval(reasonArg);
|
|
} catch (ex) {
|
|
debug("promiseShouldReject: Error evaluating reason: " + ex);
|
|
}
|
|
|
|
if (actualReason == reasonValue)
|
|
testPassed("promise " + expr + " rejected with " + actualReason);
|
|
else
|
|
testFailed("promise " + expr + " rejected with " + actualReason + "; expected reason " + reasonValue);
|
|
}
|
|
|
|
done();
|
|
});
|
|
});
|
|
}
|
|
|
|
function promiseShouldNotRejectWithTypeError(expr) {
|
|
return new Promise(function (done) {
|
|
var p = ensurePromise(expr);
|
|
if (!p) {
|
|
done();
|
|
return;
|
|
}
|
|
|
|
p.then(function () {
|
|
testPassed("promise " + expr + " did not reject with TypeError.");
|
|
done();
|
|
})
|
|
.catch(function (reason) {
|
|
if (reason instanceof TypeError)
|
|
testFailed("promise " + expr + " rejected with TypeError");
|
|
else
|
|
testPassed("promise " + expr + " did not reject with TypeError.");
|
|
done();
|
|
});
|
|
});
|
|
}
|