Create meaningful tests for native promise handlers.

This commit is contained in:
Josh Matthews 2016-09-05 11:53:06 -04:00
parent 57b3ccd38c
commit ae81ab3972
3 changed files with 23 additions and 6 deletions

View file

@ -660,6 +660,14 @@ impl TestBindingMethods for TestBinding {
Promise::Reject(self.global().r(), cx, v)
}
fn PromiseResolveNative(&self, cx: *mut JSContext, p: &Promise, v: HandleValue) {
p.maybe_resolve(cx, v);
}
fn PromiseRejectNative(&self, cx: *mut JSContext, p: &Promise, v: HandleValue) {
p.maybe_reject(cx, v);
}
#[allow(unrooted_must_root)]
fn PromiseNativeHandler(&self,
resolve: Option<Rc<SimpleCallback>>,

View file

@ -516,6 +516,8 @@ interface TestBinding {
void acceptPromise(Promise<DOMString> string);
void acceptNullablePromise(Promise<DOMString>? string);
Promise<any> promiseNativeHandler(SimpleCallback? resolve, SimpleCallback? reject);
void promiseResolveNative(Promise<any> p, any value);
void promiseRejectNative(Promise<any> p, any value);
void panic();
};

View file

@ -23,18 +23,25 @@
promise_test(function(test) {
var t = new TestBinding;
var resolved;
var p = t.promiseNativeHandler(function(v) {
assert_equals(v, 'success');
resolved = v;
}, null);
return Promise.resolve('success').then(p);
t.promiseResolveNative(p, 'success');
return p.then(function() {
assert_equals(resolved, 'success')
});
}, 'Native resolve callback gets argument');
promise_test(function(test) {
var t = new TestBinding;
var rejected;
var p = t.promiseNativeHandler(null, function(v) {
assert_equals(v, 'success');
rejected = v;
});
p.then(test.unreached_func());
return Promise.resolve('success').then(p);
}, 'Native resolve callback gets argument');
t.promiseRejectNative(p, 'success');
return p.catch(function() {
assert_equals(rejected, 'success')
});
}, 'Native reject callback gets argument');
</script>