34 lines
874 B
JavaScript
34 lines
874 B
JavaScript
var assert = require("assert");
|
|
|
|
exports.check = function check(g, yields, returnValue) {
|
|
for (var i = 0; i < yields.length; ++i) {
|
|
var info = i > 0 ? g.next(i) : g.next();
|
|
assert.deepEqual(info.value, yields[i]);
|
|
assert.strictEqual(info.done, false);
|
|
}
|
|
|
|
assert.deepEqual(
|
|
i > 0 ? g.next(i) : g.next(),
|
|
{ value: returnValue, done: true }
|
|
);
|
|
};
|
|
|
|
// A version of `throw` whose behavior can't be statically analyzed.
|
|
// Useful for testing dynamic exception dispatching.
|
|
exports.raise = function raise(argument) {
|
|
throw argument;
|
|
};
|
|
|
|
exports.assertAlreadyFinished = function assertAlreadyFinished(generator) {
|
|
try {
|
|
generator.next();
|
|
assert.ok(false, "should have thrown an exception");
|
|
} catch (err) {
|
|
assert.ok(err instanceof Error);
|
|
assert.strictEqual(
|
|
err.message,
|
|
"Generator has already finished"
|
|
);
|
|
}
|
|
};
|