X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Fauto%2Fdeclarative%2Fqjsengine%2Ftst_qjsengine.cpp;h=092b997b8d77618c226eec759c585b14271992f5;hb=45b14259fc0cf704692df1c00da511527d1fba1d;hp=1c29391e0f539b6a4217749111d24684b0e90820;hpb=7f20428c91bad817b2d350536756dd55a8d2103b;p=profile%2Fivi%2Fqtdeclarative.git diff --git a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp index 1c29391..092b997 100644 --- a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp @@ -1,8 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite of the Qt Toolkit. ** @@ -35,6 +34,7 @@ ** ** ** +** ** $QT_END_LICENSE$ ** ****************************************************************************/ @@ -52,9 +52,6 @@ Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QObjectList) -//TESTED_CLASS= -//TESTED_FILES= - // The JavaScriptCore GC marks the C stack. To try to ensure that there is // no JSObject* left in stack memory by the compiler, we call this function // to zap some bytes of memory before calling collectGarbage(). @@ -318,6 +315,7 @@ private slots: void dateConversionJSQt(); void dateConversionQtJS(); void functionPrototypeExtensions(); + void threadedEngine(); }; tst_QJSEngine::tst_QJSEngine() @@ -438,7 +436,7 @@ void tst_QJSEngine::newFunction() { QScriptValue fun = eng.newFunction(myFunction); QCOMPARE(fun.isValid(), true); - QCOMPARE(fun.isFunction(), true); + QCOMPARE(fun.isCallable(), true); QCOMPARE(fun.isObject(), true); QCOMPARE(fun.scriptClass(), (QScriptClass*)0); // a prototype property is automatically constructed @@ -451,11 +449,11 @@ void tst_QJSEngine::newFunction() } // prototype should be Function.prototype QCOMPARE(fun.prototype().isValid(), true); - QCOMPARE(fun.prototype().isFunction(), true); + QCOMPARE(fun.prototype().isCallable(), true); QCOMPARE(fun.prototype().strictlyEquals(eng.evaluate("Function.prototype")), true); QCOMPARE(fun.call().isNull(), true); - QCOMPARE(fun.construct().isObject(), true); + QCOMPARE(fun.callAsConstructor().isObject(), true); } } @@ -464,7 +462,7 @@ void tst_QJSEngine::newFunctionWithArg() QScriptEngine eng; { QScriptValue fun = eng.newFunction(myFunctionWithVoidArg, (void*)this); - QVERIFY(fun.isFunction()); + QVERIFY(fun.isCallable()); QCOMPARE(fun.scriptClass(), (QScriptClass*)0); // a prototype property is automatically constructed { @@ -476,11 +474,11 @@ void tst_QJSEngine::newFunctionWithArg() } // prototype should be Function.prototype QCOMPARE(fun.prototype().isValid(), true); - QCOMPARE(fun.prototype().isFunction(), true); + QCOMPARE(fun.prototype().isCallable(), true); QCOMPARE(fun.prototype().strictlyEquals(eng.evaluate("Function.prototype")), true); QCOMPARE(fun.call().isNull(), true); - QCOMPARE(fun.construct().isObject(), true); + QCOMPARE(fun.callAsConstructor().isObject(), true); } } @@ -491,11 +489,11 @@ void tst_QJSEngine::newFunctionWithProto() QScriptValue proto = eng.newObject(); QScriptValue fun = eng.newFunction(myFunction, proto); QCOMPARE(fun.isValid(), true); - QCOMPARE(fun.isFunction(), true); + QCOMPARE(fun.isCallable(), true); QCOMPARE(fun.isObject(), true); // internal prototype should be Function.prototype QCOMPARE(fun.prototype().isValid(), true); - QCOMPARE(fun.prototype().isFunction(), true); + QCOMPARE(fun.prototype().isCallable(), true); QCOMPARE(fun.prototype().strictlyEquals(eng.evaluate("Function.prototype")), true); // public prototype should be the one we passed QCOMPARE(fun.property("prototype").strictlyEquals(proto), true); @@ -504,30 +502,30 @@ void tst_QJSEngine::newFunctionWithProto() QCOMPARE(proto.propertyFlags("constructor"), QScriptValue::SkipInEnumeration); QCOMPARE(fun.call().isNull(), true); - QCOMPARE(fun.construct().isObject(), true); + QCOMPARE(fun.callAsConstructor().isObject(), true); } // whether the return value is correct { QScriptValue fun = eng.newFunction(myFunctionThatReturns); QCOMPARE(fun.isValid(), true); - QCOMPARE(fun.isFunction(), true); + QCOMPARE(fun.isCallable(), true); QCOMPARE(fun.isObject(), true); QScriptValue result = fun.call(); QCOMPARE(result.isNumber(), true); - QCOMPARE(result.toInt32(), 42); + QCOMPARE(result.toInt(), 42); } // whether the return value is assigned to the correct engine { QScriptValue fun = eng.newFunction(myFunctionThatReturnsWithoutEngine); QCOMPARE(fun.isValid(), true); - QCOMPARE(fun.isFunction(), true); + QCOMPARE(fun.isCallable(), true); QCOMPARE(fun.isObject(), true); QScriptValue result = fun.call(); QCOMPARE(result.engine(), &eng); QCOMPARE(result.isNumber(), true); - QCOMPARE(result.toInt32(), 1024); + QCOMPARE(result.toInt(), 1024); } // whether the return value is undefined when returning a value with wrong engine { @@ -535,7 +533,7 @@ void tst_QJSEngine::newFunctionWithProto() QScriptValue fun = eng.newFunction(myFunctionThatReturnsWrongEngine, reinterpret_cast(&wrongEngine)); QCOMPARE(fun.isValid(), true); - QCOMPARE(fun.isFunction(), true); + QCOMPARE(fun.isCallable(), true); QCOMPARE(fun.isObject(), true); QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call(): Value from different engine returned from native function, returning undefined value instead."); @@ -549,24 +547,24 @@ void tst_QJSEngine::newFunctionWithProto() QScriptValue fun = eng.newFunction(sumFunction); QCOMPARE(fun.isValid(), true); - QCOMPARE(fun.isFunction(), true); + QCOMPARE(fun.isCallable(), true); QCOMPARE(fun.isObject(), true); QScriptValue result = fun.call(); QCOMPARE(result.isNumber(), true); - QCOMPARE(result.toInt32(), 0); + QCOMPARE(result.toInt(), 0); result = fun.call(QScriptValue(), QScriptValueList() << 1); QCOMPARE(result.isNumber(), true); - QCOMPARE(result.toInt32(), 1); + QCOMPARE(result.toInt(), 1); result = fun.call(QScriptValue(), QScriptValueList() << 1 << 2 << 3); QCOMPARE(result.isNumber(), true); - QCOMPARE(result.toInt32(), 6); + QCOMPARE(result.toInt(), 6); result = fun.call(QScriptValue(), QScriptValueList() << 1 << 2 << 3 << 4); QCOMPARE(result.isNumber(), true); - QCOMPARE(result.toInt32(), 10); + QCOMPARE(result.toInt(), 10); } } #endif @@ -577,7 +575,7 @@ void tst_QJSEngine::newObject() QJSValue object = eng.newObject(); QCOMPARE(object.isValid(), true); QCOMPARE(object.isObject(), true); - QCOMPARE(object.isFunction(), false); + QCOMPARE(object.isCallable(), false); // ###FIXME: No QScriptClass QCOMPARE(object.scriptClass(), (QScriptClass*)0); // prototype should be Object.prototype QCOMPARE(object.prototype().isValid(), true); @@ -592,7 +590,7 @@ void tst_QJSEngine::newArray() QCOMPARE(array.isValid(), true); QCOMPARE(array.isArray(), true); QCOMPARE(array.isObject(), true); - QVERIFY(!array.isFunction()); + QVERIFY(!array.isCallable()); // ###FIXME: No QScriptClass QCOMPARE(array.scriptClass(), (QScriptClass*)0); // prototype should be Array.prototype QCOMPARE(array.prototype().isValid(), true); @@ -606,27 +604,27 @@ void tst_QJSEngine::newArray_HooliganTask218092() { QJSValue ret = eng.evaluate("[].splice(0, 0, 'a')"); QVERIFY(ret.isArray()); - QCOMPARE(ret.property("length").toInt32(), 0); + QCOMPARE(ret.property("length").toInt(), 0); } { QJSValue ret = eng.evaluate("['a'].splice(0, 1, 'b')"); QVERIFY(ret.isArray()); - QCOMPARE(ret.property("length").toInt32(), 1); + QCOMPARE(ret.property("length").toInt(), 1); } { QJSValue ret = eng.evaluate("['a', 'b'].splice(0, 1, 'c')"); QVERIFY(ret.isArray()); - QCOMPARE(ret.property("length").toInt32(), 1); + QCOMPARE(ret.property("length").toInt(), 1); } { QJSValue ret = eng.evaluate("['a', 'b', 'c'].splice(0, 2, 'd')"); QVERIFY(ret.isArray()); - QCOMPARE(ret.property("length").toInt32(), 2); + QCOMPARE(ret.property("length").toInt(), 2); } { QJSValue ret = eng.evaluate("['a', 'b', 'c'].splice(1, 2, 'd', 'e', 'f')"); QVERIFY(ret.isArray()); - QCOMPARE(ret.property("length").toInt32(), 2); + QCOMPARE(ret.property("length").toInt(), 2); } } @@ -641,15 +639,15 @@ void tst_QJSEngine::newArray_HooliganTask233836() { QJSValue ret = eng.newArray(0xFFFFFFFF); QEXPECT_FAIL("", "The maximum length of arrays is defined by v8 currently and differs from QtScript", Abort); - QCOMPARE(ret.property("length").toUInt32(), uint(0xFFFFFFFF)); + QCOMPARE(ret.property("length").toUInt(), uint(0xFFFFFFFF)); ret.setProperty(0xFFFFFFFF, 123); - QCOMPARE(ret.property("length").toUInt32(), uint(0xFFFFFFFF)); + QCOMPARE(ret.property("length").toUInt(), uint(0xFFFFFFFF)); QVERIFY(ret.property(0xFFFFFFFF).isNumber()); - QCOMPARE(ret.property(0xFFFFFFFF).toInt32(), 123); + QCOMPARE(ret.property(0xFFFFFFFF).toInt(), 123); ret.setProperty(123, 456); - QCOMPARE(ret.property("length").toUInt32(), uint(0xFFFFFFFF)); + QCOMPARE(ret.property("length").toUInt(), uint(0xFFFFFFFF)); QVERIFY(ret.property(123).isNumber()); - QCOMPARE(ret.property(123).toInt32(), 456); + QCOMPARE(ret.property(123).toInt(), 456); } } @@ -660,12 +658,12 @@ void tst_QJSEngine::newVariant() QJSValue opaque = eng.newVariant(QVariant()); QCOMPARE(opaque.isValid(), true); QCOMPARE(opaque.isVariant(), true); - QVERIFY(!opaque.isFunction()); + QVERIFY(!opaque.isCallable()); QCOMPARE(opaque.isObject(), true); QCOMPARE(opaque.prototype().isValid(), true); QEXPECT_FAIL("", "FIXME: newly created QObject's prototype is an JS Object", Continue); QCOMPARE(opaque.prototype().isVariant(), true); - QVERIFY(opaque.property("valueOf").call(opaque).isUndefined()); + QVERIFY(opaque.property("valueOf").callWithInstance(opaque).isUndefined()); } } @@ -736,15 +734,15 @@ void tst_QJSEngine::newVariant_valueOfToString() QJSEngine eng; { QJSValue object = eng.newVariant(QVariant(123)); - QJSValue value = object.property("valueOf").call(object); + QJSValue value = object.property("valueOf").callWithInstance(object); QVERIFY(value.isNumber()); - QCOMPARE(value.toInt32(), 123); + QCOMPARE(value.toInt(), 123); QCOMPARE(object.toString(), QString::fromLatin1("123")); QCOMPARE(object.toVariant().toString(), object.toString()); } { QJSValue object = eng.newVariant(QVariant(QString::fromLatin1("hello"))); - QJSValue value = object.property("valueOf").call(object); + QJSValue value = object.property("valueOf").callWithInstance(object); QVERIFY(value.isString()); QCOMPARE(value.toString(), QString::fromLatin1("hello")); QCOMPARE(object.toString(), QString::fromLatin1("hello")); @@ -752,15 +750,15 @@ void tst_QJSEngine::newVariant_valueOfToString() } { QJSValue object = eng.newVariant(QVariant(false)); - QJSValue value = object.property("valueOf").call(object); - QVERIFY(value.isBoolean()); - QCOMPARE(value.toBoolean(), false); + QJSValue value = object.property("valueOf").callWithInstance(object); + QVERIFY(value.isBool()); + QCOMPARE(value.toBool(), false); QCOMPARE(object.toString(), QString::fromLatin1("false")); QCOMPARE(object.toVariant().toString(), object.toString()); } { QJSValue object = eng.newVariant(QVariant(QPoint(10, 20))); - QJSValue value = object.property("valueOf").call(object); + QJSValue value = object.property("valueOf").callWithInstance(object); QVERIFY(value.isObject()); QVERIFY(value.strictlyEquals(object)); QCOMPARE(object.toString(), QString::fromLatin1("QVariant(QPoint)")); @@ -804,7 +802,7 @@ void tst_QJSEngine::newRegExp() QCOMPARE(rexp.isValid(), true); QCOMPARE(rexp.isRegExp(), true); QCOMPARE(rexp.isObject(), true); - QVERIFY(rexp.isFunction()); // in JSC, RegExp objects are callable + QVERIFY(rexp.isCallable()); // in JSC, RegExp objects are callable // prototype should be RegExp.prototype QCOMPARE(rexp.prototype().isValid(), true); QCOMPARE(rexp.prototype().isObject(), true); @@ -832,18 +830,18 @@ void tst_QJSEngine::jsRegExp() QCOMPARE(r.toString(), QString::fromLatin1("/foo/gim")); QJSValue rxCtor = eng.globalObject().property("RegExp"); - QJSValue r2 = rxCtor.call(QJSValue(), QJSValueList() << r); + QJSValue r2 = rxCtor.call(QJSValueList() << r); QVERIFY(r2.isRegExp()); QVERIFY(r2.strictlyEquals(r)); - QJSValue r3 = rxCtor.call(QJSValue(), QJSValueList() << r << "gim"); + QJSValue r3 = rxCtor.call(QJSValueList() << r << "gim"); QVERIFY(r3.isError()); QVERIFY(r3.toString().contains(QString::fromLatin1("TypeError"))); // Cannot supply flags when constructing one RegExp from another - QJSValue r4 = rxCtor.call(QJSValue(), QJSValueList() << "foo" << "gim"); + QJSValue r4 = rxCtor.call(QJSValueList() << "foo" << "gim"); QVERIFY(r4.isRegExp()); - QJSValue r5 = rxCtor.construct(QJSValueList() << r); + QJSValue r5 = rxCtor.callAsConstructor(QJSValueList() << r); QVERIFY(r5.isRegExp()); QCOMPARE(r5.toString(), QString::fromLatin1("/foo/gim")); // In JSC, constructing a RegExp from another produces the same identical object. @@ -851,7 +849,7 @@ void tst_QJSEngine::jsRegExp() QVERIFY(!r5.strictlyEquals(r)); QEXPECT_FAIL("", "V8 and jsc ignores invalid flags", Continue); //https://bugs.webkit.org/show_bug.cgi?id=41614 - QJSValue r6 = rxCtor.construct(QJSValueList() << "foo" << "bar"); + QJSValue r6 = rxCtor.callAsConstructor(QJSValueList() << "foo" << "bar"); QVERIFY(r6.isError()); // QVERIFY(r6.toString().contains(QString::fromLatin1("SyntaxError"))); // Invalid regular expression flag @@ -867,15 +865,15 @@ void tst_QJSEngine::jsRegExp() QVERIFY(r8.isRegExp()); QCOMPARE(r8.toString(), QString::fromLatin1("/foo/gim")); - QJSValue r9 = rxCtor.construct(); + QJSValue r9 = rxCtor.callAsConstructor(); QVERIFY(r9.isRegExp()); QCOMPARE(r9.toString(), QString::fromLatin1("/(?:)/")); - QJSValue r10 = rxCtor.construct(QJSValueList() << "" << "gim"); + QJSValue r10 = rxCtor.callAsConstructor(QJSValueList() << "" << "gim"); QVERIFY(r10.isRegExp()); QCOMPARE(r10.toString(), QString::fromLatin1("/(?:)/gim")); - QJSValue r11 = rxCtor.construct(QJSValueList() << "{1.*}" << "g"); + QJSValue r11 = rxCtor.callAsConstructor(QJSValueList() << "{1.*}" << "g"); QVERIFY(r11.isRegExp()); QCOMPARE(r11.toString(), QString::fromLatin1("/{1.*}/g")); } @@ -889,7 +887,7 @@ void tst_QJSEngine::newDate() QCOMPARE(date.isValid(), true); QCOMPARE(date.isDate(), true); QCOMPARE(date.isObject(), true); - QVERIFY(!date.isFunction()); + QVERIFY(!date.isCallable()); // prototype should be Date.prototype QCOMPARE(date.prototype().isValid(), true); QCOMPARE(date.prototype().isDate(), true); @@ -931,8 +929,8 @@ void tst_QJSEngine::jsParseDate() // Date.parse() should be able to parse the output of Date().toString() { QJSValue ret = eng.evaluate("var x = new Date(); var s = x.toString(); s == new Date(Date.parse(s)).toString()"); - QVERIFY(ret.isBoolean()); - QCOMPARE(ret.toBoolean(), true); + QVERIFY(ret.isBool()); + QCOMPARE(ret.toBool(), true); } } @@ -953,7 +951,7 @@ void tst_QJSEngine::newQObject() QCOMPARE(qobject.isQObject(), true); QCOMPARE(qobject.isObject(), true); QCOMPARE(qobject.toQObject(), (QObject *)this); - QVERIFY(!qobject.isFunction()); + QVERIFY(!qobject.isCallable()); // prototype should be QObject.prototype QCOMPARE(qobject.prototype().isValid(), true); QEXPECT_FAIL("", "FIXME: newly created QObject's prototype is an JS Object", Continue); @@ -973,7 +971,7 @@ void tst_QJSEngine::newQObject_ownership() } collectGarbage_helper(eng); if (ptr) - QApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); + QGuiApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); QVERIFY(ptr == 0); } { @@ -1004,7 +1002,7 @@ void tst_QJSEngine::newQObject_ownership() collectGarbage_helper(eng); // no parent, so it should be like ScriptOwnership if (ptr) - QApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); + QGuiApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); QVERIFY(ptr == 0); } { @@ -1181,7 +1179,7 @@ static QScriptValue myConstructor(QScriptContext *ctx, QScriptEngine *eng) static QScriptValue instanceofJS(const QScriptValue &inst, const QScriptValue &ctor) { return inst.engine()->evaluate("(function(inst, ctor) { return inst instanceof ctor; })") - .call(QScriptValue(), QScriptValueList() << inst << ctor); + .call(QScriptValueList() << inst << ctor); } void tst_QJSEngine::newQMetaObject() @@ -1197,27 +1195,27 @@ void tst_QJSEngine::newQMetaObject() QCOMPARE(qclass.isValid(), true); QCOMPARE(qclass.isQMetaObject(), true); QCOMPARE(qclass.toQMetaObject(), &QObject::staticMetaObject); - QCOMPARE(qclass.isFunction(), true); + QCOMPARE(qclass.isCallable(), true); QVERIFY(qclass.property("prototype").isObject()); QCOMPARE(qclass2.isValid(), true); QCOMPARE(qclass2.isQMetaObject(), true); QCOMPARE(qclass2.toQMetaObject(), &QWidget::staticMetaObject); - QCOMPARE(qclass2.isFunction(), true); + QCOMPARE(qclass2.isCallable(), true); QVERIFY(qclass2.property("prototype").isObject()); // prototype should be QMetaObject.prototype QCOMPARE(qclass.prototype().isObject(), true); QCOMPARE(qclass2.prototype().isObject(), true); - QScriptValue instance = qclass.construct(); + QScriptValue instance = qclass.callAsConstructor(); QCOMPARE(instance.isQObject(), true); QCOMPARE(instance.toQObject()->metaObject(), qclass.toQMetaObject()); QEXPECT_FAIL("", "FIXME: newQMetaObject not implemented properly yet", Abort); QVERIFY(instance.instanceOf(qclass)); QVERIFY(instanceofJS(instance, qclass).strictlyEquals(true)); - QScriptValue instance2 = qclass2.construct(); + QScriptValue instance2 = qclass2.callAsConstructor(); QCOMPARE(instance2.isQObject(), true); QCOMPARE(instance2.toQObject()->metaObject(), qclass2.toQMetaObject()); QVERIFY(instance2.instanceOf(qclass2)); @@ -1227,7 +1225,7 @@ void tst_QJSEngine::newQMetaObject() QScriptValueList args; args << instance; - QScriptValue instance3 = qclass.construct(args); + QScriptValue instance3 = qclass.callAsConstructor(args); QCOMPARE(instance3.isQObject(), true); QCOMPARE(instance3.toQObject()->parent(), instance.toQObject()); QVERIFY(instance3.instanceOf(qclass)); @@ -1266,18 +1264,18 @@ void tst_QJSEngine::newQMetaObject() { QScriptValue ret = qclass3.call(); QVERIFY(ret.isObject()); - QVERIFY(ret.property("isCalledAsConstructor").isBoolean()); - QVERIFY(!ret.property("isCalledAsConstructor").toBoolean()); + QVERIFY(ret.property("isCalledAsConstructor").isBool()); + QVERIFY(!ret.property("isCalledAsConstructor").toBool()); QVERIFY(ret.instanceOf(qclass3)); QVERIFY(instanceofJS(ret, qclass3).strictlyEquals(true)); QVERIFY(!ret.instanceOf(qclass)); QVERIFY(instanceofJS(ret, qclass).strictlyEquals(false)); } { - QScriptValue ret = qclass3.construct(); + QScriptValue ret = qclass3.callAsConstructor(); QVERIFY(ret.isObject()); - QVERIFY(ret.property("isCalledAsConstructor").isBoolean()); - QVERIFY(ret.property("isCalledAsConstructor").toBoolean()); + QVERIFY(ret.property("isCalledAsConstructor").isBool()); + QVERIFY(ret.property("isCalledAsConstructor").toBool()); QVERIFY(ret.instanceOf(qclass3)); QVERIFY(instanceofJS(ret, qclass3).strictlyEquals(true)); QVERIFY(!ret.instanceOf(qclass2)); @@ -1285,14 +1283,14 @@ void tst_QJSEngine::newQMetaObject() } // subclassing - qclass2.setProperty("prototype", qclass.construct()); - QVERIFY(qclass2.construct().instanceOf(qclass)); - QVERIFY(instanceofJS(qclass2.construct(), qclass).strictlyEquals(true)); + qclass2.setProperty("prototype", qclass.callAsConstructor()); + QVERIFY(qclass2.callAsConstructor().instanceOf(qclass)); + QVERIFY(instanceofJS(qclass2.callAsConstructor(), qclass).strictlyEquals(true)); // with meta-constructor QScriptValue qclass4 = eng.newQMetaObject(&QObject::staticMetaObject); { - QScriptValue inst = qclass4.construct(); + QScriptValue inst = qclass4.callAsConstructor(); QVERIFY(inst.isQObject()); QVERIFY(inst.toQObject() != 0); QCOMPARE(inst.toQObject()->parent(), (QObject*)0); @@ -1302,7 +1300,7 @@ void tst_QJSEngine::newQMetaObject() QVERIFY(instanceofJS(inst, qclass3).strictlyEquals(false)); } { - QScriptValue inst = qclass4.construct(QScriptValueList() << eng.newQObject(this)); + QScriptValue inst = qclass4.callAsConstructor(QScriptValueList() << eng.newQObject(this)); QVERIFY(inst.isQObject()); QVERIFY(inst.toQObject() != 0); QCOMPARE(inst.toQObject()->parent(), (QObject*)this); @@ -1324,7 +1322,7 @@ void tst_QJSEngine::newActivationObject() QCOMPARE(act.isValid(), true); QEXPECT_FAIL("", "", Continue); QCOMPARE(act.isObject(), true); - QVERIFY(!act.isFunction()); + QVERIFY(!act.isCallable()); QScriptValue v(&eng, 123); act.setProperty("prop", v); QEXPECT_FAIL("", "", Continue); @@ -1359,7 +1357,7 @@ void tst_QJSEngine::getSetGlobalObject() glob = eng.globalObject(); QCOMPARE(glob.isValid(), true); QCOMPARE(glob.isObject(), true); - QVERIFY(!glob.isFunction()); + QVERIFY(!glob.isCallable()); QVERIFY(eng.currentContext()->thisObject().strictlyEquals(glob)); QVERIFY(eng.currentContext()->activationObject().strictlyEquals(glob)); QEXPECT_FAIL("", "FIXME: Do we really want to enforce this? ECMA standard says that it is implementation dependent, skipping for now", Continue); @@ -1403,7 +1401,7 @@ void tst_QJSEngine::getSetGlobalObject() { QScriptValue ret = obj.property("foo"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } QVERIFY(!obj.property("bar").isValid()); @@ -1411,7 +1409,7 @@ void tst_QJSEngine::getSetGlobalObject() { QScriptValue ret = obj.property("bar"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 456); + QCOMPARE(ret.toInt(), 456); } QVERIFY(!obj.property("baz").isValid()); @@ -1419,7 +1417,7 @@ void tst_QJSEngine::getSetGlobalObject() { QScriptValue ret = obj.property("baz"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 789); + QCOMPARE(ret.toInt(), 789); } { @@ -1439,8 +1437,8 @@ void tst_QJSEngine::getSetGlobalObject() //the custom global object have an interceptor QVERIFY(eng.evaluate("this.__defineGetter__('oof', function() { return this.bar; })").isUndefined()); QVERIFY(eng.evaluate("this.__defineSetter__('oof', function(v) { this.bar = v; })").isUndefined()); - QVERIFY(eng.evaluate("this.__lookupGetter__('oof')").isFunction()); - QVERIFY(eng.evaluate("this.__lookupSetter__('oof')").isFunction()); + QVERIFY(eng.evaluate("this.__lookupGetter__('oof')").isCallable()); + QVERIFY(eng.evaluate("this.__lookupSetter__('oof')").isCallable()); eng.evaluate("oof = 123"); QVERIFY(eng.evaluate("oof").equals(obj.property("bar"))); @@ -1480,65 +1478,65 @@ void tst_QJSEngine::globalObjectProperties() QVERIFY(global.property("undefined").isUndefined()); QCOMPARE(global.propertyFlags("undefined"), QJSValue::SkipInEnumeration | QJSValue::Undeletable); - QVERIFY(global.property("eval").isFunction()); + QVERIFY(global.property("eval").isCallable()); QCOMPARE(global.propertyFlags("eval"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("parseInt").isFunction()); + QVERIFY(global.property("parseInt").isCallable()); QCOMPARE(global.propertyFlags("parseInt"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("parseFloat").isFunction()); + QVERIFY(global.property("parseFloat").isCallable()); QCOMPARE(global.propertyFlags("parseFloat"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("isNaN").isFunction()); + QVERIFY(global.property("isNaN").isCallable()); QCOMPARE(global.propertyFlags("isNaN"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("isFinite").isFunction()); + QVERIFY(global.property("isFinite").isCallable()); QCOMPARE(global.propertyFlags("isFinite"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("decodeURI").isFunction()); + QVERIFY(global.property("decodeURI").isCallable()); QCOMPARE(global.propertyFlags("decodeURI"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("decodeURIComponent").isFunction()); + QVERIFY(global.property("decodeURIComponent").isCallable()); QCOMPARE(global.propertyFlags("decodeURIComponent"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("encodeURI").isFunction()); + QVERIFY(global.property("encodeURI").isCallable()); QCOMPARE(global.propertyFlags("encodeURI"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("encodeURIComponent").isFunction()); + QVERIFY(global.property("encodeURIComponent").isCallable()); QCOMPARE(global.propertyFlags("encodeURIComponent"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("Object").isFunction()); + QVERIFY(global.property("Object").isCallable()); QCOMPARE(global.propertyFlags("Object"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("Function").isFunction()); + QVERIFY(global.property("Function").isCallable()); QCOMPARE(global.propertyFlags("Function"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("Array").isFunction()); + QVERIFY(global.property("Array").isCallable()); QCOMPARE(global.propertyFlags("Array"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("String").isFunction()); + QVERIFY(global.property("String").isCallable()); QCOMPARE(global.propertyFlags("String"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("Boolean").isFunction()); + QVERIFY(global.property("Boolean").isCallable()); QCOMPARE(global.propertyFlags("Boolean"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("Number").isFunction()); + QVERIFY(global.property("Number").isCallable()); QCOMPARE(global.propertyFlags("Number"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("Date").isFunction()); + QVERIFY(global.property("Date").isCallable()); QCOMPARE(global.propertyFlags("Date"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("RegExp").isFunction()); + QVERIFY(global.property("RegExp").isCallable()); QCOMPARE(global.propertyFlags("RegExp"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("Error").isFunction()); + QVERIFY(global.property("Error").isCallable()); QCOMPARE(global.propertyFlags("Error"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("EvalError").isFunction()); + QVERIFY(global.property("EvalError").isCallable()); QCOMPARE(global.propertyFlags("EvalError"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("RangeError").isFunction()); + QVERIFY(global.property("RangeError").isCallable()); QCOMPARE(global.propertyFlags("RangeError"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("ReferenceError").isFunction()); + QVERIFY(global.property("ReferenceError").isCallable()); QCOMPARE(global.propertyFlags("ReferenceError"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("SyntaxError").isFunction()); + QVERIFY(global.property("SyntaxError").isCallable()); QCOMPARE(global.propertyFlags("SyntaxError"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("TypeError").isFunction()); + QVERIFY(global.property("TypeError").isCallable()); QCOMPARE(global.propertyFlags("TypeError"), QJSValue::SkipInEnumeration); - QVERIFY(global.property("URIError").isFunction()); + QVERIFY(global.property("URIError").isCallable()); QCOMPARE(global.propertyFlags("URIError"), QJSValue::SkipInEnumeration); QVERIFY(global.property("Math").isObject()); - QVERIFY(!global.property("Math").isFunction()); + QVERIFY(!global.property("Math").isCallable()); QCOMPARE(global.propertyFlags("Math"), QJSValue::SkipInEnumeration); } @@ -1686,12 +1684,12 @@ void tst_QJSEngine::customGlobalObjectWithPrototype() } { QScriptValue ret = engine.evaluate("print"); - QVERIFY(ret.isFunction()); + QVERIFY(ret.isCallable()); QVERIFY(ret.strictlyEquals(wrap.property("print"))); } { QScriptValue ret = engine.evaluate("this.print"); - QVERIFY(ret.isFunction()); + QVERIFY(ret.isCallable()); QVERIFY(ret.strictlyEquals(wrap.property("print"))); } { @@ -1712,7 +1710,7 @@ void tst_QJSEngine::customGlobalObjectWithPrototype() global.setPrototype(anotherProto); { QScriptValue ret = engine.evaluate("print"); - QVERIFY(ret.isFunction()); + QVERIFY(ret.isCallable()); QVERIFY(ret.strictlyEquals(wrap.property("print"))); } { @@ -1748,7 +1746,7 @@ void tst_QJSEngine::customGlobalObjectWithPrototype() } { QScriptValue ret = engine.evaluate("print"); - QVERIFY(ret.isFunction()); + QVERIFY(ret.isCallable()); QVERIFY(ret.strictlyEquals(global.property("print"))); } QVERIFY(!anotherProto.property("print").isValid()); @@ -2217,7 +2215,7 @@ void tst_QJSEngine::nestedEvaluate() } // From QScriptValue::call() { - QScriptValue result = fun.call(eng.evaluate("p = { id:'foo' }") , QScriptValueList() ); + QScriptValue result = fun.callWithInstance(eng.evaluate("p = { id:'foo' }") , QScriptValueList() ); QCOMPARE(result.property("local_bar").toString(), QString("local")); QCOMPARE(result.property("thisObjectIdBefore").toString(), QString("foo")); QCOMPARE(result.property("thisObjectIdAfter").toString(), QString("foo")); @@ -2354,8 +2352,8 @@ static QJSValue fooToScriptValue(QJSEngine *eng, const Foo &foo) static void fooFromScriptValue(const QJSValue &value, Foo &foo) { - foo.x = value.property("x").toInt32(); - foo.y = value.property("y").toInt32(); + foo.x = value.property("x").toInt(); + foo.y = value.property("y").toInt(); } static QJSValue fooToScriptValueV2(QJSEngine *eng, const Foo &foo) @@ -2365,7 +2363,7 @@ static QJSValue fooToScriptValueV2(QJSEngine *eng, const Foo &foo) static void fooFromScriptValueV2(const QJSValue &value, Foo &foo) { - foo.x = value.toInt32(); + foo.x = value.toInt(); } Q_DECLARE_METATYPE(QLinkedList) @@ -2500,7 +2498,7 @@ void tst_QJSEngine::valueConversion_sequence() lst << QLatin1String("foo") << QLatin1String("bar"); QScriptValue lstVal = eng.toScriptValue(lst); QCOMPARE(lstVal.isArray(), true); - QCOMPARE(lstVal.property("length").toInt32(), 2); + QCOMPARE(lstVal.property("length").toInt(), 2); QCOMPARE(lstVal.property("0").isString(), true); QCOMPARE(lstVal.property("0").toString(), QLatin1String("foo")); QCOMPARE(lstVal.property("1").isString(), true); @@ -2519,14 +2517,14 @@ void tst_QJSEngine::valueConversion_sequence() QStack second; second << 99999;lst << second; QScriptValue lstVal = eng.toScriptValue(lst); QCOMPARE(lstVal.isArray(), true); - QCOMPARE(lstVal.property("length").toInt32(), 2); + QCOMPARE(lstVal.property("length").toInt(), 2); QCOMPARE(lstVal.property("0").isArray(), true); - QCOMPARE(lstVal.property("0").property("length").toInt32(), 2); - QCOMPARE(lstVal.property("0").property("0").toInt32(), first.at(0)); - QCOMPARE(lstVal.property("0").property("1").toInt32(), first.at(1)); + QCOMPARE(lstVal.property("0").property("length").toInt(), 2); + QCOMPARE(lstVal.property("0").property("0").toInt(), first.at(0)); + QCOMPARE(lstVal.property("0").property("1").toInt(), first.at(1)); QCOMPARE(lstVal.property("1").isArray(), true); - QCOMPARE(lstVal.property("1").property("length").toInt32(), 1); - QCOMPARE(lstVal.property("1").property("0").toInt32(), second.at(0)); + QCOMPARE(lstVal.property("1").property("length").toInt(), 1); + QCOMPARE(lstVal.property("1").property("0").toInt(), second.at(0)); QCOMPARE(qscriptvalue_cast >(lstVal.property("0")), first); QCOMPARE(qscriptvalue_cast >(lstVal.property("1")), second); QCOMPARE(qscriptvalue_cast > >(lstVal), lst); @@ -2554,10 +2552,10 @@ void tst_QJSEngine::valueConversion_sequence() lst << 1 << 2 << 3; QScriptValue val = eng.toScriptValue(lst); QVERIFY(val.isArray()); - QCOMPARE(val.property("length").toInt32(), lst.size()); - QCOMPARE(val.property(0).toInt32(), lst.at(0)); - QCOMPARE(val.property(1).toInt32(), lst.at(1)); - QCOMPARE(val.property(2).toInt32(), lst.at(2)); + QCOMPARE(val.property("length").toInt(), lst.size()); + QCOMPARE(val.property(0).toInt(), lst.at(0)); + QCOMPARE(val.property(1).toInt(), lst.at(1)); + QCOMPARE(val.property(2).toInt(), lst.at(2)); QCOMPARE(qscriptvalue_cast >(val), lst); } @@ -2566,7 +2564,7 @@ void tst_QJSEngine::valueConversion_sequence() lst << this; QScriptValue val = eng.toScriptValue(lst); QVERIFY(val.isArray()); - QCOMPARE(val.property("length").toInt32(), lst.size()); + QCOMPARE(val.property("length").toInt(), lst.size()); QCOMPARE(val.property(0).toQObject(), (QObject *)this); QCOMPARE(qscriptvalue_cast(val), lst); @@ -2622,8 +2620,8 @@ void tst_QJSEngine::valueConversion_QVariant() { QJSValue val = eng.toScriptValue(QVariant(true)); QVERIFY(!val.isVariant()); - QVERIFY(val.isBoolean()); - QCOMPARE(val.toBoolean(), true); + QVERIFY(val.isBool()); + QCOMPARE(val.toBool(), true); } { QJSValue val = eng.toScriptValue(QVariant(int(123))); @@ -2691,37 +2689,37 @@ void tst_QJSEngine::valueConversion_basic2() { QJSValue val = eng.toScriptValue(uint(123)); QVERIFY(val.isNumber()); - QCOMPARE(val.toInt32(), 123); + QCOMPARE(val.toInt(), 123); } { QJSValue val = eng.toScriptValue(qulonglong(123)); QVERIFY(val.isNumber()); - QCOMPARE(val.toInt32(), 123); + QCOMPARE(val.toInt(), 123); } { QJSValue val = eng.toScriptValue(float(123)); QVERIFY(val.isNumber()); - QCOMPARE(val.toInt32(), 123); + QCOMPARE(val.toInt(), 123); } { QJSValue val = eng.toScriptValue(short(123)); QVERIFY(val.isNumber()); - QCOMPARE(val.toInt32(), 123); + QCOMPARE(val.toInt(), 123); } { QJSValue val = eng.toScriptValue(ushort(123)); QVERIFY(val.isNumber()); - QCOMPARE(val.toInt32(), 123); + QCOMPARE(val.toInt(), 123); } { QJSValue val = eng.toScriptValue(char(123)); QVERIFY(val.isNumber()); - QCOMPARE(val.toInt32(), 123); + QCOMPARE(val.toInt(), 123); } { QJSValue val = eng.toScriptValue(uchar(123)); QVERIFY(val.isNumber()); - QCOMPARE(val.toInt32(), 123); + QCOMPARE(val.toInt(), 123); } } @@ -2898,7 +2896,7 @@ static QScriptValue recurse(QScriptContext *ctx, QScriptEngine *eng) static QScriptValue recurse2(QScriptContext *ctx, QScriptEngine *eng) { Q_UNUSED(eng); - return ctx->callee().construct(); + return ctx->callee().callAsConstructor(); } void tst_QJSEngine::infiniteRecursion() @@ -2922,7 +2920,7 @@ void tst_QJSEngine::infiniteRecursion() } { QScriptValue fun = eng.newFunction(recurse2); - QScriptValue ret = fun.construct(); + QScriptValue ret = fun.callAsConstructor(); QCOMPARE(ret.isError(), true); QCOMPARE(ret.toString(), stackOverflowError); } @@ -2979,7 +2977,7 @@ void tst_QJSEngine::castWithPrototypeChain() Zoo zoo; QScriptValue scriptZoo = eng.newQObject(&zoo); QScriptValue toBaz = scriptZoo.property("toBaz"); - QVERIFY(toBaz.isFunction()); + QVERIFY(toBaz.isCallable()); // no relation between Bar and Baz's proto --> casting fails { @@ -2988,7 +2986,7 @@ void tst_QJSEngine::castWithPrototypeChain() } { - QScriptValue ret = toBaz.call(scriptZoo, QScriptValueList() << baz2Value); + QScriptValue ret = toBaz.callWithInstance(scriptZoo, QScriptValueList() << baz2Value); QVERIFY(ret.isError()); QCOMPARE(ret.toString(), QLatin1String("TypeError: incompatible type of argument(s) in call to toBaz(); candidates were\n toBaz(Bar*)")); } @@ -3010,7 +3008,7 @@ void tst_QJSEngine::castWithPrototypeChain() } { - QScriptValue ret = toBaz.call(scriptZoo, QScriptValueList() << baz2Value); + QScriptValue ret = toBaz.callWithInstance(scriptZoo, QScriptValueList() << baz2Value); QEXPECT_FAIL("", "Cannot convert Baz* to Bar*", Continue); QVERIFY(!ret.isError()); QEXPECT_FAIL("", "Cannot convert Baz* to Bar*", Continue); @@ -3108,7 +3106,7 @@ void tst_QJSEngine::collectGarbage() (void)eng.newQObject(ptr); collectGarbage_helper(eng); if (ptr) - QApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); + QGuiApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); QVERIFY(ptr == 0); } @@ -3238,7 +3236,7 @@ void tst_QJSEngine::processEventsWhileRunning_function() QCOMPARE(eng.processEventsInterval(), 100); if (x) script.call(); - else script.construct(); + else script.callAsConstructor(); QVERIFY(!eng.hasUncaughtException()); QVERIFY(receiver.received); @@ -3355,13 +3353,13 @@ void tst_QJSEngine::stacktrace() // FIXME? it is not standard. //QCOMPARE(result.property("fileName").toString(), fileName); - //QCOMPARE(result.property("lineNumber").toInt32(), 9); + //QCOMPARE(result.property("lineNumber").toInt(), 9); QJSValue stack = result.property("stack"); // FIXME? it is not standard. // QVERIFY(stack.isArray()); - //QCOMPARE(stack.property("length").toInt32(), 7); + //QCOMPARE(stack.property("length").toInt(), 7); QJSValueIterator it(stack); int counter = 5; @@ -3375,7 +3373,7 @@ void tst_QJSEngine::stacktrace() QJSValue callee = frame.property("arguments").property("callee"); QVERIFY(callee.strictlyEquals(eng.globalObject().property("foo"))); QCOMPARE(obj.property("functionName").toString(), QString("foo")); - int line = obj.property("lineNumber").toInt32(); + int line = obj.property("lineNumber").toInt(); if (counter == 5) QCOMPARE(line, 9); else @@ -3469,7 +3467,7 @@ void tst_QJSEngine::automaticSemicolonInsertion() { QJSValue ret = eng.evaluate("{ 1\n2 } 3"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 3); + QCOMPARE(ret.toInt(), 3); } { QJSValue ret = eng.evaluate("for (a; b\n)"); @@ -3484,7 +3482,7 @@ void tst_QJSEngine::automaticSemicolonInsertion() eng.evaluate("c = 2; b = 1"); QJSValue ret = eng.evaluate("a = b\n++c"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 3); + QCOMPARE(ret.toInt(), 3); } { QJSValue ret = eng.evaluate("if (a > b)\nelse c = d"); @@ -3496,7 +3494,7 @@ void tst_QJSEngine::automaticSemicolonInsertion() eng.evaluate("b = 1; d = 2; e = 3"); QJSValue ret = eng.evaluate("a = b + c\n(d + e).foo()"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 6); + QCOMPARE(ret.toInt(), 6); } { QJSValue ret = eng.evaluate("throw\n1"); @@ -3506,7 +3504,7 @@ void tst_QJSEngine::automaticSemicolonInsertion() { QJSValue ret = eng.evaluate("a = Number(1)\n++a"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 2); + QCOMPARE(ret.toInt(), 2); } // "a semicolon is never inserted automatically if the semicolon @@ -3515,31 +3513,31 @@ void tst_QJSEngine::automaticSemicolonInsertion() eng.evaluate("a = 123"); QJSValue ret = eng.evaluate("if (0)\n ++a; a"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } { eng.evaluate("a = 123"); QJSValue ret = eng.evaluate("if (0)\n --a; a"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } { eng.evaluate("a = 123"); QJSValue ret = eng.evaluate("if ((0))\n ++a; a"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } { eng.evaluate("a = 123"); QJSValue ret = eng.evaluate("if ((0))\n --a; a"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } { eng.evaluate("a = 123"); QJSValue ret = eng.evaluate("if (0\n)\n ++a; a"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } { eng.evaluate("a = 123"); @@ -3554,83 +3552,83 @@ void tst_QJSEngine::automaticSemicolonInsertion() { QJSValue ret = eng.evaluate("n = 0; for (i = 0; i < 10; ++i)\n ++n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 10); + QCOMPARE(ret.toInt(), 10); } { QJSValue ret = eng.evaluate("n = 30; for (i = 0; i < 10; ++i)\n --n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 20); + QCOMPARE(ret.toInt(), 20); } { QJSValue ret = eng.evaluate("n = 0; for (var i = 0; i < 10; ++i)\n ++n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 10); + QCOMPARE(ret.toInt(), 10); } { QJSValue ret = eng.evaluate("n = 30; for (var i = 0; i < 10; ++i)\n --n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 20); + QCOMPARE(ret.toInt(), 20); } { QJSValue ret = eng.evaluate("n = 0; i = 0; while (i++ < 10)\n ++n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 10); + QCOMPARE(ret.toInt(), 10); } { QJSValue ret = eng.evaluate("n = 30; i = 0; while (i++ < 10)\n --n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 20); + QCOMPARE(ret.toInt(), 20); } { QJSValue ret = eng.evaluate("o = { a: 0, b: 1, c: 2 }; n = 0; for (i in o)\n ++n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 3); + QCOMPARE(ret.toInt(), 3); } { QJSValue ret = eng.evaluate("o = { a: 0, b: 1, c: 2 }; n = 9; for (i in o)\n --n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 6); + QCOMPARE(ret.toInt(), 6); } { QJSValue ret = eng.evaluate("o = { a: 0, b: 1, c: 2 }; n = 0; for (var i in o)\n ++n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 3); + QCOMPARE(ret.toInt(), 3); } { QJSValue ret = eng.evaluate("o = { a: 0, b: 1, c: 2 }; n = 9; for (var i in o)\n --n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 6); + QCOMPARE(ret.toInt(), 6); } { QJSValue ret = eng.evaluate("o = { n: 3 }; n = 5; with (o)\n ++n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 5); + QCOMPARE(ret.toInt(), 5); } { QJSValue ret = eng.evaluate("o = { n: 3 }; n = 10; with (o)\n --n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 10); + QCOMPARE(ret.toInt(), 10); } { QJSValue ret = eng.evaluate("n = 5; i = 0; do\n ++n; while (++i < 10); n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 15); + QCOMPARE(ret.toInt(), 15); } { QJSValue ret = eng.evaluate("n = 20; i = 0; do\n --n; while (++i < 10); n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 10); + QCOMPARE(ret.toInt(), 10); } { QJSValue ret = eng.evaluate("n = 1; i = 0; if (n) i\n++n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 2); + QCOMPARE(ret.toInt(), 2); } { QJSValue ret = eng.evaluate("n = 1; i = 0; if (n) i\n--n; n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 0); + QCOMPARE(ret.toInt(), 0); } { @@ -3755,7 +3753,7 @@ void tst_QJSEngine::abortEvaluation() case EventReceiver3::Number: QVERIFY(!eng.hasUncaughtException()); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 1234); + QCOMPARE(ret.toInt(), 1234); break; case EventReceiver3::String: QVERIFY(!eng.hasUncaughtException()); @@ -3798,7 +3796,7 @@ void tst_QJSEngine::abortEvaluation_tryCatch() case EventReceiver3::Number: QVERIFY(!eng.hasUncaughtException()); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 1234); + QCOMPARE(ret.toInt(), 1234); break; case EventReceiver3::String: QVERIFY(!eng.hasUncaughtException()); @@ -3908,14 +3906,14 @@ void tst_QJSEngine::isEvaluating_fromNative() QScriptValue fun = eng.newFunction(myFunctionReturningIsEvaluating); eng.globalObject().setProperty("myFunctionReturningIsEvaluating", fun); QScriptValue ret = eng.evaluate("myFunctionReturningIsEvaluating()"); - QVERIFY(ret.isBoolean()); - QVERIFY(ret.toBoolean()); + QVERIFY(ret.isBool()); + QVERIFY(ret.toBool()); ret = fun.call(); - QVERIFY(ret.isBoolean()); - QVERIFY(ret.toBoolean()); + QVERIFY(ret.isBool()); + QVERIFY(ret.toBool()); ret = myFunctionReturningIsEvaluating(eng.currentContext(), &eng); - QVERIFY(ret.isBoolean()); - QVERIFY(!ret.toBoolean()); + QVERIFY(ret.isBool()); + QVERIFY(!ret.toBool()); } void tst_QJSEngine::isEvaluating_fromEvent() @@ -3955,7 +3953,7 @@ void tst_QJSEngine::printFunctionWithCustomHandler() // This behavior is not documented. QJSEngine eng; QtMsgHandler oldHandler = qInstallMsgHandler(myMsgHandler); - QVERIFY(eng.globalObject().property("print").isFunction()); + QVERIFY(eng.globalObject().property("print").isCallable()); theMessageType = QtSystemMsg; QVERIFY(theMessage.isEmpty()); @@ -4004,7 +4002,7 @@ void tst_QJSEngine::errorConstructors() QVERIFY(ret.toString().startsWith(name)); //QTBUG-6138: JSC doesn't assign lineNumber when errors are not thrown QEXPECT_FAIL("", "we have no more lineNumber property ", Continue); - QCOMPARE(ret.property("lineNumber").toInt32(), i+2); + QCOMPARE(ret.property("lineNumber").toInt(), i+2); } } } @@ -4023,9 +4021,9 @@ void tst_QJSEngine::argumentsProperty_globalContext() { QJSValue ret = eng.evaluate("arguments"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 10); + QCOMPARE(ret.toInt(), 10); } - QVERIFY(eng.evaluate("delete arguments").toBoolean()); + QVERIFY(eng.evaluate("delete arguments").toBool()); QVERIFY(!eng.globalObject().property("arguments").isValid()); } @@ -4036,7 +4034,7 @@ void tst_QJSEngine::argumentsProperty_JS() eng.evaluate("o = { arguments: 123 }"); QJSValue ret = eng.evaluate("with (o) { arguments; }"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } { QJSEngine eng; @@ -4045,7 +4043,7 @@ void tst_QJSEngine::argumentsProperty_JS() // appears like a local variable, and it can be replaced. QJSValue ret = eng.evaluate("(function() { arguments = 456; return arguments; })()"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 456); + QCOMPARE(ret.toInt(), 456); QVERIFY(!eng.globalObject().property("arguments").isValid()); } } @@ -4068,7 +4066,7 @@ void tst_QJSEngine::argumentsProperty_evaluateInNativeFunction() eng.globalObject().setProperty("fun", eng.newFunction(argumentsProperty_fun)); QScriptValue result = eng.evaluate("fun(18)"); QVERIFY(result.isNumber()); - QCOMPARE(result.toInt32(), 200+18); + QCOMPARE(result.toInt(), 200+18); } #endif @@ -4137,7 +4135,7 @@ void tst_QJSEngine::jsNumberClass() QCOMPARE(ret.toNumber(), qreal(456)); } - QVERIFY(proto.property("toString").isFunction()); + QVERIFY(proto.property("toString").isCallable()); { QJSValue ret = eng.evaluate("new Number(123).toString()"); QVERIFY(ret.isString()); @@ -4153,31 +4151,31 @@ void tst_QJSEngine::jsNumberClass() QVERIFY(ret.isString()); QCOMPARE(ret.toString(), QString::fromLatin1("7b")); } - QVERIFY(proto.property("toLocaleString").isFunction()); + QVERIFY(proto.property("toLocaleString").isCallable()); { QJSValue ret = eng.evaluate("new Number(123).toLocaleString()"); QVERIFY(ret.isString()); QCOMPARE(ret.toString(), QString::fromLatin1("123")); } - QVERIFY(proto.property("valueOf").isFunction()); + QVERIFY(proto.property("valueOf").isCallable()); { QJSValue ret = eng.evaluate("new Number(123).valueOf()"); QVERIFY(ret.isNumber()); QCOMPARE(ret.toNumber(), qreal(123)); } - QVERIFY(proto.property("toExponential").isFunction()); + QVERIFY(proto.property("toExponential").isCallable()); { QJSValue ret = eng.evaluate("new Number(123).toExponential()"); QVERIFY(ret.isString()); QCOMPARE(ret.toString(), QString::fromLatin1("1.23e+2")); } - QVERIFY(proto.property("toFixed").isFunction()); + QVERIFY(proto.property("toFixed").isCallable()); { QJSValue ret = eng.evaluate("new Number(123).toFixed()"); QVERIFY(ret.isString()); QCOMPARE(ret.toString(), QString::fromLatin1("123")); } - QVERIFY(proto.property("toPrecision").isFunction()); + QVERIFY(proto.property("toPrecision").isCallable()); { QJSValue ret = eng.evaluate("new Number(123).toPrecision()"); QVERIFY(ret.isString()); @@ -4341,19 +4339,19 @@ void tst_QJSEngine::jsFunctionDeclarationAsStatement() "}"); QVERIFY(!eng.globalObject().property("bar").isValid()); QVERIFY(!eng.globalObject().property("baz").isValid()); - QVERIFY(eng.evaluate("foo").isFunction()); + QVERIFY(eng.evaluate("foo").isCallable()); { QJSValue ret = eng.evaluate("foo('bar')"); - QVERIFY(ret.isFunction()); - QJSValue ret2 = ret.call(QJSValue()); + QVERIFY(ret.isCallable()); + QJSValue ret2 = ret.call(); QCOMPARE(ret2.toString(), QString::fromLatin1("bar")); QVERIFY(!eng.globalObject().property("bar").isValid()); QVERIFY(!eng.globalObject().property("baz").isValid()); } { QJSValue ret = eng.evaluate("foo('baz')"); - QVERIFY(ret.isFunction()); - QJSValue ret2 = ret.call(QJSValue()); + QVERIFY(ret.isCallable()); + QJSValue ret2 = ret.call(); QCOMPARE(ret2.toString(), QString::fromLatin1("baz")); QVERIFY(!eng.globalObject().property("bar").isValid()); QVERIFY(!eng.globalObject().property("baz").isValid()); @@ -4369,7 +4367,7 @@ void tst_QJSEngine::stringObjects() // in C++ { QJSValue obj = QJSValue(&eng, str).toObject(); - QCOMPARE(obj.property("length").toInt32(), str.length()); + QCOMPARE(obj.property("length").toInt(), str.length()); QCOMPARE(obj.propertyFlags("length"), QJSValue::PropertyFlags(QJSValue::Undeletable | QJSValue::SkipInEnumeration | QJSValue::ReadOnly)); for (int i = 0; i < str.length(); ++i) { QString pname = QString::number(i); @@ -4408,24 +4406,24 @@ void tst_QJSEngine::stringObjects() QJSValue ret3 = eng.evaluate("s[-1] = 123; s[-1]"); QVERIFY(ret3.isNumber()); - QCOMPARE(ret3.toInt32(), 123); + QCOMPARE(ret3.toInt(), 123); QJSValue ret4 = eng.evaluate("s[s.length] = 456; s[s.length]"); QVERIFY(ret4.isNumber()); - QCOMPARE(ret4.toInt32(), 456); + QCOMPARE(ret4.toInt(), 456); QJSValue ret5 = eng.evaluate("delete s[0]"); - QVERIFY(ret5.isBoolean()); + QVERIFY(ret5.isBool()); QEXPECT_FAIL("", "FIXME: This is V8 bug, please report it! ECMA script standard 15.5.5.2", Abort); - QVERIFY(!ret5.toBoolean()); + QVERIFY(!ret5.toBool()); QJSValue ret6 = eng.evaluate("delete s[-1]"); - QVERIFY(ret6.isBoolean()); - QVERIFY(ret6.toBoolean()); + QVERIFY(ret6.isBool()); + QVERIFY(ret6.toBool()); QJSValue ret7 = eng.evaluate("delete s[s.length]"); - QVERIFY(ret7.isBoolean()); - QVERIFY(ret7.toBoolean()); + QVERIFY(ret7.isBool()); + QVERIFY(ret7.toBool()); } } @@ -4436,15 +4434,15 @@ void tst_QJSEngine::jsStringPrototypeReplaceBugs() { QJSValue ret = eng.evaluate("replace_args = []; \"a a a\".replace(/(a)/g, function() { replace_args.push(arguments); }); replace_args"); QVERIFY(ret.isArray()); - int len = ret.property("length").toInt32(); + int len = ret.property("length").toInt(); QCOMPARE(len, 3); for (int i = 0; i < len; ++i) { QJSValue args = ret.property(i); - QCOMPARE(args.property("length").toInt32(), 4); + QCOMPARE(args.property("length").toInt(), 4); QCOMPARE(args.property(0).toString(), QString::fromLatin1("a")); // matched string QCOMPARE(args.property(1).toString(), QString::fromLatin1("a")); // capture QVERIFY(args.property(2).isNumber()); - QCOMPARE(args.property(2).toInt32(), i*2); // index of match + QCOMPARE(args.property(2).toInt(), i*2); // index of match QCOMPARE(args.property(3).toString(), QString::fromLatin1("a a a")); } } @@ -4524,14 +4522,14 @@ void tst_QJSEngine::getterSetterThisObject_plain() eng.evaluate("o = {}"); // read eng.evaluate("o.__defineGetter__('x', function() { return this; })"); - QVERIFY(eng.evaluate("o.x === o").toBoolean()); + QVERIFY(eng.evaluate("o.x === o").toBool()); QVERIFY(eng.evaluate("with (o) x").equals(eng.evaluate("o"))); - QVERIFY(eng.evaluate("(function() { with (o) return x; })() === o").toBoolean()); + QVERIFY(eng.evaluate("(function() { with (o) return x; })() === o").toBool()); eng.evaluate("q = {}; with (o) with (q) x").equals(eng.evaluate("o")); // write eng.evaluate("o.__defineSetter__('x', function() { return this; });"); // SpiderMonkey says setter return value, JSC says RHS. - QVERIFY(eng.evaluate("(o.x = 'foo') === 'foo'").toBoolean()); + QVERIFY(eng.evaluate("(o.x = 'foo') === 'foo'").toBool()); QVERIFY(eng.evaluate("with (o) x = 'foo'").equals("foo")); QVERIFY(eng.evaluate("with (o) with (q) x = 'foo'").equals("foo")); } @@ -4544,15 +4542,15 @@ void tst_QJSEngine::getterSetterThisObject_prototypeChain() eng.evaluate("o = {}; p = {}; o.__proto__ = p"); // read eng.evaluate("p.__defineGetter__('x', function() { return this; })"); - QVERIFY(eng.evaluate("o.x === o").toBoolean()); + QVERIFY(eng.evaluate("o.x === o").toBool()); QVERIFY(eng.evaluate("with (o) x").equals(eng.evaluate("o"))); - QVERIFY(eng.evaluate("(function() { with (o) return x; })() === o").toBoolean()); + QVERIFY(eng.evaluate("(function() { with (o) return x; })() === o").toBool()); eng.evaluate("q = {}; with (o) with (q) x").equals(eng.evaluate("o")); eng.evaluate("with (q) with (o) x").equals(eng.evaluate("o")); // write eng.evaluate("o.__defineSetter__('x', function() { return this; });"); // SpiderMonkey says setter return value, JSC says RHS. - QVERIFY(eng.evaluate("(o.x = 'foo') === 'foo'").toBoolean()); + QVERIFY(eng.evaluate("(o.x = 'foo') === 'foo'").toBool()); QVERIFY(eng.evaluate("with (o) x = 'foo'").equals("foo")); QVERIFY(eng.evaluate("with (o) with (q) x = 'foo'").equals("foo")); } @@ -4569,16 +4567,16 @@ void tst_QJSEngine::getterSetterThisObject_activation() act.setProperty("act", act); // read eng.evaluate("act.__defineGetter__('x', function() { return this; })"); - QVERIFY(eng.evaluate("x === act").toBoolean()); + QVERIFY(eng.evaluate("x === act").toBool()); QEXPECT_FAIL("", "QTBUG-17605: Not possible to implement local variables as getter/setter properties", Abort); QVERIFY(!eng.hasUncaughtException()); QVERIFY(eng.evaluate("with (act) x").equals("foo")); - QVERIFY(eng.evaluate("(function() { with (act) return x; })() === act").toBoolean()); + QVERIFY(eng.evaluate("(function() { with (act) return x; })() === act").toBool()); eng.evaluate("q = {}; with (act) with (q) x").equals(eng.evaluate("act")); eng.evaluate("with (q) with (act) x").equals(eng.evaluate("act")); // write eng.evaluate("act.__defineSetter__('x', function() { return this; });"); - QVERIFY(eng.evaluate("(x = 'foo') === 'foo'").toBoolean()); + QVERIFY(eng.evaluate("(x = 'foo') === 'foo'").toBool()); QVERIFY(eng.evaluate("with (act) x = 'foo'").equals("foo")); QVERIFY(eng.evaluate("with (act) with (q) x = 'foo'").equals("foo")); eng.popContext(); @@ -4606,7 +4604,7 @@ void tst_QJSEngine::jsContinueInSwitch() " }\n" "}; j"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 3); + QCOMPARE(ret.toInt(), 3); } // for - switch - case - default - continue { @@ -4619,7 +4617,7 @@ void tst_QJSEngine::jsContinueInSwitch() " }\n" "}; j"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 3); + QCOMPARE(ret.toInt(), 3); } // switch - for - continue { @@ -4630,7 +4628,7 @@ void tst_QJSEngine::jsContinueInSwitch() " }\n" "}; i\n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 100000); + QCOMPARE(ret.toInt(), 100000); } // switch - switch - continue { @@ -4648,7 +4646,7 @@ void tst_QJSEngine::jsContinueInSwitch() " }\n" "}; j"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 1); + QCOMPARE(ret.toInt(), 1); } // switch - for - switch - continue { @@ -4662,7 +4660,7 @@ void tst_QJSEngine::jsContinueInSwitch() " }\n" "}; i\n"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 100000); + QCOMPARE(ret.toInt(), 100000); } } @@ -4675,8 +4673,8 @@ void tst_QJSEngine::jsShadowReadOnlyPrototypeProperty() // just seems weird -- and non-compliant. Adopt the JSC behavior instead. QJSEngine eng; QVERIFY(eng.evaluate("o = {}; o.__proto__ = parseInt; o.length").isNumber()); - QCOMPARE(eng.evaluate("o.length = 123; o.length").toInt32(), 123); - QVERIFY(eng.evaluate("o.hasOwnProperty('length')").toBoolean()); + QCOMPARE(eng.evaluate("o.length = 123; o.length").toInt(), 123); + QVERIFY(eng.evaluate("o.hasOwnProperty('length')").toBool()); } void tst_QJSEngine::toObject() @@ -4950,7 +4948,7 @@ void tst_QJSEngine::jsThrowInsideWithStatement() " }" "}"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); QVERIFY(eng.hasUncaughtException()); } { @@ -5047,8 +5045,8 @@ void tst_QJSEngine::reentrancy_typeConversion() QScriptValue fooVal = qScriptValueFromValue(&eng1, foo); QVERIFY(fooVal.isObject()); QVERIFY(!fooVal.isVariant()); - QCOMPARE(fooVal.property("x").toInt32(), 12); - QCOMPARE(fooVal.property("y").toInt32(), 34); + QCOMPARE(fooVal.property("x").toInt(), 12); + QCOMPARE(fooVal.property("y").toInt(), 34); fooVal.setProperty("x", 56); fooVal.setProperty("y", 78); @@ -5086,7 +5084,7 @@ void tst_QJSEngine::reentrancy_globalObjectProperties() QVERIFY(!eng2.globalObject().property("a").isValid()); eng2.evaluate("a = 20"); QVERIFY(eng2.globalObject().property("a").isNumber()); - QCOMPARE(eng1.globalObject().property("a").toInt32(), 10); + QCOMPARE(eng1.globalObject().property("a").toInt(), 10); } void tst_QJSEngine::reentrancy_Array() @@ -5184,22 +5182,22 @@ void tst_QJSEngine::jsIncDecNonObjectProperty() { QJSValue ret = eng.evaluate("var a = 'ciao'; a.length++"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 4); + QCOMPARE(ret.toInt(), 4); } { QJSValue ret = eng.evaluate("var a = 'ciao'; a.length--"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 4); + QCOMPARE(ret.toInt(), 4); } { QJSValue ret = eng.evaluate("var a = 'ciao'; ++a.length"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 5); + QCOMPARE(ret.toInt(), 5); } { QJSValue ret = eng.evaluate("var a = 'ciao'; --a.length"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 3); + QCOMPARE(ret.toInt(), 3); } } @@ -5217,13 +5215,13 @@ void tst_QJSEngine::installTranslatorFunctions() QVERIFY(!global.property("String").property("prototype").property("arg").isValid()); eng.installTranslatorFunctions(); - QVERIFY(global.property("qsTranslate").isFunction()); - QVERIFY(global.property("QT_TRANSLATE_NOOP").isFunction()); - QVERIFY(global.property("qsTr").isFunction()); - QVERIFY(global.property("QT_TR_NOOP").isFunction()); - QVERIFY(global.property("qsTrId").isFunction()); - QVERIFY(global.property("QT_TRID_NOOP").isFunction()); - QVERIFY(global.property("String").property("prototype").property("arg").isFunction()); + QVERIFY(global.property("qsTranslate").isCallable()); + QVERIFY(global.property("QT_TRANSLATE_NOOP").isCallable()); + QVERIFY(global.property("qsTr").isCallable()); + QVERIFY(global.property("QT_TR_NOOP").isCallable()); + QVERIFY(global.property("qsTrId").isCallable()); + QVERIFY(global.property("QT_TRID_NOOP").isCallable()); + QVERIFY(global.property("String").property("prototype").property("arg").isCallable()); { QScriptValue ret = eng.evaluate("qsTr('foo')"); @@ -5420,7 +5418,7 @@ void tst_QJSEngine::translateScript_crossScript() static QScriptValue callQsTr(QScriptContext *ctx, QScriptEngine *eng) { - return eng->globalObject().property("qsTr").call(ctx->thisObject(), ctx->argumentsObject()); + return eng->globalObject().property("qsTr").callWithInstance(ctx->thisObject(), ctx->argumentsObject()); } void tst_QJSEngine::translateScript_callQsTrFromNative() @@ -5461,7 +5459,7 @@ void tst_QJSEngine::translateScript_callQsTrFromCpp() // There is no context, but it shouldn't crash QCOMPARE(engine.globalObject().property("qsTr").call( - QScriptValue(), QScriptValueList() << "One").toString(), QString::fromLatin1("One")); + QScriptValueList() << "One").toString(), QString::fromLatin1("One")); } void tst_QJSEngine::translateWithInvalidArgs_data() @@ -5691,7 +5689,7 @@ void tst_QJSEngine::functionScopes() { // top-level functions have only the global object in their scope QScriptValue fun = eng.evaluate("(function() {})"); - QVERIFY(fun.isFunction()); + QVERIFY(fun.isCallable()); QEXPECT_FAIL("", "QScriptValue::scope() is internal, not implemented", Abort); QVERIFY(fun.scope().isObject()); QVERIFY(fun.scope().strictlyEquals(eng.globalObject())); @@ -5699,31 +5697,31 @@ void tst_QJSEngine::functionScopes() } { QScriptValue fun = eng.globalObject().property("Object"); - QVERIFY(fun.isFunction()); + QVERIFY(fun.isCallable()); // native built-in functions don't have scope QVERIFY(!fun.scope().isValid()); } { // closure QScriptValue fun = eng.evaluate("(function(arg) { var foo = arg; return function() { return foo; }; })(123)"); - QVERIFY(fun.isFunction()); + QVERIFY(fun.isCallable()); { QScriptValue ret = fun.call(); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } QScriptValue scope = fun.scope(); QVERIFY(scope.isObject()); { QScriptValue ret = scope.property("foo"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); QCOMPARE(scope.propertyFlags("foo"), QScriptValue::Undeletable); } { QScriptValue ret = scope.property("arg"); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); QCOMPARE(scope.propertyFlags("arg"), QScriptValue::Undeletable | QScriptValue::SkipInEnumeration); } @@ -5731,7 +5729,7 @@ void tst_QJSEngine::functionScopes() { QScriptValue ret = fun.call(); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 456); + QCOMPARE(ret.toInt(), 456); } scope = scope.scope(); @@ -5753,7 +5751,7 @@ static QScriptValue counter_inner(QScriptContext *ctx, QScriptEngine *) static QScriptValue counter(QScriptContext *ctx, QScriptEngine *eng) { QScriptValue act = ctx->activationObject(); - act.setProperty("count", ctx->argument(0).toInt32()); + act.setProperty("count", ctx->argument(0).toInt()); QScriptValue result = eng->newFunction(counter_inner); result.setScope(act); return result; @@ -5762,7 +5760,7 @@ static QScriptValue counter(QScriptContext *ctx, QScriptEngine *eng) static QScriptValue counter_hybrid(QScriptContext *ctx, QScriptEngine *eng) { QScriptValue act = ctx->activationObject(); - act.setProperty("count", ctx->argument(0).toInt32()); + act.setProperty("count", ctx->argument(0).toInt()); return eng->evaluate("(function() { return count++; })"); } @@ -5771,23 +5769,23 @@ void tst_QJSEngine::nativeFunctionScopes() QScriptEngine eng; { QScriptValue fun = eng.newFunction(counter); - QScriptValue cnt = fun.call(QScriptValue(), QScriptValueList() << 123); - QVERIFY(cnt.isFunction()); + QScriptValue cnt = fun.call(QScriptValueList() << 123); + QVERIFY(cnt.isCallable()); { QScriptValue ret = cnt.call(); QVERIFY(ret.isNumber()); QEXPECT_FAIL("", "QScriptValue::setScope not implemented", Continue); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } } { QScriptValue fun = eng.newFunction(counter_hybrid); - QScriptValue cnt = fun.call(QScriptValue(), QScriptValueList() << 123); - QVERIFY(cnt.isFunction()); + QScriptValue cnt = fun.call(QScriptValueList() << 123); + QVERIFY(cnt.isCallable()); { QScriptValue ret = cnt.call(); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } } @@ -5919,15 +5917,15 @@ void tst_QJSEngine::evaluateProgram_closure() QScriptProgram program("(function() { var count = 0; return function() { return count++; }; })"); QVERIFY(!program.isNull()); QScriptValue createCounter = eng.evaluate(program); - QVERIFY(createCounter.isFunction()); + QVERIFY(createCounter.isCallable()); QScriptValue counter = createCounter.call(); - QVERIFY(counter.isFunction()); + QVERIFY(counter.isCallable()); { QScriptValue ret = counter.call(); QVERIFY(ret.isNumber()); } QScriptValue counter2 = createCounter.call(); - QVERIFY(counter2.isFunction()); + QVERIFY(counter2.isCallable()); QVERIFY(!counter2.equals(counter)); { QScriptValue ret = counter2.call(); @@ -5943,7 +5941,7 @@ void tst_QJSEngine::evaluateProgram_executeLater() { QScriptValue fun = eng.newFunction(createProgram); QScriptProgram program = qscriptvalue_cast( - fun.call(QScriptValue(), QScriptValueList() << "a + 1")); + fun.call(QScriptValueList() << "a + 1")); QVERIFY(!program.isNull()); eng.globalObject().setProperty("a", QScriptValue()); { @@ -5956,7 +5954,7 @@ void tst_QJSEngine::evaluateProgram_executeLater() QScriptValue ret = eng.evaluate(program); QVERIFY(!ret.isError()); QVERIFY(ret.isNumber()); - QCOMPARE(ret.toInt32(), 123); + QCOMPARE(ret.toInt(), 123); } } } @@ -6041,7 +6039,7 @@ void tst_QJSEngine::promoteThisObjectToQObjectInConstructor() QVERIFY(object.isQObject()); QVERIFY(object.toQObject() != 0); QVERIFY(object.property("objectName").isString()); - QVERIFY(object.property("deleteLater").isFunction()); + QVERIFY(object.property("deleteLater").isCallable()); } #endif @@ -6091,10 +6089,10 @@ void tst_QJSEngine::qRegExpInport() QCOMPARE(rexp.isValid(), true); QCOMPARE(rexp.isRegExp(), true); - QVERIFY(rexp.isFunction()); + QVERIFY(rexp.isCallable()); QJSValue func = eng.evaluate("(function(string, regexp) { return string.match(regexp); })"); - QJSValue result = func.call(QJSValue(), QJSValueList() << string << rexp); + QJSValue result = func.call(QJSValueList() << string << rexp); rx.indexIn(string); for (int i = 0; i <= rx.captureCount(); i++) { @@ -6141,7 +6139,7 @@ void tst_QJSEngine::dateConversionJSQt() QJSValue jsDate = eng.evaluate(QString::fromLatin1("new Date(%0)").arg(secs * 1000.0)); QDateTime qtDate = jsDate.toDateTime(); QString qtUTCDateStr = qtDate.toUTC().toString(Qt::ISODate); - QString jsUTCDateStr = jsDate.property("toISOString").call(jsDate).toString(); + QString jsUTCDateStr = jsDate.property("toISOString").callWithInstance(jsDate).toString(); jsUTCDateStr.remove(jsUTCDateStr.length() - 5, 4); // get rid of milliseconds (".000") if (qtUTCDateStr != jsUTCDateStr) QFAIL(qPrintable(jsDate.toString())); @@ -6155,7 +6153,7 @@ void tst_QJSEngine::dateConversionQtJS() QJSEngine eng; for (int i = 0; i < 8000; ++i) { QJSValue jsDate = eng.newDate(qtDate); - QString jsUTCDateStr = jsDate.property("toISOString").call(jsDate).toString(); + QString jsUTCDateStr = jsDate.property("toISOString").callWithInstance(jsDate).toString(); jsUTCDateStr.remove(jsUTCDateStr.length() - 5, 4); // get rid of milliseconds (".000") QString qtUTCDateStr = qtDate.toUTC().toString(Qt::ISODate); if (jsUTCDateStr != qtUTCDateStr) @@ -6170,7 +6168,7 @@ static QScriptValue createAnotherEngine(QScriptContext *, QScriptEngine *) QScriptEngine eng; eng.evaluate("function foo(x, y) { return x + y; }" ); eng.evaluate("hello = 5; world = 6" ); - return eng.evaluate("foo(hello,world)").toInt32(); + return eng.evaluate("foo(hello,world)").toInt(); } @@ -6179,10 +6177,10 @@ void tst_QJSEngine::reentrency() QScriptEngine eng; eng.globalObject().setProperty("foo", eng.newFunction(createAnotherEngine)); eng.evaluate("function bar() { return foo(); } hello = 9; function getHello() { return hello; }"); - QCOMPARE(eng.evaluate("foo() + getHello() + foo()").toInt32(), 5+6 + 9 + 5+6); - QCOMPARE(eng.evaluate("foo").call().toInt32(), 5+6); - QCOMPARE(eng.evaluate("hello").toInt32(), 9); - QCOMPARE(eng.evaluate("foo() + hello").toInt32(), 5+6+9); + QCOMPARE(eng.evaluate("foo() + getHello() + foo()").toInt(), 5+6 + 9 + 5+6); + QCOMPARE(eng.evaluate("foo").call().toInt(), 5+6); + QCOMPARE(eng.evaluate("hello").toInt(), 9); + QCOMPARE(eng.evaluate("foo() + hello").toInt(), 5+6+9); } #endif @@ -6333,7 +6331,7 @@ void tst_QJSEngine::newFixedStaticScopeObject() } QScriptValue fun = eng.evaluate("(function() { return foo; })"); - QVERIFY(fun.isFunction()); + QVERIFY(fun.isCallable()); eng.popContext(); // Function's scope chain persists after popContext(). QVERIFY(fun.call().equals(scope.property("foo"))); @@ -6425,7 +6423,7 @@ void tst_QJSEngine::newGrowingStaticScopeObject() // Function declarations will create properties on the scope. eng.evaluate("function fun() { return baz; }"); - QVERIFY(scope.property("fun").isFunction()); + QVERIFY(scope.property("fun").isCallable()); QVERIFY(scope.property("fun").call().equals(scope.property("baz"))); // Demonstrate the limitation of a growable static scope: Once a function that @@ -6433,7 +6431,7 @@ void tst_QJSEngine::newGrowingStaticScopeObject() // to the scope later. { QScriptValue fun = eng.evaluate("(function() { return futureProperty; })"); - QVERIFY(fun.isFunction()); + QVERIFY(fun.isCallable()); QVERIFY(fun.call().toString().contains(QString::fromLatin1("ReferenceError"))); scope.setProperty("futureProperty", "added after the function was compiled"); // If scope were dynamic, this would return the new property. @@ -6458,13 +6456,13 @@ void tst_QJSEngine::scriptValueFromQMetaObject() QCOMPARE(meta.toQMetaObject(), &QScriptEngine::staticMetaObject); // Because of missing Q_SCRIPT_DECLARE_QMETAOBJECT() for QScriptEngine. QEXPECT_FAIL("", "FIXME: because construct never returns invalid values", Continue); - QVERIFY(!meta.construct().isValid()); + QVERIFY(!meta.callAsConstructor().isValid()); } { QScriptValue meta = eng.scriptValueFromQMetaObject(); QVERIFY(meta.isQMetaObject()); QCOMPARE(meta.toQMetaObject(), &QStandardItemModel::staticMetaObject); - QScriptValue obj = meta.construct(QScriptValueList() << eng.newQObject(&eng)); + QScriptValue obj = meta.callAsConstructor(QScriptValueList() << eng.newQObject(&eng)); QVERIFY(obj.isQObject()); QStandardItemModel *model = qobject_cast(obj.toQObject()); QVERIFY(model != 0); @@ -6478,17 +6476,46 @@ void tst_QJSEngine::functionPrototypeExtensions() // QJS adds connect and disconnect properties to Function.prototype. QJSEngine eng; QJSValue funProto = eng.globalObject().property("Function").property("prototype"); - QVERIFY(funProto.isFunction()); - QVERIFY(funProto.property("connect").isFunction()); + QVERIFY(funProto.isCallable()); + QVERIFY(funProto.property("connect").isCallable()); QCOMPARE(funProto.propertyFlags("connect"), QJSValue::SkipInEnumeration); - QVERIFY(funProto.property("disconnect").isFunction()); + QVERIFY(funProto.property("disconnect").isCallable()); QCOMPARE(funProto.propertyFlags("disconnect"), QJSValue::SkipInEnumeration); // No properties should appear in for-in statements. QJSValue props = eng.evaluate("props = []; for (var p in Function.prototype) props.push(p); props"); QVERIFY(!eng.hasUncaughtException()); QVERIFY(props.isArray()); - QCOMPARE(props.property("length").toInt32(), 0); + QCOMPARE(props.property("length").toInt(), 0); +} + +class ThreadedTestEngine : public QThread { + Q_OBJECT; + +public: + int result; + + ThreadedTestEngine() + : result(0) {} + + void run() { + QJSEngine firstEngine; + QJSEngine secondEngine; + QJSValue value = firstEngine.evaluate("1"); + result = secondEngine.evaluate("1 + " + QString::number(value.toInteger())).toInteger(); + } +}; + +void tst_QJSEngine::threadedEngine() +{ + ThreadedTestEngine thread1; + ThreadedTestEngine thread2; + thread1.start(); + thread2.start(); + thread1.wait(); + thread2.wait(); + QCOMPARE(thread1.result, 2); + QCOMPARE(thread2.result, 2); } QTEST_MAIN(tst_QJSEngine)