Changeset 59503 in webkit for trunk/JavaScriptCore/qt/tests


Ignore:
Timestamp:
May 14, 2010, 5:08:09 PM (15 years ago)
Author:
[email protected]
Message:

2010-05-14 Jedrzej Nowacki <[email protected]>

Reviewed by Kenneth Rohde Christiansen.

Implementation of QtScript API that provide method to convert a value to an object.

[Qt] QtScript is missing toObject API
https://bugs.webkit.org/show_bug.cgi?id=36594

  • qt/api/qscriptengine.cpp: (QScriptEngine::toObject):
  • qt/api/qscriptengine.h:
  • qt/api/qscriptvalue.cpp: (QScriptValue::toObject):
  • qt/api/qscriptvalue.h:
  • qt/api/qscriptvalue_p.h: (QScriptValuePrivate::toObject):
  • qt/tests/qscriptengine/tst_qscriptengine.cpp: (tst_QScriptEngine::toObject): (tst_QScriptEngine::toObjectTwoEngines):
  • qt/tests/qscriptvalue/tst_qscriptvalue.cpp: (tst_QScriptValue::toObjectSimple):
  • qt/tests/qscriptvalue/tst_qscriptvalue.h:
Location:
trunk/JavaScriptCore/qt/tests
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/qt/tests/qscriptengine/tst_qscriptengine.cpp

    r56689 r59503  
    4545    void checkSyntax_data();
    4646    void checkSyntax();
     47    void toObject();
     48    void toObjectTwoEngines();
    4749};
    4850
     
    304306}
    305307
     308void tst_QScriptEngine::toObject()
     309{
     310    QScriptEngine eng;
     311    QVERIFY(!eng.toObject(eng.undefinedValue()).isValid());
     312    QVERIFY(!eng.toObject(eng.nullValue()).isValid());
     313    QVERIFY(!eng.toObject(QScriptValue()).isValid());
     314
     315    QScriptValue falskt(false);
     316    {
     317        QScriptValue tmp = eng.toObject(falskt);
     318        QVERIFY(tmp.isObject());
     319        QVERIFY(!falskt.isObject());
     320        QVERIFY(!falskt.engine());
     321        QCOMPARE(tmp.toNumber(), falskt.toNumber());
     322    }
     323
     324    QScriptValue sant(true);
     325    {
     326        QScriptValue tmp = eng.toObject(sant);
     327        QVERIFY(tmp.isObject());
     328        QVERIFY(!sant.isObject());
     329        QVERIFY(!sant.engine());
     330        QCOMPARE(tmp.toNumber(), sant.toNumber());
     331    }
     332
     333    QScriptValue number(123.0);
     334    {
     335        QScriptValue tmp = eng.toObject(number);
     336        QVERIFY(tmp.isObject());
     337        QVERIFY(!number.isObject());
     338        QVERIFY(!number.engine());
     339        QCOMPARE(tmp.toNumber(), number.toNumber());
     340    }
     341
     342    QScriptValue str = QScriptValue(&eng, QString("ciao"));
     343    {
     344        QScriptValue tmp = eng.toObject(str);
     345        QVERIFY(tmp.isObject());
     346        QVERIFY(!str.isObject());
     347        QCOMPARE(tmp.toString(), str.toString());
     348    }
     349
     350    QScriptValue object = eng.evaluate("new Object");
     351    {
     352        QScriptValue tmp = eng.toObject(object);
     353        QVERIFY(tmp.isObject());
     354        QVERIFY(object.isObject());
     355        QVERIFY(tmp.strictlyEquals(object));
     356    }
     357}
     358
     359void tst_QScriptEngine::toObjectTwoEngines()
     360{
     361    QScriptEngine engine1;
     362    QScriptEngine engine2;
     363
     364    {
     365        QScriptValue null = engine1.nullValue();
     366        QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::toObject: cannot convert value created in a different engine");
     367        QVERIFY(!engine2.toObject(null).isValid());
     368        QVERIFY(null.isValid());
     369        QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::toObject: cannot convert value created in a different engine");
     370        QVERIFY(engine2.toObject(null).engine() != &engine2);
     371    }
     372    {
     373        QScriptValue undefined = engine1.undefinedValue();
     374        QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::toObject: cannot convert value created in a different engine");
     375        QVERIFY(!engine2.toObject(undefined).isValid());
     376        QVERIFY(undefined.isValid());
     377        QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::toObject: cannot convert value created in a different engine");
     378        QVERIFY(engine2.toObject(undefined).engine() != &engine2);
     379    }
     380    {
     381        QScriptValue value = engine1.evaluate("1");
     382        QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::toObject: cannot convert value created in a different engine");
     383        QVERIFY(engine2.toObject(value).engine() != &engine2);
     384        QVERIFY(!value.isObject());
     385    }
     386    {
     387        QScriptValue string = engine1.evaluate("'Qt'");
     388        QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::toObject: cannot convert value created in a different engine");
     389        QVERIFY(engine2.toObject(string).engine() != &engine2);
     390        QVERIFY(!string.isObject());
     391    }
     392    {
     393        QScriptValue object = engine1.evaluate("new Object");
     394        QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::toObject: cannot convert value created in a different engine");
     395        QVERIFY(engine2.toObject(object).engine() != &engine2);
     396        QVERIFY(object.isObject());
     397    }
     398}
    306399
    307400QTEST_MAIN(tst_QScriptEngine)
  • trunk/JavaScriptCore/qt/tests/qscriptvalue/tst_qscriptvalue.cpp

    r55427 r59503  
    432432}
    433433
     434void tst_QScriptValue::toObjectSimple()
     435{
     436    QScriptEngine eng;
     437
     438    QScriptValue undefined = eng.undefinedValue();
     439    QCOMPARE(undefined.toObject().isValid(), false);
     440    QScriptValue null = eng.nullValue();
     441    QCOMPARE(null.toObject().isValid(), false);
     442    QCOMPARE(QScriptValue().toObject().isValid(), false);
     443
     444    QScriptValue falskt = QScriptValue(&eng, false);
     445    {
     446        QScriptValue tmp = falskt.toObject();
     447        QCOMPARE(tmp.isObject(), true);
     448        QCOMPARE(falskt.isObject(), false);
     449        QCOMPARE(tmp.toNumber(), falskt.toNumber());
     450    }
     451
     452    QScriptValue sant = QScriptValue(&eng, true);
     453    {
     454        QScriptValue tmp = sant.toObject();
     455        QCOMPARE(tmp.isObject(), true);
     456        QCOMPARE(sant.isObject(), false);
     457        QCOMPARE(tmp.toNumber(), sant.toNumber());
     458    }
     459
     460    QScriptValue number = QScriptValue(&eng, 123.0);
     461    {
     462        QScriptValue tmp = number.toObject();
     463        QCOMPARE(tmp.isObject(), true);
     464        QCOMPARE(number.isObject(), false);
     465        QCOMPARE(tmp.toNumber(), number.toNumber());
     466    }
     467
     468    QScriptValue str = QScriptValue(&eng, QString("ciao"));
     469    {
     470        QScriptValue tmp = str.toObject();
     471        QCOMPARE(tmp.isObject(), true);
     472        QCOMPARE(str.isObject(), false);
     473        QCOMPARE(tmp.toString(), str.toString());
     474    }
     475
     476
     477    QScriptValue object = eng.evaluate("new Object");
     478    {
     479        QScriptValue tmp = object.toObject();
     480        QVERIFY(tmp.strictlyEquals(object));
     481        QCOMPARE(tmp.isObject(), true);
     482    }
     483
     484
     485    // V2 constructors: in this case, you have to use QScriptEngine::toObject()
     486    {
     487        QScriptValue undefined = QScriptValue(QScriptValue::UndefinedValue);
     488        QVERIFY(!undefined.toObject().isValid());
     489        QVERIFY(!eng.toObject(undefined).isValid());
     490        QVERIFY(!undefined.engine());
     491
     492        QScriptValue null = QScriptValue(QScriptValue::NullValue);
     493        QVERIFY(!null.toObject().isValid());
     494        QVERIFY(!eng.toObject(null).isValid());
     495        QVERIFY(!null.engine());
     496
     497        QScriptValue falskt = QScriptValue(false);
     498        QVERIFY(!falskt.toObject().isValid());
     499        QCOMPARE(falskt.isObject(), false);
     500        QVERIFY(!falskt.engine());
     501        {
     502            QScriptValue tmp = eng.toObject(falskt);
     503            QVERIFY(tmp.isObject());
     504            QVERIFY(tmp.toBool());
     505            QVERIFY(!falskt.isObject());
     506        }
     507
     508        QScriptValue sant = QScriptValue(true);
     509        QVERIFY(!sant.toObject().isValid());
     510        QCOMPARE(sant.isObject(), false);
     511        QVERIFY(!sant.engine());
     512        {
     513            QScriptValue tmp = eng.toObject(sant);
     514            QVERIFY(tmp.isObject());
     515            QVERIFY(tmp.toBool());
     516            QVERIFY(!sant.isObject());
     517        }
     518
     519        QScriptValue number = QScriptValue(123.0);
     520        QVERIFY(!number.toObject().isValid());
     521        QVERIFY(!number.engine());
     522        QCOMPARE(number.isObject(), false);
     523        {
     524            QScriptValue tmp = eng.toObject(number);
     525            QVERIFY(tmp.isObject());
     526            QCOMPARE(tmp.toInt32(), number.toInt32());
     527            QVERIFY(!number.isObject());
     528        }
     529
     530        QScriptValue str = QScriptValue(QString::fromLatin1("ciao"));
     531        QVERIFY(!str.toObject().isValid());
     532        QVERIFY(!str.engine());
     533        QCOMPARE(str.isObject(), false);
     534        {
     535            QScriptValue tmp = eng.toObject(str);
     536            QVERIFY(tmp.isObject());
     537            QCOMPARE(tmp.toString(), QString::fromLatin1("ciao"));
     538            QVERIFY(!str.isObject());
     539        }
     540    }
     541}
    434542
    435543QTEST_MAIN(tst_QScriptValue)
  • trunk/JavaScriptCore/qt/tests/qscriptvalue/tst_qscriptvalue.h

    r55427 r59503  
    4848    void call();
    4949    void ctor();
     50    void toObjectSimple();
    5051
    5152    // Generated test functions.
Note: See TracChangeset for help on using the changeset viewer.