| 'use strict'; |
| |
| const common = require('../../common'); |
| |
| // This tests the promise-related n-api calls |
| |
| const assert = require('assert'); |
| const test_promise = require(`./build/${common.buildType}/test_promise`); |
| |
| // A resolution |
| { |
| const expected_result = 42; |
| const promise = test_promise.createPromise(); |
| promise.then( |
| common.mustCall(function(result) { |
| assert.strictEqual(result, expected_result); |
| }), |
| common.mustNotCall()); |
| test_promise.concludeCurrentPromise(expected_result, true); |
| } |
| |
| // A rejection |
| { |
| const expected_result = 'It\'s not you, it\'s me.'; |
| const promise = test_promise.createPromise(); |
| promise.then( |
| common.mustNotCall(), |
| common.mustCall(function(result) { |
| assert.strictEqual(result, expected_result); |
| })); |
| test_promise.concludeCurrentPromise(expected_result, false); |
| } |
| |
| // Chaining |
| { |
| const expected_result = 'chained answer'; |
| const promise = test_promise.createPromise(); |
| promise.then( |
| common.mustCall(function(result) { |
| assert.strictEqual(result, expected_result); |
| }), |
| common.mustNotCall()); |
| test_promise.concludeCurrentPromise(Promise.resolve('chained answer'), true); |
| } |
| |
| const promiseTypeTestPromise = test_promise.createPromise(); |
| assert.strictEqual(test_promise.isPromise(promiseTypeTestPromise), true); |
| test_promise.concludeCurrentPromise(undefined, true); |
| |
| const rejectPromise = Promise.reject(-1); |
| const expected_reason = -1; |
| assert.strictEqual(test_promise.isPromise(rejectPromise), true); |
| rejectPromise.catch((reason) => { |
| assert.strictEqual(reason, expected_reason); |
| }); |
| |
| assert.strictEqual(test_promise.isPromise(2.4), false); |
| assert.strictEqual(test_promise.isPromise('I promise!'), false); |
| assert.strictEqual(test_promise.isPromise(undefined), false); |
| assert.strictEqual(test_promise.isPromise(null), false); |
| assert.strictEqual(test_promise.isPromise({}), false); |