tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
changeset 7 f7bc934e204c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp	Wed Mar 31 11:06:36 2010 +0300
@@ -0,0 +1,6496 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+
+#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
+
+void tst_QScriptValue::initScriptValues()
+{
+    m_values.clear();
+    if (engine) 
+        delete engine;
+    engine = new QScriptEngine;
+    DEFINE_TEST_VALUE(QScriptValue());
+    DEFINE_TEST_VALUE(QScriptValue(QScriptValue::UndefinedValue));
+    DEFINE_TEST_VALUE(QScriptValue(QScriptValue::NullValue));
+    DEFINE_TEST_VALUE(QScriptValue(true));
+    DEFINE_TEST_VALUE(QScriptValue(false));
+    DEFINE_TEST_VALUE(QScriptValue(int(122)));
+    DEFINE_TEST_VALUE(QScriptValue(uint(124)));
+    DEFINE_TEST_VALUE(QScriptValue(0));
+    DEFINE_TEST_VALUE(QScriptValue(0.0));
+    DEFINE_TEST_VALUE(QScriptValue(123.0));
+    DEFINE_TEST_VALUE(QScriptValue(6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(-6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(0x43211234));
+    DEFINE_TEST_VALUE(QScriptValue(0x10000));
+    DEFINE_TEST_VALUE(QScriptValue(0x10001));
+    DEFINE_TEST_VALUE(QScriptValue(qSNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(qQNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(-qInf()));
+    DEFINE_TEST_VALUE(QScriptValue("NaN"));
+    DEFINE_TEST_VALUE(QScriptValue("Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue("-Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue("ciao"));
+    DEFINE_TEST_VALUE(QScriptValue(QString::fromLatin1("ciao")));
+    DEFINE_TEST_VALUE(QScriptValue(QString("")));
+    DEFINE_TEST_VALUE(QScriptValue(QString()));
+    DEFINE_TEST_VALUE(QScriptValue(QString("0")));
+    DEFINE_TEST_VALUE(QScriptValue(QString("123")));
+    DEFINE_TEST_VALUE(QScriptValue(QString("12.4")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::UndefinedValue));
+    DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::NullValue));
+    DEFINE_TEST_VALUE(QScriptValue(0, true));
+    DEFINE_TEST_VALUE(QScriptValue(0, false));
+    DEFINE_TEST_VALUE(QScriptValue(0, int(122)));
+    DEFINE_TEST_VALUE(QScriptValue(0, uint(124)));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0.0));
+    DEFINE_TEST_VALUE(QScriptValue(0, 123.0));
+    DEFINE_TEST_VALUE(QScriptValue(0, 6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(0, -6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0x43211234));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0x10000));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0x10001));
+    DEFINE_TEST_VALUE(QScriptValue(0, qSNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(0, qQNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(0, qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(0, -qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(0, "NaN"));
+    DEFINE_TEST_VALUE(QScriptValue(0, "Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(0, "-Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(0, "ciao"));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString::fromLatin1("ciao")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString()));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("0")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("123")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("12.3")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::UndefinedValue));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::NullValue));
+    DEFINE_TEST_VALUE(QScriptValue(engine, true));
+    DEFINE_TEST_VALUE(QScriptValue(engine, false));
+    DEFINE_TEST_VALUE(QScriptValue(engine, int(122)));
+    DEFINE_TEST_VALUE(QScriptValue(engine, uint(124)));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0.0));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 123.0));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(engine, -6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0x43211234));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0x10000));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0x10001));
+    DEFINE_TEST_VALUE(QScriptValue(engine, qSNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, qQNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, -qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "NaN"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "-Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "ciao"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString::fromLatin1("ciao")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("0")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("123")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("1.23")));
+    DEFINE_TEST_VALUE(engine->evaluate("[]"));
+    DEFINE_TEST_VALUE(engine->evaluate("{}"));
+    DEFINE_TEST_VALUE(engine->evaluate("Object.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Date.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Array.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Function.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Error.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Object"));
+    DEFINE_TEST_VALUE(engine->evaluate("Array"));
+    DEFINE_TEST_VALUE(engine->evaluate("Number"));
+    DEFINE_TEST_VALUE(engine->evaluate("Function"));
+    DEFINE_TEST_VALUE(engine->evaluate("(function() { return 1; })"));
+    DEFINE_TEST_VALUE(engine->evaluate("(function() { return 'ciao'; })"));
+    DEFINE_TEST_VALUE(engine->evaluate("(function() { throw new Error('foo'); })"));
+    DEFINE_TEST_VALUE(engine->evaluate("/foo/"));
+    DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
+    DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
+    DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+    DEFINE_TEST_VALUE(engine->nullValue());
+    DEFINE_TEST_VALUE(engine->undefinedValue());
+}
+
+
+void tst_QScriptValue::isValid_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isValid_makeData(const char* expr)
+{
+    static QSet<QString> isValid;
+    if (isValid.isEmpty()) {
+        isValid << "QScriptValue(QScriptValue::UndefinedValue)"
+                << "QScriptValue(QScriptValue::NullValue)"
+                << "QScriptValue(true)"
+                << "QScriptValue(false)"
+                << "QScriptValue(int(122))"
+                << "QScriptValue(uint(124))"
+                << "QScriptValue(0)"
+                << "QScriptValue(0.0)"
+                << "QScriptValue(123.0)"
+                << "QScriptValue(6.37e-8)"
+                << "QScriptValue(-6.37e-8)"
+                << "QScriptValue(0x43211234)"
+                << "QScriptValue(0x10000)"
+                << "QScriptValue(0x10001)"
+                << "QScriptValue(qSNaN())"
+                << "QScriptValue(qQNaN())"
+                << "QScriptValue(qInf())"
+                << "QScriptValue(-qInf())"
+                << "QScriptValue(\"NaN\")"
+                << "QScriptValue(\"Infinity\")"
+                << "QScriptValue(\"-Infinity\")"
+                << "QScriptValue(\"ciao\")"
+                << "QScriptValue(QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(QString(\"\"))"
+                << "QScriptValue(QString())"
+                << "QScriptValue(QString(\"0\"))"
+                << "QScriptValue(QString(\"123\"))"
+                << "QScriptValue(QString(\"12.4\"))"
+                << "QScriptValue(0, QScriptValue::UndefinedValue)"
+                << "QScriptValue(0, QScriptValue::NullValue)"
+                << "QScriptValue(0, true)"
+                << "QScriptValue(0, false)"
+                << "QScriptValue(0, int(122))"
+                << "QScriptValue(0, uint(124))"
+                << "QScriptValue(0, 0)"
+                << "QScriptValue(0, 0.0)"
+                << "QScriptValue(0, 123.0)"
+                << "QScriptValue(0, 6.37e-8)"
+                << "QScriptValue(0, -6.37e-8)"
+                << "QScriptValue(0, 0x43211234)"
+                << "QScriptValue(0, 0x10000)"
+                << "QScriptValue(0, 0x10001)"
+                << "QScriptValue(0, qSNaN())"
+                << "QScriptValue(0, qQNaN())"
+                << "QScriptValue(0, qInf())"
+                << "QScriptValue(0, -qInf())"
+                << "QScriptValue(0, \"NaN\")"
+                << "QScriptValue(0, \"Infinity\")"
+                << "QScriptValue(0, \"-Infinity\")"
+                << "QScriptValue(0, \"ciao\")"
+                << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(0, QString(\"\"))"
+                << "QScriptValue(0, QString())"
+                << "QScriptValue(0, QString(\"0\"))"
+                << "QScriptValue(0, QString(\"123\"))"
+                << "QScriptValue(0, QString(\"12.3\"))"
+                << "QScriptValue(engine, QScriptValue::UndefinedValue)"
+                << "QScriptValue(engine, QScriptValue::NullValue)"
+                << "QScriptValue(engine, true)"
+                << "QScriptValue(engine, false)"
+                << "QScriptValue(engine, int(122))"
+                << "QScriptValue(engine, uint(124))"
+                << "QScriptValue(engine, 0)"
+                << "QScriptValue(engine, 0.0)"
+                << "QScriptValue(engine, 123.0)"
+                << "QScriptValue(engine, 6.37e-8)"
+                << "QScriptValue(engine, -6.37e-8)"
+                << "QScriptValue(engine, 0x43211234)"
+                << "QScriptValue(engine, 0x10000)"
+                << "QScriptValue(engine, 0x10001)"
+                << "QScriptValue(engine, qSNaN())"
+                << "QScriptValue(engine, qQNaN())"
+                << "QScriptValue(engine, qInf())"
+                << "QScriptValue(engine, -qInf())"
+                << "QScriptValue(engine, \"NaN\")"
+                << "QScriptValue(engine, \"Infinity\")"
+                << "QScriptValue(engine, \"-Infinity\")"
+                << "QScriptValue(engine, \"ciao\")"
+                << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(engine, QString(\"\"))"
+                << "QScriptValue(engine, QString())"
+                << "QScriptValue(engine, QString(\"0\"))"
+                << "QScriptValue(engine, QString(\"123\"))"
+                << "QScriptValue(engine, QString(\"1.23\"))"
+                << "engine->evaluate(\"[]\")"
+                << "engine->evaluate(\"{}\")"
+                << "engine->evaluate(\"Object.prototype\")"
+                << "engine->evaluate(\"Date.prototype\")"
+                << "engine->evaluate(\"Array.prototype\")"
+                << "engine->evaluate(\"Function.prototype\")"
+                << "engine->evaluate(\"Error.prototype\")"
+                << "engine->evaluate(\"Object\")"
+                << "engine->evaluate(\"Array\")"
+                << "engine->evaluate(\"Number\")"
+                << "engine->evaluate(\"Function\")"
+                << "engine->evaluate(\"(function() { return 1; })\")"
+                << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+                << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+                << "engine->evaluate(\"/foo/\")"
+                << "engine->evaluate(\"new Object()\")"
+                << "engine->evaluate(\"new Array()\")"
+                << "engine->evaluate(\"new Error()\")"
+                << "engine->nullValue()"
+                << "engine->undefinedValue()"
+               ;
+    }
+    newRow(expr) << isValid.contains(expr);
+}
+
+void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isValid(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isValid)
+
+
+void tst_QScriptValue::isBool_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isBool_makeData(const char* expr)
+{
+    static QSet<QString> isBool;
+    if (isBool.isEmpty()) {
+        isBool << "QScriptValue(true)"
+                << "QScriptValue(false)"
+                << "QScriptValue(0, true)"
+                << "QScriptValue(0, false)"
+                << "QScriptValue(engine, true)"
+                << "QScriptValue(engine, false)"
+               ;
+    }
+    newRow(expr) << isBool.contains(expr);
+}
+
+void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBool)
+
+
+void tst_QScriptValue::isBoolean_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isBoolean_makeData(const char* expr)
+{
+    static QSet<QString> isBoolean;
+    if (isBoolean.isEmpty()) {
+        isBoolean << "QScriptValue(true)"
+                << "QScriptValue(false)"
+                << "QScriptValue(0, true)"
+                << "QScriptValue(0, false)"
+                << "QScriptValue(engine, true)"
+                << "QScriptValue(engine, false)"
+               ;
+    }
+    newRow(expr) << isBoolean.contains(expr);
+}
+
+void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBoolean)
+
+
+void tst_QScriptValue::isNumber_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isNumber_makeData(const char* expr)
+{
+    static QSet<QString> isNumber;
+    if (isNumber.isEmpty()) {
+        isNumber << "QScriptValue(int(122))"
+                << "QScriptValue(uint(124))"
+                << "QScriptValue(0)"
+                << "QScriptValue(0.0)"
+                << "QScriptValue(123.0)"
+                << "QScriptValue(6.37e-8)"
+                << "QScriptValue(-6.37e-8)"
+                << "QScriptValue(0x43211234)"
+                << "QScriptValue(0x10000)"
+                << "QScriptValue(0x10001)"
+                << "QScriptValue(qSNaN())"
+                << "QScriptValue(qQNaN())"
+                << "QScriptValue(qInf())"
+                << "QScriptValue(-qInf())"
+                << "QScriptValue(0, int(122))"
+                << "QScriptValue(0, uint(124))"
+                << "QScriptValue(0, 0)"
+                << "QScriptValue(0, 0.0)"
+                << "QScriptValue(0, 123.0)"
+                << "QScriptValue(0, 6.37e-8)"
+                << "QScriptValue(0, -6.37e-8)"
+                << "QScriptValue(0, 0x43211234)"
+                << "QScriptValue(0, 0x10000)"
+                << "QScriptValue(0, 0x10001)"
+                << "QScriptValue(0, qSNaN())"
+                << "QScriptValue(0, qQNaN())"
+                << "QScriptValue(0, qInf())"
+                << "QScriptValue(0, -qInf())"
+                << "QScriptValue(engine, int(122))"
+                << "QScriptValue(engine, uint(124))"
+                << "QScriptValue(engine, 0)"
+                << "QScriptValue(engine, 0.0)"
+                << "QScriptValue(engine, 123.0)"
+                << "QScriptValue(engine, 6.37e-8)"
+                << "QScriptValue(engine, -6.37e-8)"
+                << "QScriptValue(engine, 0x43211234)"
+                << "QScriptValue(engine, 0x10000)"
+                << "QScriptValue(engine, 0x10001)"
+                << "QScriptValue(engine, qSNaN())"
+                << "QScriptValue(engine, qQNaN())"
+                << "QScriptValue(engine, qInf())"
+                << "QScriptValue(engine, -qInf())"
+               ;
+    }
+    newRow(expr) << isNumber.contains(expr);
+}
+
+void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNumber)
+
+
+void tst_QScriptValue::isFunction_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isFunction_makeData(const char* expr)
+{
+    static QSet<QString> isFunction;
+    if (isFunction.isEmpty()) {
+        isFunction << "engine->evaluate(\"Function.prototype\")"
+                << "engine->evaluate(\"Object\")"
+                << "engine->evaluate(\"Array\")"
+                << "engine->evaluate(\"Number\")"
+                << "engine->evaluate(\"Function\")"
+                << "engine->evaluate(\"(function() { return 1; })\")"
+                << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+                << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+                << "engine->evaluate(\"/foo/\")"
+               ;
+    }
+    newRow(expr) << isFunction.contains(expr);
+}
+
+void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isFunction(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isFunction)
+
+
+void tst_QScriptValue::isNull_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isNull_makeData(const char* expr)
+{
+    static QSet<QString> isNull;
+    if (isNull.isEmpty()) {
+        isNull << "QScriptValue(QScriptValue::NullValue)"
+                << "QScriptValue(0, QScriptValue::NullValue)"
+                << "QScriptValue(engine, QScriptValue::NullValue)"
+                << "engine->nullValue()"
+               ;
+    }
+    newRow(expr) << isNull.contains(expr);
+}
+
+void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isNull(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNull)
+
+
+void tst_QScriptValue::isString_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isString_makeData(const char* expr)
+{
+    static QSet<QString> isString;
+    if (isString.isEmpty()) {
+        isString << "QScriptValue(\"NaN\")"
+                << "QScriptValue(\"Infinity\")"
+                << "QScriptValue(\"-Infinity\")"
+                << "QScriptValue(\"ciao\")"
+                << "QScriptValue(QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(QString(\"\"))"
+                << "QScriptValue(QString())"
+                << "QScriptValue(QString(\"0\"))"
+                << "QScriptValue(QString(\"123\"))"
+                << "QScriptValue(QString(\"12.4\"))"
+                << "QScriptValue(0, \"NaN\")"
+                << "QScriptValue(0, \"Infinity\")"
+                << "QScriptValue(0, \"-Infinity\")"
+                << "QScriptValue(0, \"ciao\")"
+                << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(0, QString(\"\"))"
+                << "QScriptValue(0, QString())"
+                << "QScriptValue(0, QString(\"0\"))"
+                << "QScriptValue(0, QString(\"123\"))"
+                << "QScriptValue(0, QString(\"12.3\"))"
+                << "QScriptValue(engine, \"NaN\")"
+                << "QScriptValue(engine, \"Infinity\")"
+                << "QScriptValue(engine, \"-Infinity\")"
+                << "QScriptValue(engine, \"ciao\")"
+                << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(engine, QString(\"\"))"
+                << "QScriptValue(engine, QString())"
+                << "QScriptValue(engine, QString(\"0\"))"
+                << "QScriptValue(engine, QString(\"123\"))"
+                << "QScriptValue(engine, QString(\"1.23\"))"
+               ;
+    }
+    newRow(expr) << isString.contains(expr);
+}
+
+void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isString)
+
+
+void tst_QScriptValue::isUndefined_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isUndefined_makeData(const char* expr)
+{
+    static QSet<QString> isUndefined;
+    if (isUndefined.isEmpty()) {
+        isUndefined << "QScriptValue(QScriptValue::UndefinedValue)"
+                << "QScriptValue(0, QScriptValue::UndefinedValue)"
+                << "QScriptValue(engine, QScriptValue::UndefinedValue)"
+                << "engine->evaluate(\"{}\")"
+                << "engine->undefinedValue()"
+               ;
+    }
+    newRow(expr) << isUndefined.contains(expr);
+}
+
+void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isUndefined(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isUndefined)
+
+
+
+
+
+void tst_QScriptValue::isObject_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isObject_makeData(const char* expr)
+{
+    static QSet<QString> isObject;
+    if (isObject.isEmpty()) {
+        isObject << "engine->evaluate(\"[]\")"
+                << "engine->evaluate(\"Object.prototype\")"
+                << "engine->evaluate(\"Date.prototype\")"
+                << "engine->evaluate(\"Array.prototype\")"
+                << "engine->evaluate(\"Function.prototype\")"
+                << "engine->evaluate(\"Error.prototype\")"
+                << "engine->evaluate(\"Object\")"
+                << "engine->evaluate(\"Array\")"
+                << "engine->evaluate(\"Number\")"
+                << "engine->evaluate(\"Function\")"
+                << "engine->evaluate(\"(function() { return 1; })\")"
+                << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+                << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+                << "engine->evaluate(\"/foo/\")"
+                << "engine->evaluate(\"new Object()\")"
+                << "engine->evaluate(\"new Array()\")"
+                << "engine->evaluate(\"new Error()\")"
+               ;
+    }
+    newRow(expr) << isObject.contains(expr);
+}
+
+void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isObject)
+
+
+void tst_QScriptValue::isDate_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isDate_makeData(const char* expr)
+{
+    static QSet<QString> isDate;
+    if (isDate.isEmpty()) {
+        isDate << "engine->evaluate(\"Date.prototype\")"
+               ;
+    }
+    newRow(expr) << isDate.contains(expr);
+}
+
+void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isDate(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isDate)
+
+
+void tst_QScriptValue::isRegExp_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isRegExp_makeData(const char* expr)
+{
+    static QSet<QString> isRegExp;
+    if (isRegExp.isEmpty()) {
+        isRegExp << "engine->evaluate(\"/foo/\")"
+               ;
+    }
+    newRow(expr) << isRegExp.contains(expr);
+}
+
+void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isRegExp(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isRegExp)
+
+
+void tst_QScriptValue::isArray_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isArray_makeData(const char* expr)
+{
+    static QSet<QString> isArray;
+    if (isArray.isEmpty()) {
+        isArray << "engine->evaluate(\"[]\")"
+                << "engine->evaluate(\"Array.prototype\")"
+                << "engine->evaluate(\"new Array()\")"
+               ;
+    }
+    newRow(expr) << isArray.contains(expr);
+}
+
+void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isArray(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isArray)
+
+
+void tst_QScriptValue::isError_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isError_makeData(const char* expr)
+{
+    static QSet<QString> isError;
+    if (isError.isEmpty()) {
+        isError << "engine->evaluate(\"Error.prototype\")"
+                << "engine->evaluate(\"new Error()\")"
+               ;
+    }
+    newRow(expr) << isError.contains(expr);
+}
+
+void tst_QScriptValue::isError_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isError(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isError)
+
+
+
+void tst_QScriptValue::toString_initData()
+{
+    QTest::addColumn<QString>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toString_makeData(const char* expr)
+{
+    static QHash<QString, QString> toString;
+    if (toString.isEmpty()) {
+        toString.insert("QScriptValue()", "");
+        toString.insert("QScriptValue(QScriptValue::UndefinedValue)", "undefined");
+        toString.insert("QScriptValue(QScriptValue::NullValue)", "null");
+        toString.insert("QScriptValue(true)", "true");
+        toString.insert("QScriptValue(false)", "false");
+        toString.insert("QScriptValue(int(122))", "122");
+        toString.insert("QScriptValue(uint(124))", "124");
+        toString.insert("QScriptValue(0)", "0");
+        toString.insert("QScriptValue(0.0)", "0");
+        toString.insert("QScriptValue(123.0)", "123");
+        toString.insert("QScriptValue(6.37e-8)", "6.37e-8");
+        toString.insert("QScriptValue(-6.37e-8)", "-6.37e-8");
+        toString.insert("QScriptValue(0x43211234)", "1126240820");
+        toString.insert("QScriptValue(0x10000)", "65536");
+        toString.insert("QScriptValue(0x10001)", "65537");
+        toString.insert("QScriptValue(qSNaN())", "NaN");
+        toString.insert("QScriptValue(qQNaN())", "NaN");
+        toString.insert("QScriptValue(qInf())", "Infinity");
+        toString.insert("QScriptValue(-qInf())", "-Infinity");
+        toString.insert("QScriptValue(\"NaN\")", "NaN");
+        toString.insert("QScriptValue(\"Infinity\")", "Infinity");
+        toString.insert("QScriptValue(\"-Infinity\")", "-Infinity");
+        toString.insert("QScriptValue(\"ciao\")", "ciao");
+        toString.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", "ciao");
+        toString.insert("QScriptValue(QString(\"\"))", "");
+        toString.insert("QScriptValue(QString())", "");
+        toString.insert("QScriptValue(QString(\"0\"))", "0");
+        toString.insert("QScriptValue(QString(\"123\"))", "123");
+        toString.insert("QScriptValue(QString(\"12.4\"))", "12.4");
+        toString.insert("QScriptValue(0, QScriptValue::UndefinedValue)", "undefined");
+        toString.insert("QScriptValue(0, QScriptValue::NullValue)", "null");
+        toString.insert("QScriptValue(0, true)", "true");
+        toString.insert("QScriptValue(0, false)", "false");
+        toString.insert("QScriptValue(0, int(122))", "122");
+        toString.insert("QScriptValue(0, uint(124))", "124");
+        toString.insert("QScriptValue(0, 0)", "0");
+        toString.insert("QScriptValue(0, 0.0)", "0");
+        toString.insert("QScriptValue(0, 123.0)", "123");
+        toString.insert("QScriptValue(0, 6.37e-8)", "6.37e-8");
+        toString.insert("QScriptValue(0, -6.37e-8)", "-6.37e-8");
+        toString.insert("QScriptValue(0, 0x43211234)", "1126240820");
+        toString.insert("QScriptValue(0, 0x10000)", "65536");
+        toString.insert("QScriptValue(0, 0x10001)", "65537");
+        toString.insert("QScriptValue(0, qSNaN())", "NaN");
+        toString.insert("QScriptValue(0, qQNaN())", "NaN");
+        toString.insert("QScriptValue(0, qInf())", "Infinity");
+        toString.insert("QScriptValue(0, -qInf())", "-Infinity");
+        toString.insert("QScriptValue(0, \"NaN\")", "NaN");
+        toString.insert("QScriptValue(0, \"Infinity\")", "Infinity");
+        toString.insert("QScriptValue(0, \"-Infinity\")", "-Infinity");
+        toString.insert("QScriptValue(0, \"ciao\")", "ciao");
+        toString.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", "ciao");
+        toString.insert("QScriptValue(0, QString(\"\"))", "");
+        toString.insert("QScriptValue(0, QString())", "");
+        toString.insert("QScriptValue(0, QString(\"0\"))", "0");
+        toString.insert("QScriptValue(0, QString(\"123\"))", "123");
+        toString.insert("QScriptValue(0, QString(\"12.3\"))", "12.3");
+        toString.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", "undefined");
+        toString.insert("QScriptValue(engine, QScriptValue::NullValue)", "null");
+        toString.insert("QScriptValue(engine, true)", "true");
+        toString.insert("QScriptValue(engine, false)", "false");
+        toString.insert("QScriptValue(engine, int(122))", "122");
+        toString.insert("QScriptValue(engine, uint(124))", "124");
+        toString.insert("QScriptValue(engine, 0)", "0");
+        toString.insert("QScriptValue(engine, 0.0)", "0");
+        toString.insert("QScriptValue(engine, 123.0)", "123");
+        toString.insert("QScriptValue(engine, 6.37e-8)", "6.37e-8");
+        toString.insert("QScriptValue(engine, -6.37e-8)", "-6.37e-8");
+        toString.insert("QScriptValue(engine, 0x43211234)", "1126240820");
+        toString.insert("QScriptValue(engine, 0x10000)", "65536");
+        toString.insert("QScriptValue(engine, 0x10001)", "65537");
+        toString.insert("QScriptValue(engine, qSNaN())", "NaN");
+        toString.insert("QScriptValue(engine, qQNaN())", "NaN");
+        toString.insert("QScriptValue(engine, qInf())", "Infinity");
+        toString.insert("QScriptValue(engine, -qInf())", "-Infinity");
+        toString.insert("QScriptValue(engine, \"NaN\")", "NaN");
+        toString.insert("QScriptValue(engine, \"Infinity\")", "Infinity");
+        toString.insert("QScriptValue(engine, \"-Infinity\")", "-Infinity");
+        toString.insert("QScriptValue(engine, \"ciao\")", "ciao");
+        toString.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", "ciao");
+        toString.insert("QScriptValue(engine, QString(\"\"))", "");
+        toString.insert("QScriptValue(engine, QString())", "");
+        toString.insert("QScriptValue(engine, QString(\"0\"))", "0");
+        toString.insert("QScriptValue(engine, QString(\"123\"))", "123");
+        toString.insert("QScriptValue(engine, QString(\"1.23\"))", "1.23");
+        toString.insert("engine->evaluate(\"[]\")", "");
+        toString.insert("engine->evaluate(\"{}\")", "undefined");
+        toString.insert("engine->evaluate(\"Object.prototype\")", "[object Object]");
+        toString.insert("engine->evaluate(\"Date.prototype\")", "Invalid Date");
+        toString.insert("engine->evaluate(\"Array.prototype\")", "");
+        toString.insert("engine->evaluate(\"Function.prototype\")", "function () {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Error.prototype\")", "Error: Unknown error");
+        toString.insert("engine->evaluate(\"Object\")", "function Object() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Array\")", "function Array() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Number\")", "function Number() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Function\")", "function Function() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"(function() { return 1; })\")", "function () { return 1; }");
+        toString.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", "function () { return 'ciao'; }");
+        toString.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", "function () { throw new Error('foo'); }");
+        toString.insert("engine->evaluate(\"/foo/\")", "/foo/");
+        toString.insert("engine->evaluate(\"new Object()\")", "[object Object]");
+        toString.insert("engine->evaluate(\"new Array()\")", "");
+        toString.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+        toString.insert("engine->nullValue()", "null");
+        toString.insert("engine->undefinedValue()", "undefined");
+    }
+    newRow(expr) << toString.value(expr);
+}
+
+void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
+{
+    QFETCH(QString, expected);
+    QCOMPARE(value.toString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toString)
+
+
+void tst_QScriptValue::toNumber_initData()
+{
+    QTest::addColumn<qsreal>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toNumber_makeData(const char* expr)
+{
+    static QHash<QString, qsreal> toNumber;
+    if (toNumber.isEmpty()) {
+        toNumber.insert("QScriptValue()", 0);
+        toNumber.insert("QScriptValue(QScriptValue::UndefinedValue)", qQNaN());
+        toNumber.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toNumber.insert("QScriptValue(true)", 1);
+        toNumber.insert("QScriptValue(false)", 0);
+        toNumber.insert("QScriptValue(int(122))", 122);
+        toNumber.insert("QScriptValue(uint(124))", 124);
+        toNumber.insert("QScriptValue(0)", 0);
+        toNumber.insert("QScriptValue(0.0)", 0);
+        toNumber.insert("QScriptValue(123.0)", 123);
+        toNumber.insert("QScriptValue(6.37e-8)", 6.369999999999999e-08);
+        toNumber.insert("QScriptValue(-6.37e-8)", -6.369999999999999e-08);
+        toNumber.insert("QScriptValue(0x43211234)", 1126240820);
+        toNumber.insert("QScriptValue(0x10000)", 65536);
+        toNumber.insert("QScriptValue(0x10001)", 65537);
+        toNumber.insert("QScriptValue(qSNaN())", qQNaN());
+        toNumber.insert("QScriptValue(qQNaN())", qQNaN());
+        toNumber.insert("QScriptValue(qInf())", qInf());
+        toNumber.insert("QScriptValue(-qInf())", qInf());
+        toNumber.insert("QScriptValue(\"NaN\")", qQNaN());
+        toNumber.insert("QScriptValue(\"Infinity\")", qInf());
+        toNumber.insert("QScriptValue(\"-Infinity\")", qInf());
+        toNumber.insert("QScriptValue(\"ciao\")", qQNaN());
+        toNumber.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", qQNaN());
+        toNumber.insert("QScriptValue(QString(\"\"))", 0);
+        toNumber.insert("QScriptValue(QString())", 0);
+        toNumber.insert("QScriptValue(QString(\"0\"))", 0);
+        toNumber.insert("QScriptValue(QString(\"123\"))", 123);
+        toNumber.insert("QScriptValue(QString(\"12.4\"))", 12.4);
+        toNumber.insert("QScriptValue(0, QScriptValue::UndefinedValue)", qQNaN());
+        toNumber.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toNumber.insert("QScriptValue(0, true)", 1);
+        toNumber.insert("QScriptValue(0, false)", 0);
+        toNumber.insert("QScriptValue(0, int(122))", 122);
+        toNumber.insert("QScriptValue(0, uint(124))", 124);
+        toNumber.insert("QScriptValue(0, 0)", 0);
+        toNumber.insert("QScriptValue(0, 0.0)", 0);
+        toNumber.insert("QScriptValue(0, 123.0)", 123);
+        toNumber.insert("QScriptValue(0, 6.37e-8)", 6.369999999999999e-08);
+        toNumber.insert("QScriptValue(0, -6.37e-8)", -6.369999999999999e-08);
+        toNumber.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toNumber.insert("QScriptValue(0, 0x10000)", 65536);
+        toNumber.insert("QScriptValue(0, 0x10001)", 65537);
+        toNumber.insert("QScriptValue(0, qSNaN())", qQNaN());
+        toNumber.insert("QScriptValue(0, qQNaN())", qQNaN());
+        toNumber.insert("QScriptValue(0, qInf())", qInf());
+        toNumber.insert("QScriptValue(0, -qInf())", qInf());
+        toNumber.insert("QScriptValue(0, \"NaN\")", qQNaN());
+        toNumber.insert("QScriptValue(0, \"Infinity\")", qInf());
+        toNumber.insert("QScriptValue(0, \"-Infinity\")", qInf());
+        toNumber.insert("QScriptValue(0, \"ciao\")", qQNaN());
+        toNumber.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", qQNaN());
+        toNumber.insert("QScriptValue(0, QString(\"\"))", 0);
+        toNumber.insert("QScriptValue(0, QString())", 0);
+        toNumber.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toNumber.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toNumber.insert("QScriptValue(0, QString(\"12.3\"))", 12.3);
+        toNumber.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", qQNaN());
+        toNumber.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toNumber.insert("QScriptValue(engine, true)", 1);
+        toNumber.insert("QScriptValue(engine, false)", 0);
+        toNumber.insert("QScriptValue(engine, int(122))", 122);
+        toNumber.insert("QScriptValue(engine, uint(124))", 124);
+        toNumber.insert("QScriptValue(engine, 0)", 0);
+        toNumber.insert("QScriptValue(engine, 0.0)", 0);
+        toNumber.insert("QScriptValue(engine, 123.0)", 123);
+        toNumber.insert("QScriptValue(engine, 6.37e-8)", 6.369999999999999e-08);
+        toNumber.insert("QScriptValue(engine, -6.37e-8)", -6.369999999999999e-08);
+        toNumber.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toNumber.insert("QScriptValue(engine, 0x10000)", 65536);
+        toNumber.insert("QScriptValue(engine, 0x10001)", 65537);
+        toNumber.insert("QScriptValue(engine, qSNaN())", qQNaN());
+        toNumber.insert("QScriptValue(engine, qQNaN())", qQNaN());
+        toNumber.insert("QScriptValue(engine, qInf())", qInf());
+        toNumber.insert("QScriptValue(engine, -qInf())", qInf());
+        toNumber.insert("QScriptValue(engine, \"NaN\")", qQNaN());
+        toNumber.insert("QScriptValue(engine, \"Infinity\")", qInf());
+        toNumber.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+        toNumber.insert("QScriptValue(engine, \"ciao\")", qQNaN());
+        toNumber.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", qQNaN());
+        toNumber.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toNumber.insert("QScriptValue(engine, QString())", 0);
+        toNumber.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toNumber.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toNumber.insert("QScriptValue(engine, QString(\"1.23\"))", 1.23);
+        toNumber.insert("engine->evaluate(\"[]\")", 0);
+        toNumber.insert("engine->evaluate(\"{}\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Object.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Date.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toNumber.insert("engine->evaluate(\"Function.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Error.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Object\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Array\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Number\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Function\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"(function() { return 1; })\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"/foo/\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"new Object()\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"new Array()\")", 0);
+        toNumber.insert("engine->evaluate(\"new Error()\")", qQNaN());
+        toNumber.insert("engine->nullValue()", 0);
+        toNumber.insert("engine->undefinedValue()", qQNaN());
+    }
+    newRow(expr) << toNumber.value(expr);
+}
+
+void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qsreal, expected);
+    if (qIsNaN(expected)) {
+        QVERIFY(qIsNaN(value.toNumber()));
+        return;
+    }
+    if (qIsInf(expected)) {
+        QVERIFY(qIsInf(value.toNumber()));
+        return;
+    }
+    QCOMPARE(value.toNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toNumber)
+
+
+void tst_QScriptValue::toBool_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toBool_makeData(const char* expr)
+{
+    static QHash<QString, bool> toBool;
+    if (toBool.isEmpty()) {
+        toBool.insert("QScriptValue()", false);
+        toBool.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+        toBool.insert("QScriptValue(QScriptValue::NullValue)", false);
+        toBool.insert("QScriptValue(true)", true);
+        toBool.insert("QScriptValue(false)", false);
+        toBool.insert("QScriptValue(int(122))", true);
+        toBool.insert("QScriptValue(uint(124))", true);
+        toBool.insert("QScriptValue(0)", false);
+        toBool.insert("QScriptValue(0.0)", false);
+        toBool.insert("QScriptValue(123.0)", true);
+        toBool.insert("QScriptValue(6.37e-8)", true);
+        toBool.insert("QScriptValue(-6.37e-8)", true);
+        toBool.insert("QScriptValue(0x43211234)", true);
+        toBool.insert("QScriptValue(0x10000)", true);
+        toBool.insert("QScriptValue(0x10001)", true);
+        toBool.insert("QScriptValue(qSNaN())", false);
+        toBool.insert("QScriptValue(qQNaN())", false);
+        toBool.insert("QScriptValue(qInf())", true);
+        toBool.insert("QScriptValue(-qInf())", true);
+        toBool.insert("QScriptValue(\"NaN\")", true);
+        toBool.insert("QScriptValue(\"Infinity\")", true);
+        toBool.insert("QScriptValue(\"-Infinity\")", true);
+        toBool.insert("QScriptValue(\"ciao\")", true);
+        toBool.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+        toBool.insert("QScriptValue(QString(\"\"))", false);
+        toBool.insert("QScriptValue(QString())", false);
+        toBool.insert("QScriptValue(QString(\"0\"))", true);
+        toBool.insert("QScriptValue(QString(\"123\"))", true);
+        toBool.insert("QScriptValue(QString(\"12.4\"))", true);
+        toBool.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+        toBool.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+        toBool.insert("QScriptValue(0, true)", true);
+        toBool.insert("QScriptValue(0, false)", false);
+        toBool.insert("QScriptValue(0, int(122))", true);
+        toBool.insert("QScriptValue(0, uint(124))", true);
+        toBool.insert("QScriptValue(0, 0)", false);
+        toBool.insert("QScriptValue(0, 0.0)", false);
+        toBool.insert("QScriptValue(0, 123.0)", true);
+        toBool.insert("QScriptValue(0, 6.37e-8)", true);
+        toBool.insert("QScriptValue(0, -6.37e-8)", true);
+        toBool.insert("QScriptValue(0, 0x43211234)", true);
+        toBool.insert("QScriptValue(0, 0x10000)", true);
+        toBool.insert("QScriptValue(0, 0x10001)", true);
+        toBool.insert("QScriptValue(0, qSNaN())", false);
+        toBool.insert("QScriptValue(0, qQNaN())", false);
+        toBool.insert("QScriptValue(0, qInf())", true);
+        toBool.insert("QScriptValue(0, -qInf())", true);
+        toBool.insert("QScriptValue(0, \"NaN\")", true);
+        toBool.insert("QScriptValue(0, \"Infinity\")", true);
+        toBool.insert("QScriptValue(0, \"-Infinity\")", true);
+        toBool.insert("QScriptValue(0, \"ciao\")", true);
+        toBool.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+        toBool.insert("QScriptValue(0, QString(\"\"))", false);
+        toBool.insert("QScriptValue(0, QString())", false);
+        toBool.insert("QScriptValue(0, QString(\"0\"))", true);
+        toBool.insert("QScriptValue(0, QString(\"123\"))", true);
+        toBool.insert("QScriptValue(0, QString(\"12.3\"))", true);
+        toBool.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+        toBool.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+        toBool.insert("QScriptValue(engine, true)", true);
+        toBool.insert("QScriptValue(engine, false)", false);
+        toBool.insert("QScriptValue(engine, int(122))", true);
+        toBool.insert("QScriptValue(engine, uint(124))", true);
+        toBool.insert("QScriptValue(engine, 0)", false);
+        toBool.insert("QScriptValue(engine, 0.0)", false);
+        toBool.insert("QScriptValue(engine, 123.0)", true);
+        toBool.insert("QScriptValue(engine, 6.37e-8)", true);
+        toBool.insert("QScriptValue(engine, -6.37e-8)", true);
+        toBool.insert("QScriptValue(engine, 0x43211234)", true);
+        toBool.insert("QScriptValue(engine, 0x10000)", true);
+        toBool.insert("QScriptValue(engine, 0x10001)", true);
+        toBool.insert("QScriptValue(engine, qSNaN())", false);
+        toBool.insert("QScriptValue(engine, qQNaN())", false);
+        toBool.insert("QScriptValue(engine, qInf())", true);
+        toBool.insert("QScriptValue(engine, -qInf())", true);
+        toBool.insert("QScriptValue(engine, \"NaN\")", true);
+        toBool.insert("QScriptValue(engine, \"Infinity\")", true);
+        toBool.insert("QScriptValue(engine, \"-Infinity\")", true);
+        toBool.insert("QScriptValue(engine, \"ciao\")", true);
+        toBool.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+        toBool.insert("QScriptValue(engine, QString(\"\"))", false);
+        toBool.insert("QScriptValue(engine, QString())", false);
+        toBool.insert("QScriptValue(engine, QString(\"0\"))", true);
+        toBool.insert("QScriptValue(engine, QString(\"123\"))", true);
+        toBool.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+        toBool.insert("engine->evaluate(\"[]\")", true);
+        toBool.insert("engine->evaluate(\"{}\")", false);
+        toBool.insert("engine->evaluate(\"Object.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Date.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Array.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Function.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Error.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Object\")", true);
+        toBool.insert("engine->evaluate(\"Array\")", true);
+        toBool.insert("engine->evaluate(\"Number\")", true);
+        toBool.insert("engine->evaluate(\"Function\")", true);
+        toBool.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+        toBool.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+        toBool.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+        toBool.insert("engine->evaluate(\"/foo/\")", true);
+        toBool.insert("engine->evaluate(\"new Object()\")", true);
+        toBool.insert("engine->evaluate(\"new Array()\")", true);
+        toBool.insert("engine->evaluate(\"new Error()\")", true);
+        toBool.insert("engine->nullValue()", false);
+        toBool.insert("engine->undefinedValue()", false);
+    }
+    newRow(expr) << toBool.value(expr);
+}
+
+void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.toBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBool)
+
+
+void tst_QScriptValue::toBoolean_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toBoolean_makeData(const char* expr)
+{
+    static QHash<QString, bool> toBoolean;
+    if (toBoolean.isEmpty()) {
+        toBoolean.insert("QScriptValue()", false);
+        toBoolean.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+        toBoolean.insert("QScriptValue(QScriptValue::NullValue)", false);
+        toBoolean.insert("QScriptValue(true)", true);
+        toBoolean.insert("QScriptValue(false)", false);
+        toBoolean.insert("QScriptValue(int(122))", true);
+        toBoolean.insert("QScriptValue(uint(124))", true);
+        toBoolean.insert("QScriptValue(0)", false);
+        toBoolean.insert("QScriptValue(0.0)", false);
+        toBoolean.insert("QScriptValue(123.0)", true);
+        toBoolean.insert("QScriptValue(6.37e-8)", true);
+        toBoolean.insert("QScriptValue(-6.37e-8)", true);
+        toBoolean.insert("QScriptValue(0x43211234)", true);
+        toBoolean.insert("QScriptValue(0x10000)", true);
+        toBoolean.insert("QScriptValue(0x10001)", true);
+        toBoolean.insert("QScriptValue(qSNaN())", false);
+        toBoolean.insert("QScriptValue(qQNaN())", false);
+        toBoolean.insert("QScriptValue(qInf())", true);
+        toBoolean.insert("QScriptValue(-qInf())", true);
+        toBoolean.insert("QScriptValue(\"NaN\")", true);
+        toBoolean.insert("QScriptValue(\"Infinity\")", true);
+        toBoolean.insert("QScriptValue(\"-Infinity\")", true);
+        toBoolean.insert("QScriptValue(\"ciao\")", true);
+        toBoolean.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+        toBoolean.insert("QScriptValue(QString(\"\"))", false);
+        toBoolean.insert("QScriptValue(QString())", false);
+        toBoolean.insert("QScriptValue(QString(\"0\"))", true);
+        toBoolean.insert("QScriptValue(QString(\"123\"))", true);
+        toBoolean.insert("QScriptValue(QString(\"12.4\"))", true);
+        toBoolean.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+        toBoolean.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+        toBoolean.insert("QScriptValue(0, true)", true);
+        toBoolean.insert("QScriptValue(0, false)", false);
+        toBoolean.insert("QScriptValue(0, int(122))", true);
+        toBoolean.insert("QScriptValue(0, uint(124))", true);
+        toBoolean.insert("QScriptValue(0, 0)", false);
+        toBoolean.insert("QScriptValue(0, 0.0)", false);
+        toBoolean.insert("QScriptValue(0, 123.0)", true);
+        toBoolean.insert("QScriptValue(0, 6.37e-8)", true);
+        toBoolean.insert("QScriptValue(0, -6.37e-8)", true);
+        toBoolean.insert("QScriptValue(0, 0x43211234)", true);
+        toBoolean.insert("QScriptValue(0, 0x10000)", true);
+        toBoolean.insert("QScriptValue(0, 0x10001)", true);
+        toBoolean.insert("QScriptValue(0, qSNaN())", false);
+        toBoolean.insert("QScriptValue(0, qQNaN())", false);
+        toBoolean.insert("QScriptValue(0, qInf())", true);
+        toBoolean.insert("QScriptValue(0, -qInf())", true);
+        toBoolean.insert("QScriptValue(0, \"NaN\")", true);
+        toBoolean.insert("QScriptValue(0, \"Infinity\")", true);
+        toBoolean.insert("QScriptValue(0, \"-Infinity\")", true);
+        toBoolean.insert("QScriptValue(0, \"ciao\")", true);
+        toBoolean.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+        toBoolean.insert("QScriptValue(0, QString(\"\"))", false);
+        toBoolean.insert("QScriptValue(0, QString())", false);
+        toBoolean.insert("QScriptValue(0, QString(\"0\"))", true);
+        toBoolean.insert("QScriptValue(0, QString(\"123\"))", true);
+        toBoolean.insert("QScriptValue(0, QString(\"12.3\"))", true);
+        toBoolean.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+        toBoolean.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+        toBoolean.insert("QScriptValue(engine, true)", true);
+        toBoolean.insert("QScriptValue(engine, false)", false);
+        toBoolean.insert("QScriptValue(engine, int(122))", true);
+        toBoolean.insert("QScriptValue(engine, uint(124))", true);
+        toBoolean.insert("QScriptValue(engine, 0)", false);
+        toBoolean.insert("QScriptValue(engine, 0.0)", false);
+        toBoolean.insert("QScriptValue(engine, 123.0)", true);
+        toBoolean.insert("QScriptValue(engine, 6.37e-8)", true);
+        toBoolean.insert("QScriptValue(engine, -6.37e-8)", true);
+        toBoolean.insert("QScriptValue(engine, 0x43211234)", true);
+        toBoolean.insert("QScriptValue(engine, 0x10000)", true);
+        toBoolean.insert("QScriptValue(engine, 0x10001)", true);
+        toBoolean.insert("QScriptValue(engine, qSNaN())", false);
+        toBoolean.insert("QScriptValue(engine, qQNaN())", false);
+        toBoolean.insert("QScriptValue(engine, qInf())", true);
+        toBoolean.insert("QScriptValue(engine, -qInf())", true);
+        toBoolean.insert("QScriptValue(engine, \"NaN\")", true);
+        toBoolean.insert("QScriptValue(engine, \"Infinity\")", true);
+        toBoolean.insert("QScriptValue(engine, \"-Infinity\")", true);
+        toBoolean.insert("QScriptValue(engine, \"ciao\")", true);
+        toBoolean.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+        toBoolean.insert("QScriptValue(engine, QString(\"\"))", false);
+        toBoolean.insert("QScriptValue(engine, QString())", false);
+        toBoolean.insert("QScriptValue(engine, QString(\"0\"))", true);
+        toBoolean.insert("QScriptValue(engine, QString(\"123\"))", true);
+        toBoolean.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+        toBoolean.insert("engine->evaluate(\"[]\")", true);
+        toBoolean.insert("engine->evaluate(\"{}\")", false);
+        toBoolean.insert("engine->evaluate(\"Object.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Date.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Array.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Function.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Error.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Object\")", true);
+        toBoolean.insert("engine->evaluate(\"Array\")", true);
+        toBoolean.insert("engine->evaluate(\"Number\")", true);
+        toBoolean.insert("engine->evaluate(\"Function\")", true);
+        toBoolean.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+        toBoolean.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+        toBoolean.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+        toBoolean.insert("engine->evaluate(\"/foo/\")", true);
+        toBoolean.insert("engine->evaluate(\"new Object()\")", true);
+        toBoolean.insert("engine->evaluate(\"new Array()\")", true);
+        toBoolean.insert("engine->evaluate(\"new Error()\")", true);
+        toBoolean.insert("engine->nullValue()", false);
+        toBoolean.insert("engine->undefinedValue()", false);
+    }
+    newRow(expr) << toBoolean.value(expr);
+}
+
+void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.toBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBoolean)
+
+
+void tst_QScriptValue::toInteger_initData()
+{
+    QTest::addColumn<qsreal>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toInteger_makeData(const char* expr)
+{
+    static QHash<QString, qsreal> toInteger;
+    if (toInteger.isEmpty()) {
+        toInteger.insert("QScriptValue()", 0);
+        toInteger.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toInteger.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toInteger.insert("QScriptValue(true)", 1);
+        toInteger.insert("QScriptValue(false)", 0);
+        toInteger.insert("QScriptValue(int(122))", 122);
+        toInteger.insert("QScriptValue(uint(124))", 124);
+        toInteger.insert("QScriptValue(0)", 0);
+        toInteger.insert("QScriptValue(0.0)", 0);
+        toInteger.insert("QScriptValue(123.0)", 123);
+        toInteger.insert("QScriptValue(6.37e-8)", 0);
+        toInteger.insert("QScriptValue(-6.37e-8)", 0);
+        toInteger.insert("QScriptValue(0x43211234)", 1126240820);
+        toInteger.insert("QScriptValue(0x10000)", 65536);
+        toInteger.insert("QScriptValue(0x10001)", 65537);
+        toInteger.insert("QScriptValue(qSNaN())", 0);
+        toInteger.insert("QScriptValue(qQNaN())", 0);
+        toInteger.insert("QScriptValue(qInf())", qInf());
+        toInteger.insert("QScriptValue(-qInf())", qInf());
+        toInteger.insert("QScriptValue(\"NaN\")", 0);
+        toInteger.insert("QScriptValue(\"Infinity\")", qInf());
+        toInteger.insert("QScriptValue(\"-Infinity\")", qInf());
+        toInteger.insert("QScriptValue(\"ciao\")", 0);
+        toInteger.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toInteger.insert("QScriptValue(QString(\"\"))", 0);
+        toInteger.insert("QScriptValue(QString())", 0);
+        toInteger.insert("QScriptValue(QString(\"0\"))", 0);
+        toInteger.insert("QScriptValue(QString(\"123\"))", 123);
+        toInteger.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toInteger.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toInteger.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toInteger.insert("QScriptValue(0, true)", 1);
+        toInteger.insert("QScriptValue(0, false)", 0);
+        toInteger.insert("QScriptValue(0, int(122))", 122);
+        toInteger.insert("QScriptValue(0, uint(124))", 124);
+        toInteger.insert("QScriptValue(0, 0)", 0);
+        toInteger.insert("QScriptValue(0, 0.0)", 0);
+        toInteger.insert("QScriptValue(0, 123.0)", 123);
+        toInteger.insert("QScriptValue(0, 6.37e-8)", 0);
+        toInteger.insert("QScriptValue(0, -6.37e-8)", 0);
+        toInteger.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toInteger.insert("QScriptValue(0, 0x10000)", 65536);
+        toInteger.insert("QScriptValue(0, 0x10001)", 65537);
+        toInteger.insert("QScriptValue(0, qSNaN())", 0);
+        toInteger.insert("QScriptValue(0, qQNaN())", 0);
+        toInteger.insert("QScriptValue(0, qInf())", qInf());
+        toInteger.insert("QScriptValue(0, -qInf())", qInf());
+        toInteger.insert("QScriptValue(0, \"NaN\")", 0);
+        toInteger.insert("QScriptValue(0, \"Infinity\")", qInf());
+        toInteger.insert("QScriptValue(0, \"-Infinity\")", qInf());
+        toInteger.insert("QScriptValue(0, \"ciao\")", 0);
+        toInteger.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toInteger.insert("QScriptValue(0, QString(\"\"))", 0);
+        toInteger.insert("QScriptValue(0, QString())", 0);
+        toInteger.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toInteger.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toInteger.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toInteger.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toInteger.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toInteger.insert("QScriptValue(engine, true)", 1);
+        toInteger.insert("QScriptValue(engine, false)", 0);
+        toInteger.insert("QScriptValue(engine, int(122))", 122);
+        toInteger.insert("QScriptValue(engine, uint(124))", 124);
+        toInteger.insert("QScriptValue(engine, 0)", 0);
+        toInteger.insert("QScriptValue(engine, 0.0)", 0);
+        toInteger.insert("QScriptValue(engine, 123.0)", 123);
+        toInteger.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toInteger.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toInteger.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toInteger.insert("QScriptValue(engine, 0x10000)", 65536);
+        toInteger.insert("QScriptValue(engine, 0x10001)", 65537);
+        toInteger.insert("QScriptValue(engine, qSNaN())", 0);
+        toInteger.insert("QScriptValue(engine, qQNaN())", 0);
+        toInteger.insert("QScriptValue(engine, qInf())", qInf());
+        toInteger.insert("QScriptValue(engine, -qInf())", qInf());
+        toInteger.insert("QScriptValue(engine, \"NaN\")", 0);
+        toInteger.insert("QScriptValue(engine, \"Infinity\")", qInf());
+        toInteger.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+        toInteger.insert("QScriptValue(engine, \"ciao\")", 0);
+        toInteger.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toInteger.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toInteger.insert("QScriptValue(engine, QString())", 0);
+        toInteger.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toInteger.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toInteger.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toInteger.insert("engine->evaluate(\"[]\")", 0);
+        toInteger.insert("engine->evaluate(\"{}\")", 0);
+        toInteger.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Object\")", 0);
+        toInteger.insert("engine->evaluate(\"Array\")", 0);
+        toInteger.insert("engine->evaluate(\"Number\")", 0);
+        toInteger.insert("engine->evaluate(\"Function\")", 0);
+        toInteger.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toInteger.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toInteger.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toInteger.insert("engine->evaluate(\"/foo/\")", 0);
+        toInteger.insert("engine->evaluate(\"new Object()\")", 0);
+        toInteger.insert("engine->evaluate(\"new Array()\")", 0);
+        toInteger.insert("engine->evaluate(\"new Error()\")", 0);
+        toInteger.insert("engine->nullValue()", 0);
+        toInteger.insert("engine->undefinedValue()", 0);
+    }
+    newRow(expr) << toInteger.value(expr);
+}
+
+void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qsreal, expected);
+    if (qIsInf(expected)) {
+        QVERIFY(qIsInf(value.toInteger()));
+        return;
+    }
+    QCOMPARE(value.toInteger(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInteger)
+
+
+void tst_QScriptValue::toInt32_initData()
+{
+    QTest::addColumn<qint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toInt32_makeData(const char* expr)
+{
+    static QHash<QString, qint32> toInt32;
+    if (toInt32.isEmpty()) {
+        toInt32.insert("QScriptValue()", 0);
+        toInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toInt32.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toInt32.insert("QScriptValue(true)", 1);
+        toInt32.insert("QScriptValue(false)", 0);
+        toInt32.insert("QScriptValue(int(122))", 122);
+        toInt32.insert("QScriptValue(uint(124))", 124);
+        toInt32.insert("QScriptValue(0)", 0);
+        toInt32.insert("QScriptValue(0.0)", 0);
+        toInt32.insert("QScriptValue(123.0)", 123);
+        toInt32.insert("QScriptValue(6.37e-8)", 0);
+        toInt32.insert("QScriptValue(-6.37e-8)", 0);
+        toInt32.insert("QScriptValue(0x43211234)", 1126240820);
+        toInt32.insert("QScriptValue(0x10000)", 65536);
+        toInt32.insert("QScriptValue(0x10001)", 65537);
+        toInt32.insert("QScriptValue(qSNaN())", 0);
+        toInt32.insert("QScriptValue(qQNaN())", 0);
+        toInt32.insert("QScriptValue(qInf())", 0);
+        toInt32.insert("QScriptValue(-qInf())", 0);
+        toInt32.insert("QScriptValue(\"NaN\")", 0);
+        toInt32.insert("QScriptValue(\"Infinity\")", 0);
+        toInt32.insert("QScriptValue(\"-Infinity\")", 0);
+        toInt32.insert("QScriptValue(\"ciao\")", 0);
+        toInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toInt32.insert("QScriptValue(QString(\"\"))", 0);
+        toInt32.insert("QScriptValue(QString())", 0);
+        toInt32.insert("QScriptValue(QString(\"0\"))", 0);
+        toInt32.insert("QScriptValue(QString(\"123\"))", 123);
+        toInt32.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toInt32.insert("QScriptValue(0, true)", 1);
+        toInt32.insert("QScriptValue(0, false)", 0);
+        toInt32.insert("QScriptValue(0, int(122))", 122);
+        toInt32.insert("QScriptValue(0, uint(124))", 124);
+        toInt32.insert("QScriptValue(0, 0)", 0);
+        toInt32.insert("QScriptValue(0, 0.0)", 0);
+        toInt32.insert("QScriptValue(0, 123.0)", 123);
+        toInt32.insert("QScriptValue(0, 6.37e-8)", 0);
+        toInt32.insert("QScriptValue(0, -6.37e-8)", 0);
+        toInt32.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toInt32.insert("QScriptValue(0, 0x10000)", 65536);
+        toInt32.insert("QScriptValue(0, 0x10001)", 65537);
+        toInt32.insert("QScriptValue(0, qSNaN())", 0);
+        toInt32.insert("QScriptValue(0, qQNaN())", 0);
+        toInt32.insert("QScriptValue(0, qInf())", 0);
+        toInt32.insert("QScriptValue(0, -qInf())", 0);
+        toInt32.insert("QScriptValue(0, \"NaN\")", 0);
+        toInt32.insert("QScriptValue(0, \"Infinity\")", 0);
+        toInt32.insert("QScriptValue(0, \"-Infinity\")", 0);
+        toInt32.insert("QScriptValue(0, \"ciao\")", 0);
+        toInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toInt32.insert("QScriptValue(0, QString(\"\"))", 0);
+        toInt32.insert("QScriptValue(0, QString())", 0);
+        toInt32.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toInt32.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toInt32.insert("QScriptValue(engine, true)", 1);
+        toInt32.insert("QScriptValue(engine, false)", 0);
+        toInt32.insert("QScriptValue(engine, int(122))", 122);
+        toInt32.insert("QScriptValue(engine, uint(124))", 124);
+        toInt32.insert("QScriptValue(engine, 0)", 0);
+        toInt32.insert("QScriptValue(engine, 0.0)", 0);
+        toInt32.insert("QScriptValue(engine, 123.0)", 123);
+        toInt32.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toInt32.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toInt32.insert("QScriptValue(engine, 0x10000)", 65536);
+        toInt32.insert("QScriptValue(engine, 0x10001)", 65537);
+        toInt32.insert("QScriptValue(engine, qSNaN())", 0);
+        toInt32.insert("QScriptValue(engine, qQNaN())", 0);
+        toInt32.insert("QScriptValue(engine, qInf())", 0);
+        toInt32.insert("QScriptValue(engine, -qInf())", 0);
+        toInt32.insert("QScriptValue(engine, \"NaN\")", 0);
+        toInt32.insert("QScriptValue(engine, \"Infinity\")", 0);
+        toInt32.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        toInt32.insert("QScriptValue(engine, \"ciao\")", 0);
+        toInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toInt32.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toInt32.insert("QScriptValue(engine, QString())", 0);
+        toInt32.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toInt32.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toInt32.insert("engine->evaluate(\"[]\")", 0);
+        toInt32.insert("engine->evaluate(\"{}\")", 0);
+        toInt32.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Object\")", 0);
+        toInt32.insert("engine->evaluate(\"Array\")", 0);
+        toInt32.insert("engine->evaluate(\"Number\")", 0);
+        toInt32.insert("engine->evaluate(\"Function\")", 0);
+        toInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toInt32.insert("engine->evaluate(\"/foo/\")", 0);
+        toInt32.insert("engine->evaluate(\"new Object()\")", 0);
+        toInt32.insert("engine->evaluate(\"new Array()\")", 0);
+        toInt32.insert("engine->evaluate(\"new Error()\")", 0);
+        toInt32.insert("engine->nullValue()", 0);
+        toInt32.insert("engine->undefinedValue()", 0);
+    }
+    newRow(expr) << toInt32.value(expr);
+}
+
+void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qint32, expected);
+    QCOMPARE(value.toInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInt32)
+
+
+void tst_QScriptValue::toUInt32_initData()
+{
+    QTest::addColumn<quint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toUInt32_makeData(const char* expr)
+{
+    static QHash<QString, quint32> toUInt32;
+    if (toUInt32.isEmpty()) {
+        toUInt32.insert("QScriptValue()", 0);
+        toUInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toUInt32.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toUInt32.insert("QScriptValue(true)", 1);
+        toUInt32.insert("QScriptValue(false)", 0);
+        toUInt32.insert("QScriptValue(int(122))", 122);
+        toUInt32.insert("QScriptValue(uint(124))", 124);
+        toUInt32.insert("QScriptValue(0)", 0);
+        toUInt32.insert("QScriptValue(0.0)", 0);
+        toUInt32.insert("QScriptValue(123.0)", 123);
+        toUInt32.insert("QScriptValue(6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(-6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(0x43211234)", 1126240820);
+        toUInt32.insert("QScriptValue(0x10000)", 65536);
+        toUInt32.insert("QScriptValue(0x10001)", 65537);
+        toUInt32.insert("QScriptValue(qSNaN())", 0);
+        toUInt32.insert("QScriptValue(qQNaN())", 0);
+        toUInt32.insert("QScriptValue(qInf())", 0);
+        toUInt32.insert("QScriptValue(-qInf())", 0);
+        toUInt32.insert("QScriptValue(\"NaN\")", 0);
+        toUInt32.insert("QScriptValue(\"Infinity\")", 0);
+        toUInt32.insert("QScriptValue(\"-Infinity\")", 0);
+        toUInt32.insert("QScriptValue(\"ciao\")", 0);
+        toUInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toUInt32.insert("QScriptValue(QString(\"\"))", 0);
+        toUInt32.insert("QScriptValue(QString())", 0);
+        toUInt32.insert("QScriptValue(QString(\"0\"))", 0);
+        toUInt32.insert("QScriptValue(QString(\"123\"))", 123);
+        toUInt32.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toUInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toUInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toUInt32.insert("QScriptValue(0, true)", 1);
+        toUInt32.insert("QScriptValue(0, false)", 0);
+        toUInt32.insert("QScriptValue(0, int(122))", 122);
+        toUInt32.insert("QScriptValue(0, uint(124))", 124);
+        toUInt32.insert("QScriptValue(0, 0)", 0);
+        toUInt32.insert("QScriptValue(0, 0.0)", 0);
+        toUInt32.insert("QScriptValue(0, 123.0)", 123);
+        toUInt32.insert("QScriptValue(0, 6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(0, -6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toUInt32.insert("QScriptValue(0, 0x10000)", 65536);
+        toUInt32.insert("QScriptValue(0, 0x10001)", 65537);
+        toUInt32.insert("QScriptValue(0, qSNaN())", 0);
+        toUInt32.insert("QScriptValue(0, qQNaN())", 0);
+        toUInt32.insert("QScriptValue(0, qInf())", 0);
+        toUInt32.insert("QScriptValue(0, -qInf())", 0);
+        toUInt32.insert("QScriptValue(0, \"NaN\")", 0);
+        toUInt32.insert("QScriptValue(0, \"Infinity\")", 0);
+        toUInt32.insert("QScriptValue(0, \"-Infinity\")", 0);
+        toUInt32.insert("QScriptValue(0, \"ciao\")", 0);
+        toUInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt32.insert("QScriptValue(0, QString(\"\"))", 0);
+        toUInt32.insert("QScriptValue(0, QString())", 0);
+        toUInt32.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toUInt32.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toUInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toUInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toUInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toUInt32.insert("QScriptValue(engine, true)", 1);
+        toUInt32.insert("QScriptValue(engine, false)", 0);
+        toUInt32.insert("QScriptValue(engine, int(122))", 122);
+        toUInt32.insert("QScriptValue(engine, uint(124))", 124);
+        toUInt32.insert("QScriptValue(engine, 0)", 0);
+        toUInt32.insert("QScriptValue(engine, 0.0)", 0);
+        toUInt32.insert("QScriptValue(engine, 123.0)", 123);
+        toUInt32.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toUInt32.insert("QScriptValue(engine, 0x10000)", 65536);
+        toUInt32.insert("QScriptValue(engine, 0x10001)", 65537);
+        toUInt32.insert("QScriptValue(engine, qSNaN())", 0);
+        toUInt32.insert("QScriptValue(engine, qQNaN())", 0);
+        toUInt32.insert("QScriptValue(engine, qInf())", 0);
+        toUInt32.insert("QScriptValue(engine, -qInf())", 0);
+        toUInt32.insert("QScriptValue(engine, \"NaN\")", 0);
+        toUInt32.insert("QScriptValue(engine, \"Infinity\")", 0);
+        toUInt32.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        toUInt32.insert("QScriptValue(engine, \"ciao\")", 0);
+        toUInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt32.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toUInt32.insert("QScriptValue(engine, QString())", 0);
+        toUInt32.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toUInt32.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toUInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toUInt32.insert("engine->evaluate(\"[]\")", 0);
+        toUInt32.insert("engine->evaluate(\"{}\")", 0);
+        toUInt32.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Object\")", 0);
+        toUInt32.insert("engine->evaluate(\"Array\")", 0);
+        toUInt32.insert("engine->evaluate(\"Number\")", 0);
+        toUInt32.insert("engine->evaluate(\"Function\")", 0);
+        toUInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toUInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toUInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toUInt32.insert("engine->evaluate(\"/foo/\")", 0);
+        toUInt32.insert("engine->evaluate(\"new Object()\")", 0);
+        toUInt32.insert("engine->evaluate(\"new Array()\")", 0);
+        toUInt32.insert("engine->evaluate(\"new Error()\")", 0);
+        toUInt32.insert("engine->nullValue()", 0);
+        toUInt32.insert("engine->undefinedValue()", 0);
+    }
+    newRow(expr) << toUInt32.value(expr);
+}
+
+void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint32, expected);
+    QCOMPARE(value.toUInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt32)
+
+
+void tst_QScriptValue::toUInt16_initData()
+{
+    QTest::addColumn<quint16>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toUInt16_makeData(const char* expr)
+{
+    static QHash<QString, quint16> toUInt16;
+    if (toUInt16.isEmpty()) {
+        toUInt16.insert("QScriptValue()", 0);
+        toUInt16.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toUInt16.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toUInt16.insert("QScriptValue(true)", 1);
+        toUInt16.insert("QScriptValue(false)", 0);
+        toUInt16.insert("QScriptValue(int(122))", 122);
+        toUInt16.insert("QScriptValue(uint(124))", 124);
+        toUInt16.insert("QScriptValue(0)", 0);
+        toUInt16.insert("QScriptValue(0.0)", 0);
+        toUInt16.insert("QScriptValue(123.0)", 123);
+        toUInt16.insert("QScriptValue(6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(-6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(0x43211234)", 4660);
+        toUInt16.insert("QScriptValue(0x10000)", 0);
+        toUInt16.insert("QScriptValue(0x10001)", 1);
+        toUInt16.insert("QScriptValue(qSNaN())", 0);
+        toUInt16.insert("QScriptValue(qQNaN())", 0);
+        toUInt16.insert("QScriptValue(qInf())", 0);
+        toUInt16.insert("QScriptValue(-qInf())", 0);
+        toUInt16.insert("QScriptValue(\"NaN\")", 0);
+        toUInt16.insert("QScriptValue(\"Infinity\")", 0);
+        toUInt16.insert("QScriptValue(\"-Infinity\")", 0);
+        toUInt16.insert("QScriptValue(\"ciao\")", 0);
+        toUInt16.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toUInt16.insert("QScriptValue(QString(\"\"))", 0);
+        toUInt16.insert("QScriptValue(QString())", 0);
+        toUInt16.insert("QScriptValue(QString(\"0\"))", 0);
+        toUInt16.insert("QScriptValue(QString(\"123\"))", 123);
+        toUInt16.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toUInt16.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toUInt16.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toUInt16.insert("QScriptValue(0, true)", 1);
+        toUInt16.insert("QScriptValue(0, false)", 0);
+        toUInt16.insert("QScriptValue(0, int(122))", 122);
+        toUInt16.insert("QScriptValue(0, uint(124))", 124);
+        toUInt16.insert("QScriptValue(0, 0)", 0);
+        toUInt16.insert("QScriptValue(0, 0.0)", 0);
+        toUInt16.insert("QScriptValue(0, 123.0)", 123);
+        toUInt16.insert("QScriptValue(0, 6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(0, -6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(0, 0x43211234)", 4660);
+        toUInt16.insert("QScriptValue(0, 0x10000)", 0);
+        toUInt16.insert("QScriptValue(0, 0x10001)", 1);
+        toUInt16.insert("QScriptValue(0, qSNaN())", 0);
+        toUInt16.insert("QScriptValue(0, qQNaN())", 0);
+        toUInt16.insert("QScriptValue(0, qInf())", 0);
+        toUInt16.insert("QScriptValue(0, -qInf())", 0);
+        toUInt16.insert("QScriptValue(0, \"NaN\")", 0);
+        toUInt16.insert("QScriptValue(0, \"Infinity\")", 0);
+        toUInt16.insert("QScriptValue(0, \"-Infinity\")", 0);
+        toUInt16.insert("QScriptValue(0, \"ciao\")", 0);
+        toUInt16.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt16.insert("QScriptValue(0, QString(\"\"))", 0);
+        toUInt16.insert("QScriptValue(0, QString())", 0);
+        toUInt16.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toUInt16.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toUInt16.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toUInt16.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toUInt16.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toUInt16.insert("QScriptValue(engine, true)", 1);
+        toUInt16.insert("QScriptValue(engine, false)", 0);
+        toUInt16.insert("QScriptValue(engine, int(122))", 122);
+        toUInt16.insert("QScriptValue(engine, uint(124))", 124);
+        toUInt16.insert("QScriptValue(engine, 0)", 0);
+        toUInt16.insert("QScriptValue(engine, 0.0)", 0);
+        toUInt16.insert("QScriptValue(engine, 123.0)", 123);
+        toUInt16.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(engine, 0x43211234)", 4660);
+        toUInt16.insert("QScriptValue(engine, 0x10000)", 0);
+        toUInt16.insert("QScriptValue(engine, 0x10001)", 1);
+        toUInt16.insert("QScriptValue(engine, qSNaN())", 0);
+        toUInt16.insert("QScriptValue(engine, qQNaN())", 0);
+        toUInt16.insert("QScriptValue(engine, qInf())", 0);
+        toUInt16.insert("QScriptValue(engine, -qInf())", 0);
+        toUInt16.insert("QScriptValue(engine, \"NaN\")", 0);
+        toUInt16.insert("QScriptValue(engine, \"Infinity\")", 0);
+        toUInt16.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        toUInt16.insert("QScriptValue(engine, \"ciao\")", 0);
+        toUInt16.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt16.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toUInt16.insert("QScriptValue(engine, QString())", 0);
+        toUInt16.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toUInt16.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toUInt16.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toUInt16.insert("engine->evaluate(\"[]\")", 0);
+        toUInt16.insert("engine->evaluate(\"{}\")", 0);
+        toUInt16.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Object\")", 0);
+        toUInt16.insert("engine->evaluate(\"Array\")", 0);
+        toUInt16.insert("engine->evaluate(\"Number\")", 0);
+        toUInt16.insert("engine->evaluate(\"Function\")", 0);
+        toUInt16.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toUInt16.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toUInt16.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toUInt16.insert("engine->evaluate(\"/foo/\")", 0);
+        toUInt16.insert("engine->evaluate(\"new Object()\")", 0);
+        toUInt16.insert("engine->evaluate(\"new Array()\")", 0);
+        toUInt16.insert("engine->evaluate(\"new Error()\")", 0);
+        toUInt16.insert("engine->nullValue()", 0);
+        toUInt16.insert("engine->undefinedValue()", 0);
+    }
+    newRow(expr) << toUInt16.value(expr);
+}
+
+void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint16, expected);
+    QCOMPARE(value.toUInt16(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt16)
+
+
+void tst_QScriptValue::equals_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::equals_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("QScriptValue() <=> QScriptValue()");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(false) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(false) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(false)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, false)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, false)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->nullValue()");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, false)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, false)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(false)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, false)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, false)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->nullValue() <=> engine->nullValue()");
+        equals.insert("engine->nullValue() <=> engine->undefinedValue()");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->undefinedValue() <=> engine->nullValue()");
+        equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::equals_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.equals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(equals)
+
+
+void tst_QScriptValue::strictlyEquals_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("QScriptValue() <=> QScriptValue()");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> engine->nullValue()");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::strictlyEquals_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.strictlyEquals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(strictlyEquals)
+
+
+void tst_QScriptValue::lessThan_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::lessThan_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(true) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(true) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(-qInf()) <=> engine->nullValue()");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(true)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(false)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->nullValue()");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(true)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(int(122))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(uint(124))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(123.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x43211234)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x10000)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x10001)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(qInf())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, true)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, int(122))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, qInf())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, true)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(123.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x43211234)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10000)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10001)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(qInf())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, true)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, int(122))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, qInf())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, true)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(true)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(123.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x43211234)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x10000)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x10001)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(qInf())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, true)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, int(122))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, qInf())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, true)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(true)");
+        equals.insert("engine->nullValue() <=> QScriptValue(int(122))");
+        equals.insert("engine->nullValue() <=> QScriptValue(uint(124))");
+        equals.insert("engine->nullValue() <=> QScriptValue(123.0)");
+        equals.insert("engine->nullValue() <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0x43211234)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0x10000)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0x10001)");
+        equals.insert("engine->nullValue() <=> QScriptValue(qInf())");
+        equals.insert("engine->nullValue() <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, true)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, int(122))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, qInf())");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, true)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::lessThan_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.lessThan(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(lessThan)
+
+
+void tst_QScriptValue::instanceOf_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::instanceOf_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::instanceOf_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.instanceOf(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(instanceOf)
+
+
+void tst_QScriptValue::qscriptvalue_castQString_initData()
+{
+    QTest::addColumn<QString>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
+{
+    static QHash<QString, QString> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", "");
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", "");
+        value.insert("QScriptValue(QScriptValue::NullValue)", "");
+        value.insert("QScriptValue(true)", "true");
+        value.insert("QScriptValue(false)", "false");
+        value.insert("QScriptValue(int(122))", "122");
+        value.insert("QScriptValue(uint(124))", "124");
+        value.insert("QScriptValue(0)", "0");
+        value.insert("QScriptValue(0.0)", "0");
+        value.insert("QScriptValue(123.0)", "123");
+        value.insert("QScriptValue(6.37e-8)", "6.37e-8");
+        value.insert("QScriptValue(-6.37e-8)", "-6.37e-8");
+        value.insert("QScriptValue(0x43211234)", "1126240820");
+        value.insert("QScriptValue(0x10000)", "65536");
+        value.insert("QScriptValue(0x10001)", "65537");
+        value.insert("QScriptValue(qSNaN())", "NaN");
+        value.insert("QScriptValue(qQNaN())", "NaN");
+        value.insert("QScriptValue(qInf())", "Infinity");
+        value.insert("QScriptValue(-qInf())", "-Infinity");
+        value.insert("QScriptValue(\"NaN\")", "NaN");
+        value.insert("QScriptValue(\"Infinity\")", "Infinity");
+        value.insert("QScriptValue(\"-Infinity\")", "-Infinity");
+        value.insert("QScriptValue(\"ciao\")", "ciao");
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", "ciao");
+        value.insert("QScriptValue(QString(\"\"))", "");
+        value.insert("QScriptValue(QString())", "");
+        value.insert("QScriptValue(QString(\"0\"))", "0");
+        value.insert("QScriptValue(QString(\"123\"))", "123");
+        value.insert("QScriptValue(QString(\"12.4\"))", "12.4");
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", "");
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", "");
+        value.insert("QScriptValue(0, true)", "true");
+        value.insert("QScriptValue(0, false)", "false");
+        value.insert("QScriptValue(0, int(122))", "122");
+        value.insert("QScriptValue(0, uint(124))", "124");
+        value.insert("QScriptValue(0, 0)", "0");
+        value.insert("QScriptValue(0, 0.0)", "0");
+        value.insert("QScriptValue(0, 123.0)", "123");
+        value.insert("QScriptValue(0, 6.37e-8)", "6.37e-8");
+        value.insert("QScriptValue(0, -6.37e-8)", "-6.37e-8");
+        value.insert("QScriptValue(0, 0x43211234)", "1126240820");
+        value.insert("QScriptValue(0, 0x10000)", "65536");
+        value.insert("QScriptValue(0, 0x10001)", "65537");
+        value.insert("QScriptValue(0, qSNaN())", "NaN");
+        value.insert("QScriptValue(0, qQNaN())", "NaN");
+        value.insert("QScriptValue(0, qInf())", "Infinity");
+        value.insert("QScriptValue(0, -qInf())", "-Infinity");
+        value.insert("QScriptValue(0, \"NaN\")", "NaN");
+        value.insert("QScriptValue(0, \"Infinity\")", "Infinity");
+        value.insert("QScriptValue(0, \"-Infinity\")", "-Infinity");
+        value.insert("QScriptValue(0, \"ciao\")", "ciao");
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", "ciao");
+        value.insert("QScriptValue(0, QString(\"\"))", "");
+        value.insert("QScriptValue(0, QString())", "");
+        value.insert("QScriptValue(0, QString(\"0\"))", "0");
+        value.insert("QScriptValue(0, QString(\"123\"))", "123");
+        value.insert("QScriptValue(0, QString(\"12.3\"))", "12.3");
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", "");
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", "");
+        value.insert("QScriptValue(engine, true)", "true");
+        value.insert("QScriptValue(engine, false)", "false");
+        value.insert("QScriptValue(engine, int(122))", "122");
+        value.insert("QScriptValue(engine, uint(124))", "124");
+        value.insert("QScriptValue(engine, 0)", "0");
+        value.insert("QScriptValue(engine, 0.0)", "0");
+        value.insert("QScriptValue(engine, 123.0)", "123");
+        value.insert("QScriptValue(engine, 6.37e-8)", "6.37e-8");
+        value.insert("QScriptValue(engine, -6.37e-8)", "-6.37e-8");
+        value.insert("QScriptValue(engine, 0x43211234)", "1126240820");
+        value.insert("QScriptValue(engine, 0x10000)", "65536");
+        value.insert("QScriptValue(engine, 0x10001)", "65537");
+        value.insert("QScriptValue(engine, qSNaN())", "NaN");
+        value.insert("QScriptValue(engine, qQNaN())", "NaN");
+        value.insert("QScriptValue(engine, qInf())", "Infinity");
+        value.insert("QScriptValue(engine, -qInf())", "-Infinity");
+        value.insert("QScriptValue(engine, \"NaN\")", "NaN");
+        value.insert("QScriptValue(engine, \"Infinity\")", "Infinity");
+        value.insert("QScriptValue(engine, \"-Infinity\")", "-Infinity");
+        value.insert("QScriptValue(engine, \"ciao\")", "ciao");
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", "ciao");
+        value.insert("QScriptValue(engine, QString(\"\"))", "");
+        value.insert("QScriptValue(engine, QString())", "");
+        value.insert("QScriptValue(engine, QString(\"0\"))", "0");
+        value.insert("QScriptValue(engine, QString(\"123\"))", "123");
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", "1.23");
+        value.insert("engine->evaluate(\"[]\")", "");
+        value.insert("engine->evaluate(\"{}\")", "");
+        value.insert("engine->evaluate(\"Object.prototype\")", "[object Object]");
+        value.insert("engine->evaluate(\"Date.prototype\")", "Invalid Date");
+        value.insert("engine->evaluate(\"Array.prototype\")", "");
+        value.insert("engine->evaluate(\"Function.prototype\")", "function () {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Error.prototype\")", "Error: Unknown error");
+        value.insert("engine->evaluate(\"Object\")", "function Object() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Array\")", "function Array() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Number\")", "function Number() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Function\")", "function Function() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", "function () { return 1; }");
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", "function () { return 'ciao'; }");
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", "function () { throw new Error('foo'); }");
+        value.insert("engine->evaluate(\"/foo/\")", "/foo/");
+        value.insert("engine->evaluate(\"new Object()\")", "[object Object]");
+        value.insert("engine->evaluate(\"new Array()\")", "");
+        value.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+        value.insert("engine->nullValue()", "");
+        value.insert("engine->undefinedValue()", "");
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptValue& value)
+{
+    QFETCH(QString, expected);
+    QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
+
+
+void tst_QScriptValue::qscriptvalue_castqsreal_initData()
+{
+    QTest::addColumn<qsreal>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
+{
+    static QHash<QString, qsreal> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", qQNaN());
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 6.369999999999999e-08);
+        value.insert("QScriptValue(-6.37e-8)", -6.369999999999999e-08);
+        value.insert("QScriptValue(0x43211234)", 1126240820);
+        value.insert("QScriptValue(0x10000)", 65536);
+        value.insert("QScriptValue(0x10001)", 65537);
+        value.insert("QScriptValue(qSNaN())", qQNaN());
+        value.insert("QScriptValue(qQNaN())", qQNaN());
+        value.insert("QScriptValue(qInf())", qInf());
+        value.insert("QScriptValue(-qInf())", qInf());
+        value.insert("QScriptValue(\"NaN\")", qQNaN());
+        value.insert("QScriptValue(\"Infinity\")", qInf());
+        value.insert("QScriptValue(\"-Infinity\")", qInf());
+        value.insert("QScriptValue(\"ciao\")", qQNaN());
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", qQNaN());
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12.4);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", qQNaN());
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 6.369999999999999e-08);
+        value.insert("QScriptValue(0, -6.37e-8)", -6.369999999999999e-08);
+        value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(0, 0x10000)", 65536);
+        value.insert("QScriptValue(0, 0x10001)", 65537);
+        value.insert("QScriptValue(0, qSNaN())", qQNaN());
+        value.insert("QScriptValue(0, qQNaN())", qQNaN());
+        value.insert("QScriptValue(0, qInf())", qInf());
+        value.insert("QScriptValue(0, -qInf())", qInf());
+        value.insert("QScriptValue(0, \"NaN\")", qQNaN());
+        value.insert("QScriptValue(0, \"Infinity\")", qInf());
+        value.insert("QScriptValue(0, \"-Infinity\")", qInf());
+        value.insert("QScriptValue(0, \"ciao\")", qQNaN());
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", qQNaN());
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12.3);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", qQNaN());
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 6.369999999999999e-08);
+        value.insert("QScriptValue(engine, -6.37e-8)", -6.369999999999999e-08);
+        value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(engine, 0x10000)", 65536);
+        value.insert("QScriptValue(engine, 0x10001)", 65537);
+        value.insert("QScriptValue(engine, qSNaN())", qQNaN());
+        value.insert("QScriptValue(engine, qQNaN())", qQNaN());
+        value.insert("QScriptValue(engine, qInf())", qInf());
+        value.insert("QScriptValue(engine, -qInf())", qInf());
+        value.insert("QScriptValue(engine, \"NaN\")", qQNaN());
+        value.insert("QScriptValue(engine, \"Infinity\")", qInf());
+        value.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+        value.insert("QScriptValue(engine, \"ciao\")", qQNaN());
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", qQNaN());
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1.23);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", qQNaN());
+        value.insert("engine->evaluate(\"Object.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Date.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Error.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Object\")", qQNaN());
+        value.insert("engine->evaluate(\"Array\")", qQNaN());
+        value.insert("engine->evaluate(\"Number\")", qQNaN());
+        value.insert("engine->evaluate(\"Function\")", qQNaN());
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", qQNaN());
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", qQNaN());
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", qQNaN());
+        value.insert("engine->evaluate(\"/foo/\")", qQNaN());
+        value.insert("engine->evaluate(\"new Object()\")", qQNaN());
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", qQNaN());
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", qQNaN());
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qsreal, expected);
+    if (qIsNaN(expected)) {
+        QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
+        return;
+    }
+    if (qIsInf(expected)) {
+        QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
+        return;
+    }
+    QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
+
+
+void tst_QScriptValue::qscriptvalue_castbool_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
+{
+    static QHash<QString, bool> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", false);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+        value.insert("QScriptValue(QScriptValue::NullValue)", false);
+        value.insert("QScriptValue(true)", true);
+        value.insert("QScriptValue(false)", false);
+        value.insert("QScriptValue(int(122))", true);
+        value.insert("QScriptValue(uint(124))", true);
+        value.insert("QScriptValue(0)", false);
+        value.insert("QScriptValue(0.0)", false);
+        value.insert("QScriptValue(123.0)", true);
+        value.insert("QScriptValue(6.37e-8)", true);
+        value.insert("QScriptValue(-6.37e-8)", true);
+        value.insert("QScriptValue(0x43211234)", true);
+        value.insert("QScriptValue(0x10000)", true);
+        value.insert("QScriptValue(0x10001)", true);
+        value.insert("QScriptValue(qSNaN())", false);
+        value.insert("QScriptValue(qQNaN())", false);
+        value.insert("QScriptValue(qInf())", true);
+        value.insert("QScriptValue(-qInf())", true);
+        value.insert("QScriptValue(\"NaN\")", true);
+        value.insert("QScriptValue(\"Infinity\")", true);
+        value.insert("QScriptValue(\"-Infinity\")", true);
+        value.insert("QScriptValue(\"ciao\")", true);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+        value.insert("QScriptValue(QString(\"\"))", false);
+        value.insert("QScriptValue(QString())", false);
+        value.insert("QScriptValue(QString(\"0\"))", true);
+        value.insert("QScriptValue(QString(\"123\"))", true);
+        value.insert("QScriptValue(QString(\"12.4\"))", true);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+        value.insert("QScriptValue(0, true)", true);
+        value.insert("QScriptValue(0, false)", false);
+        value.insert("QScriptValue(0, int(122))", true);
+        value.insert("QScriptValue(0, uint(124))", true);
+        value.insert("QScriptValue(0, 0)", false);
+        value.insert("QScriptValue(0, 0.0)", false);
+        value.insert("QScriptValue(0, 123.0)", true);
+        value.insert("QScriptValue(0, 6.37e-8)", true);
+        value.insert("QScriptValue(0, -6.37e-8)", true);
+        value.insert("QScriptValue(0, 0x43211234)", true);
+        value.insert("QScriptValue(0, 0x10000)", true);
+        value.insert("QScriptValue(0, 0x10001)", true);
+        value.insert("QScriptValue(0, qSNaN())", false);
+        value.insert("QScriptValue(0, qQNaN())", false);
+        value.insert("QScriptValue(0, qInf())", true);
+        value.insert("QScriptValue(0, -qInf())", true);
+        value.insert("QScriptValue(0, \"NaN\")", true);
+        value.insert("QScriptValue(0, \"Infinity\")", true);
+        value.insert("QScriptValue(0, \"-Infinity\")", true);
+        value.insert("QScriptValue(0, \"ciao\")", true);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+        value.insert("QScriptValue(0, QString(\"\"))", false);
+        value.insert("QScriptValue(0, QString())", false);
+        value.insert("QScriptValue(0, QString(\"0\"))", true);
+        value.insert("QScriptValue(0, QString(\"123\"))", true);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", true);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+        value.insert("QScriptValue(engine, true)", true);
+        value.insert("QScriptValue(engine, false)", false);
+        value.insert("QScriptValue(engine, int(122))", true);
+        value.insert("QScriptValue(engine, uint(124))", true);
+        value.insert("QScriptValue(engine, 0)", false);
+        value.insert("QScriptValue(engine, 0.0)", false);
+        value.insert("QScriptValue(engine, 123.0)", true);
+        value.insert("QScriptValue(engine, 6.37e-8)", true);
+        value.insert("QScriptValue(engine, -6.37e-8)", true);
+        value.insert("QScriptValue(engine, 0x43211234)", true);
+        value.insert("QScriptValue(engine, 0x10000)", true);
+        value.insert("QScriptValue(engine, 0x10001)", true);
+        value.insert("QScriptValue(engine, qSNaN())", false);
+        value.insert("QScriptValue(engine, qQNaN())", false);
+        value.insert("QScriptValue(engine, qInf())", true);
+        value.insert("QScriptValue(engine, -qInf())", true);
+        value.insert("QScriptValue(engine, \"NaN\")", true);
+        value.insert("QScriptValue(engine, \"Infinity\")", true);
+        value.insert("QScriptValue(engine, \"-Infinity\")", true);
+        value.insert("QScriptValue(engine, \"ciao\")", true);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+        value.insert("QScriptValue(engine, QString(\"\"))", false);
+        value.insert("QScriptValue(engine, QString())", false);
+        value.insert("QScriptValue(engine, QString(\"0\"))", true);
+        value.insert("QScriptValue(engine, QString(\"123\"))", true);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+        value.insert("engine->evaluate(\"[]\")", true);
+        value.insert("engine->evaluate(\"{}\")", false);
+        value.insert("engine->evaluate(\"Object.prototype\")", true);
+        value.insert("engine->evaluate(\"Date.prototype\")", true);
+        value.insert("engine->evaluate(\"Array.prototype\")", true);
+        value.insert("engine->evaluate(\"Function.prototype\")", true);
+        value.insert("engine->evaluate(\"Error.prototype\")", true);
+        value.insert("engine->evaluate(\"Object\")", true);
+        value.insert("engine->evaluate(\"Array\")", true);
+        value.insert("engine->evaluate(\"Number\")", true);
+        value.insert("engine->evaluate(\"Function\")", true);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+        value.insert("engine->evaluate(\"/foo/\")", true);
+        value.insert("engine->evaluate(\"new Object()\")", true);
+        value.insert("engine->evaluate(\"new Array()\")", true);
+        value.insert("engine->evaluate(\"new Error()\")", true);
+        value.insert("engine->nullValue()", false);
+        value.insert("engine->undefinedValue()", false);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
+
+
+void tst_QScriptValue::qscriptvalue_castqint32_initData()
+{
+    QTest::addColumn<qint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
+{
+    static QHash<QString, qint32> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 0);
+        value.insert("QScriptValue(-6.37e-8)", 0);
+        value.insert("QScriptValue(0x43211234)", 1126240820);
+        value.insert("QScriptValue(0x10000)", 65536);
+        value.insert("QScriptValue(0x10001)", 65537);
+        value.insert("QScriptValue(qSNaN())", 0);
+        value.insert("QScriptValue(qQNaN())", 0);
+        value.insert("QScriptValue(qInf())", 0);
+        value.insert("QScriptValue(-qInf())", 0);
+        value.insert("QScriptValue(\"NaN\")", 0);
+        value.insert("QScriptValue(\"Infinity\")", 0);
+        value.insert("QScriptValue(\"-Infinity\")", 0);
+        value.insert("QScriptValue(\"ciao\")", 0);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 0);
+        value.insert("QScriptValue(0, -6.37e-8)", 0);
+        value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(0, 0x10000)", 65536);
+        value.insert("QScriptValue(0, 0x10001)", 65537);
+        value.insert("QScriptValue(0, qSNaN())", 0);
+        value.insert("QScriptValue(0, qQNaN())", 0);
+        value.insert("QScriptValue(0, qInf())", 0);
+        value.insert("QScriptValue(0, -qInf())", 0);
+        value.insert("QScriptValue(0, \"NaN\")", 0);
+        value.insert("QScriptValue(0, \"Infinity\")", 0);
+        value.insert("QScriptValue(0, \"-Infinity\")", 0);
+        value.insert("QScriptValue(0, \"ciao\")", 0);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 0);
+        value.insert("QScriptValue(engine, -6.37e-8)", 0);
+        value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(engine, 0x10000)", 65536);
+        value.insert("QScriptValue(engine, 0x10001)", 65537);
+        value.insert("QScriptValue(engine, qSNaN())", 0);
+        value.insert("QScriptValue(engine, qQNaN())", 0);
+        value.insert("QScriptValue(engine, qInf())", 0);
+        value.insert("QScriptValue(engine, -qInf())", 0);
+        value.insert("QScriptValue(engine, \"NaN\")", 0);
+        value.insert("QScriptValue(engine, \"Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"ciao\")", 0);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", 0);
+        value.insert("engine->evaluate(\"Object.prototype\")", 0);
+        value.insert("engine->evaluate(\"Date.prototype\")", 0);
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", 0);
+        value.insert("engine->evaluate(\"Error.prototype\")", 0);
+        value.insert("engine->evaluate(\"Object\")", 0);
+        value.insert("engine->evaluate(\"Array\")", 0);
+        value.insert("engine->evaluate(\"Number\")", 0);
+        value.insert("engine->evaluate(\"Function\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        value.insert("engine->evaluate(\"/foo/\")", 0);
+        value.insert("engine->evaluate(\"new Object()\")", 0);
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", 0);
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", 0);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qint32, expected);
+    QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
+
+
+void tst_QScriptValue::qscriptvalue_castquint32_initData()
+{
+    QTest::addColumn<quint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
+{
+    static QHash<QString, quint32> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 0);
+        value.insert("QScriptValue(-6.37e-8)", 0);
+        value.insert("QScriptValue(0x43211234)", 1126240820);
+        value.insert("QScriptValue(0x10000)", 65536);
+        value.insert("QScriptValue(0x10001)", 65537);
+        value.insert("QScriptValue(qSNaN())", 0);
+        value.insert("QScriptValue(qQNaN())", 0);
+        value.insert("QScriptValue(qInf())", 0);
+        value.insert("QScriptValue(-qInf())", 0);
+        value.insert("QScriptValue(\"NaN\")", 0);
+        value.insert("QScriptValue(\"Infinity\")", 0);
+        value.insert("QScriptValue(\"-Infinity\")", 0);
+        value.insert("QScriptValue(\"ciao\")", 0);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 0);
+        value.insert("QScriptValue(0, -6.37e-8)", 0);
+        value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(0, 0x10000)", 65536);
+        value.insert("QScriptValue(0, 0x10001)", 65537);
+        value.insert("QScriptValue(0, qSNaN())", 0);
+        value.insert("QScriptValue(0, qQNaN())", 0);
+        value.insert("QScriptValue(0, qInf())", 0);
+        value.insert("QScriptValue(0, -qInf())", 0);
+        value.insert("QScriptValue(0, \"NaN\")", 0);
+        value.insert("QScriptValue(0, \"Infinity\")", 0);
+        value.insert("QScriptValue(0, \"-Infinity\")", 0);
+        value.insert("QScriptValue(0, \"ciao\")", 0);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 0);
+        value.insert("QScriptValue(engine, -6.37e-8)", 0);
+        value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(engine, 0x10000)", 65536);
+        value.insert("QScriptValue(engine, 0x10001)", 65537);
+        value.insert("QScriptValue(engine, qSNaN())", 0);
+        value.insert("QScriptValue(engine, qQNaN())", 0);
+        value.insert("QScriptValue(engine, qInf())", 0);
+        value.insert("QScriptValue(engine, -qInf())", 0);
+        value.insert("QScriptValue(engine, \"NaN\")", 0);
+        value.insert("QScriptValue(engine, \"Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"ciao\")", 0);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", 0);
+        value.insert("engine->evaluate(\"Object.prototype\")", 0);
+        value.insert("engine->evaluate(\"Date.prototype\")", 0);
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", 0);
+        value.insert("engine->evaluate(\"Error.prototype\")", 0);
+        value.insert("engine->evaluate(\"Object\")", 0);
+        value.insert("engine->evaluate(\"Array\")", 0);
+        value.insert("engine->evaluate(\"Number\")", 0);
+        value.insert("engine->evaluate(\"Function\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        value.insert("engine->evaluate(\"/foo/\")", 0);
+        value.insert("engine->evaluate(\"new Object()\")", 0);
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", 0);
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", 0);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint32, expected);
+    QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
+
+
+void tst_QScriptValue::qscriptvalue_castquint16_initData()
+{
+    QTest::addColumn<quint16>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
+{
+    static QHash<QString, quint16> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 0);
+        value.insert("QScriptValue(-6.37e-8)", 0);
+        value.insert("QScriptValue(0x43211234)", 4660);
+        value.insert("QScriptValue(0x10000)", 0);
+        value.insert("QScriptValue(0x10001)", 1);
+        value.insert("QScriptValue(qSNaN())", 0);
+        value.insert("QScriptValue(qQNaN())", 0);
+        value.insert("QScriptValue(qInf())", 0);
+        value.insert("QScriptValue(-qInf())", 0);
+        value.insert("QScriptValue(\"NaN\")", 0);
+        value.insert("QScriptValue(\"Infinity\")", 0);
+        value.insert("QScriptValue(\"-Infinity\")", 0);
+        value.insert("QScriptValue(\"ciao\")", 0);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 0);
+        value.insert("QScriptValue(0, -6.37e-8)", 0);
+        value.insert("QScriptValue(0, 0x43211234)", 4660);
+        value.insert("QScriptValue(0, 0x10000)", 0);
+        value.insert("QScriptValue(0, 0x10001)", 1);
+        value.insert("QScriptValue(0, qSNaN())", 0);
+        value.insert("QScriptValue(0, qQNaN())", 0);
+        value.insert("QScriptValue(0, qInf())", 0);
+        value.insert("QScriptValue(0, -qInf())", 0);
+        value.insert("QScriptValue(0, \"NaN\")", 0);
+        value.insert("QScriptValue(0, \"Infinity\")", 0);
+        value.insert("QScriptValue(0, \"-Infinity\")", 0);
+        value.insert("QScriptValue(0, \"ciao\")", 0);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 0);
+        value.insert("QScriptValue(engine, -6.37e-8)", 0);
+        value.insert("QScriptValue(engine, 0x43211234)", 4660);
+        value.insert("QScriptValue(engine, 0x10000)", 0);
+        value.insert("QScriptValue(engine, 0x10001)", 1);
+        value.insert("QScriptValue(engine, qSNaN())", 0);
+        value.insert("QScriptValue(engine, qQNaN())", 0);
+        value.insert("QScriptValue(engine, qInf())", 0);
+        value.insert("QScriptValue(engine, -qInf())", 0);
+        value.insert("QScriptValue(engine, \"NaN\")", 0);
+        value.insert("QScriptValue(engine, \"Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"ciao\")", 0);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", 0);
+        value.insert("engine->evaluate(\"Object.prototype\")", 0);
+        value.insert("engine->evaluate(\"Date.prototype\")", 0);
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", 0);
+        value.insert("engine->evaluate(\"Error.prototype\")", 0);
+        value.insert("engine->evaluate(\"Object\")", 0);
+        value.insert("engine->evaluate(\"Array\")", 0);
+        value.insert("engine->evaluate(\"Number\")", 0);
+        value.insert("engine->evaluate(\"Function\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        value.insert("engine->evaluate(\"/foo/\")", 0);
+        value.insert("engine->evaluate(\"new Object()\")", 0);
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", 0);
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", 0);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint16, expected);
+    QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint16)