summaryrefslogtreecommitdiff
path: root/test/addons-napi/test_promise/test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/addons-napi/test_promise/test.js')
-rw-r--r--test/addons-napi/test_promise/test.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/addons-napi/test_promise/test.js b/test/addons-napi/test_promise/test.js
new file mode 100644
index 0000000000..4c2a2e5e76
--- /dev/null
+++ b/test/addons-napi/test_promise/test.js
@@ -0,0 +1,60 @@
+'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');