1'use strict'; 2 3const common = require('../../common'); 4 5// This tests the promise-related n-api calls 6 7const assert = require('assert'); 8const test_promise = require(`./build/${common.buildType}/test_promise`); 9 10// A resolution 11{ 12 const expected_result = 42; 13 const promise = test_promise.createPromise(); 14 promise.then( 15 common.mustCall(function(result) { 16 assert.strictEqual(result, expected_result); 17 }), 18 common.mustNotCall()); 19 test_promise.concludeCurrentPromise(expected_result, true); 20} 21 22// A rejection 23{ 24 const expected_result = 'It\'s not you, it\'s me.'; 25 const promise = test_promise.createPromise(); 26 promise.then( 27 common.mustNotCall(), 28 common.mustCall(function(result) { 29 assert.strictEqual(result, expected_result); 30 })); 31 test_promise.concludeCurrentPromise(expected_result, false); 32} 33 34// Chaining 35{ 36 const expected_result = 'chained answer'; 37 const promise = test_promise.createPromise(); 38 promise.then( 39 common.mustCall(function(result) { 40 assert.strictEqual(result, expected_result); 41 }), 42 common.mustNotCall()); 43 test_promise.concludeCurrentPromise(Promise.resolve('chained answer'), true); 44} 45 46const promiseTypeTestPromise = test_promise.createPromise(); 47assert.strictEqual(test_promise.isPromise(promiseTypeTestPromise), true); 48test_promise.concludeCurrentPromise(undefined, true); 49 50const rejectPromise = Promise.reject(-1); 51const expected_reason = -1; 52assert.strictEqual(test_promise.isPromise(rejectPromise), true); 53rejectPromise.catch((reason) => { 54 assert.strictEqual(reason, expected_reason); 55}); 56 57assert.strictEqual(test_promise.isPromise(2.4), false); 58assert.strictEqual(test_promise.isPromise('I promise!'), false); 59assert.strictEqual(test_promise.isPromise(undefined), false); 60assert.strictEqual(test_promise.isPromise(null), false); 61assert.strictEqual(test_promise.isPromise({}), false); 62