1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jsapi-tests/testBindCallable.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,32 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#include "jsapi-tests/tests.h" 1.9 + 1.10 +BEGIN_TEST(test_BindCallable) 1.11 +{ 1.12 + JS::RootedValue v(cx); 1.13 + EVAL("({ somename : 1717 })", &v); 1.14 + CHECK(v.isObject()); 1.15 + 1.16 + JS::RootedValue func(cx); 1.17 + EVAL("(function() { return this.somename; })", &func); 1.18 + CHECK(func.isObject()); 1.19 + 1.20 + JS::RootedObject funcObj(cx, JSVAL_TO_OBJECT(func)); 1.21 + JS::RootedObject vObj(cx, JSVAL_TO_OBJECT(v)); 1.22 + JSObject* newCallable = JS_BindCallable(cx, funcObj, vObj); 1.23 + CHECK(newCallable); 1.24 + 1.25 + JS::RootedValue retval(cx); 1.26 + JS::RootedValue fun(cx, JS::ObjectValue(*newCallable)); 1.27 + bool called = JS_CallFunctionValue(cx, JS::NullPtr(), fun, JS::HandleValueArray::empty(), &retval); 1.28 + CHECK(called); 1.29 + 1.30 + CHECK(JSVAL_IS_INT(retval)); 1.31 + 1.32 + CHECK(JSVAL_TO_INT(retval) == 1717); 1.33 + return true; 1.34 +} 1.35 +END_TEST(test_BindCallable)