You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

60 lines
2.0 KiB

'use strict';
const common = require('../../common');
const test_promise = require(`./build/${common.buildType}/test_promise`);
const assert = require('assert');
let expected_result, promise;
// A resolution
expected_result = 42;
promise = test_promise.createPromise();
promise.then(
common.mustCall(function(result) {
assert.strictEqual(result, expected_result,
'promise resolved as expected');
}),
common.mustNotCall());
test_promise.concludeCurrentPromise(expected_result, true);
// A rejection
expected_result = 'It\'s not you, it\'s me.';
promise = test_promise.createPromise();
promise.then(
common.mustNotCall(),
common.mustCall(function(result) {
assert.strictEqual(result, expected_result,
'promise rejected as expected');
}));
test_promise.concludeCurrentPromise(expected_result, false);
// Chaining
promise = test_promise.createPromise();
promise.then(
common.mustCall(function(result) {
assert.strictEqual(result, 'chained answer',
'resolving with a promise chains properly');
}),
common.mustNotCall());
test_promise.concludeCurrentPromise(Promise.resolve('chained answer'), true);
assert.strictEqual(test_promise.isPromise(promise), true,
'natively created promise is recognized as a promise');
assert.strictEqual(test_promise.isPromise(Promise.reject(-1)), true,
'Promise created with JS is recognized as a promise');
assert.strictEqual(test_promise.isPromise(2.4), false,
'Number is recognized as not a promise');
assert.strictEqual(test_promise.isPromise('I promise!'), false,
'String is recognized as not a promise');
assert.strictEqual(test_promise.isPromise(undefined), false,
'undefined is recognized as not a promise');
assert.strictEqual(test_promise.isPromise(null), false,
'null is recognized as not a promise');
assert.strictEqual(test_promise.isPromise({}), false,
'an object is recognized as not a promise');