summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/src/qt4-intro.qdoc14
-rw-r--r--src/corelib/corelib.pro22
-rw-r--r--src/corelib/tools/qregexp.cpp11
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h1
-rw-r--r--src/corelib/tools/qsimd.cpp246
-rw-r--r--src/corelib/tools/qsimd_p.h126
-rw-r--r--src/corelib/tools/qstring.cpp112
-rw-r--r--src/corelib/tools/tools.pri2
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp452
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h15
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm52
-rw-r--r--src/gui/kernel/qcocoaview_mac_p.h1
-rw-r--r--src/gui/kernel/qgesture_p.h2
-rw-r--r--src/gui/kernel/qgesturerecognizer.cpp1
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm10
-rw-r--r--src/gui/kernel/qwidget.cpp9
-rw-r--r--src/gui/painting/qdrawhelper.cpp199
-rw-r--r--src/gui/painting/qdrawhelper_p.h9
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp3
-rw-r--r--src/multimedia/base/qgraphicsvideoitem.cpp3
-rw-r--r--src/multimedia/base/qmediacontent.cpp1
-rw-r--r--src/multimedia/base/qmediacontrol.cpp1
-rw-r--r--src/multimedia/base/qmediaobject.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylist.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistcontrol.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistioplugin.cpp3
-rw-r--r--src/multimedia/base/qmediaplaylistnavigator.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistprovider.cpp1
-rw-r--r--src/multimedia/base/qmediaresource.cpp1
-rw-r--r--src/multimedia/base/qmediaservice.cpp1
-rw-r--r--src/multimedia/base/qmediaserviceprovider.cpp6
-rw-r--r--src/multimedia/base/qmediatimerange.cpp2
-rw-r--r--src/multimedia/base/qmetadatacontrol.cpp2
-rw-r--r--src/multimedia/base/qvideodevicecontrol.cpp1
-rw-r--r--src/multimedia/base/qvideooutputcontrol.cpp2
-rw-r--r--src/multimedia/base/qvideorenderercontrol.cpp2
-rw-r--r--src/multimedia/base/qvideowidget.cpp2
-rw-r--r--src/multimedia/base/qvideowidgetcontrol.cpp2
-rw-r--r--src/multimedia/base/qvideowindowcontrol.cpp1
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp2
-rw-r--r--src/multimedia/playback/qmediaplayercontrol.cpp2
-rw-r--r--src/plugins/bearer/generic/qgenericengine.cpp11
-rw-r--r--src/plugins/bearer/symbian/symbian.pro1
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp2
-rw-r--r--src/script/api/qscriptengine_p.h2
-rw-r--r--tests/auto/gestures/tst_gestures.cpp141
-rw-r--r--tests/auto/headers/headers.pro2
-rw-r--r--tests/auto/headers/headersclean.cpp86
-rw-r--r--tests/auto/qchar/qchar.pro1
-rw-r--r--tests/auto/qchar/tst_qchar.cpp5
-rw-r--r--tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp57
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp93
-rw-r--r--tests/auto/qscriptvalue/qscriptvalue.pro7
-rw-r--r--tests/auto/qscriptvalue/testgen/data.txt43
-rwxr-xr-xtests/auto/qscriptvalue/testgen/gen.py3
-rw-r--r--tests/auto/qscriptvalue/testgen/testgenerator.cpp8
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.h12
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp3725
-rw-r--r--tests/auto/qstring/tst_qstring.cpp107
-rw-r--r--tools/qdoc3/atom.cpp4
-rw-r--r--tools/qdoc3/atom.h2
-rw-r--r--tools/qdoc3/codemarker.cpp12
-rw-r--r--tools/qdoc3/codemarker.h2
-rw-r--r--tools/qdoc3/cppcodemarker.cpp36
-rw-r--r--tools/qdoc3/cppcodemarker.h2
-rw-r--r--tools/qdoc3/cppcodeparser.cpp40
-rw-r--r--tools/qdoc3/doc.cpp4
-rw-r--r--tools/qdoc3/generator.cpp30
-rw-r--r--tools/qdoc3/generator.h9
-rw-r--r--tools/qdoc3/helpprojectwriter.cpp6
-rw-r--r--tools/qdoc3/htmlgenerator.cpp126
-rw-r--r--tools/qdoc3/htmlgenerator.h14
-rw-r--r--tools/qdoc3/node.cpp44
-rw-r--r--tools/qdoc3/node.h44
-rw-r--r--tools/qdoc3/pagegenerator.cpp8
-rw-r--r--tools/qdoc3/test/qt_zh_CN.qdocconf86
-rw-r--r--tools/qdoc3/tree.cpp4
-rw-r--r--util/unicode/data/DerivedNormalizationProps.txt2650
78 files changed, 8041 insertions, 714 deletions
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 91593d3..a18bc13 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -471,6 +471,20 @@
\tableofcontents
+ \section1 Declarative UI development with Qt Quick
+
+ \section1 Network Bearer Management
+
+ Bearer Management controls the connectivity state of the system.
+ The new Bearer Management API in the QtNetwork module allows the
+ application to identify whether the system is online and how many
+ interfaces there are, as well as start and stop interfaces, or
+ roam transparently between access points.
+
+ QNetworkAccessManager uses this API for HTTP level roaming.
+
+ \section1 Multimedia - playback and playlist management
+
\section1 New Classes, Functions, Macros, etc.
Links to new classes, functions, macros, and other items
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index efee610..df9a463 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -52,3 +52,25 @@ symbian: {
partial_upgrade.path = c:/sys/bin
DEPLOYMENT = partial_upgrade $$DEPLOYMENT
}
+
+mmx {
+ DEFINES += QT_HAVE_MMX
+}
+3dnow {
+ DEFINES += QT_HAVE_3DNOW
+}
+sse {
+ DEFINES += QT_HAVE_SSE
+ DEFINES += QT_HAVE_MMXEXT
+}
+sse2 {
+ DEFINES += QT_HAVE_SSE2
+}
+iwmmxt {
+ DEFINES += QT_HAVE_IWMMXT
+}
+neon {
+ DEFINES += QT_HAVE_NEON
+ QMAKE_CXXFLAGS *= -mfpu=neon
+}
+
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 25255f9..20ad444 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -1466,9 +1466,14 @@ void QRegExpMatchState::match(const QChar *str0, int len0, int pos0,
#ifndef QT_NO_REGEXP_CAPTURE
for (int i = 0; i < numCaptures; ++i) {
int j = eng->captureForOfficialCapture.at(i);
- int len = capEnd[j] - capBegin[j];
- *c++ = (len > 0) ? pos + capBegin[j] : 0;
- *c++ = len;
+ if (capBegin[j] != EmptyCapture) {
+ int len = capEnd[j] - capBegin[j];
+ *c++ = (len > 0) ? pos + capBegin[j] : 0;
+ *c++ = len;
+ } else {
+ *c++ = -1;
+ *c++ = -1;
+ }
}
#endif
} else {
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index d85c248..bfc65bc 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -209,6 +209,7 @@ namespace QtSharedPointer {
inline bool destroy() { destroyer(this); return true; }
inline void operator delete(void *ptr) { ::operator delete(ptr); }
+ inline void operator delete(void *, void *) { }
};
// sizeof(ExternalRefCountWithDestroyFn) = 16 (32-bit) / 24 (64-bit)
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
new file mode 100644
index 0000000..52d2cea
--- /dev/null
+++ b/src/corelib/tools/qsimd.cpp
@@ -0,0 +1,246 @@
+/****************************************************************************
+**
+** 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 QtCore module 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 "qsimd_p.h"
+#include <QByteArray>
+
+QT_BEGIN_NAMESPACE
+
+uint qDetectCPUFeatures()
+{
+ static uint features = 0xffffffff;
+ if (features != 0xffffffff)
+ return features;
+
+#if defined (Q_OS_WINCE)
+#if defined (ARM)
+ if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX)) {
+ features = IWMMXT;
+ return features;
+ }
+#elif defined(_X86_)
+ features = 0;
+#if defined QT_HAVE_MMX
+ if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE))
+ features |= MMX;
+#endif
+#if defined QT_HAVE_3DNOW
+ if (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE))
+ features |= MMX3DNOW;
+#endif
+ return features;
+#endif
+ features = 0;
+ return features;
+#elif defined(QT_HAVE_IWMMXT)
+ // runtime detection only available when running as a previlegied process
+ static const bool doIWMMXT = !qgetenv("QT_NO_IWMMXT").toInt();
+ features = doIWMMXT ? IWMMXT : 0;
+ return features;
+#elif defined(QT_HAVE_NEON)
+ static const bool doNEON = !qgetenv("QT_NO_NEON").toInt();
+ features = doNEON ? NEON : 0;
+ return features;
+#else
+ features = 0;
+#if defined(__x86_64__) || defined(Q_OS_WIN64)
+ features = MMX|SSE|SSE2|CMOV;
+#elif defined(__ia64__)
+ features = MMX|SSE|SSE2;
+#elif defined(__i386__) || defined(_M_IX86)
+ unsigned int extended_result = 0;
+ uint result = 0;
+ /* see p. 118 of amd64 instruction set manual Vol3 */
+#if defined(Q_CC_GNU)
+ asm ("push %%ebx\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "mov %%eax, %%ebx\n"
+ "xor $0x00200000, %%eax\n"
+ "push %%eax\n"
+ "popf\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "xor %%edx, %%edx\n"
+ "xor %%ebx, %%eax\n"
+ "jz 1f\n"
+
+ "mov $0x00000001, %%eax\n"
+ "cpuid\n"
+ "1:\n"
+ "pop %%ebx\n"
+ "mov %%edx, %0\n"
+ : "=r" (result)
+ :
+ : "%eax", "%ecx", "%edx"
+ );
+
+ asm ("push %%ebx\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "mov %%eax, %%ebx\n"
+ "xor $0x00200000, %%eax\n"
+ "push %%eax\n"
+ "popf\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "xor %%edx, %%edx\n"
+ "xor %%ebx, %%eax\n"
+ "jz 2f\n"
+
+ "mov $0x80000000, %%eax\n"
+ "cpuid\n"
+ "cmp $0x80000000, %%eax\n"
+ "jbe 2f\n"
+ "mov $0x80000001, %%eax\n"
+ "cpuid\n"
+ "2:\n"
+ "pop %%ebx\n"
+ "mov %%edx, %0\n"
+ : "=r" (extended_result)
+ :
+ : "%eax", "%ecx", "%edx"
+ );
+#elif defined (Q_OS_WIN)
+ _asm {
+ push eax
+ push ebx
+ push ecx
+ push edx
+ pushfd
+ pop eax
+ mov ebx, eax
+ xor eax, 00200000h
+ push eax
+ popfd
+ pushfd
+ pop eax
+ mov edx, 0
+ xor eax, ebx
+ jz skip
+
+ mov eax, 1
+ cpuid
+ mov result, edx
+ skip:
+ pop edx
+ pop ecx
+ pop ebx
+ pop eax
+ }
+
+ _asm {
+ push eax
+ push ebx
+ push ecx
+ push edx
+ pushfd
+ pop eax
+ mov ebx, eax
+ xor eax, 00200000h
+ push eax
+ popfd
+ pushfd
+ pop eax
+ mov edx, 0
+ xor eax, ebx
+ jz skip2
+
+ mov eax, 80000000h
+ cpuid
+ cmp eax, 80000000h
+ jbe skip2
+ mov eax, 80000001h
+ cpuid
+ mov extended_result, edx
+ skip2:
+ pop edx
+ pop ecx
+ pop ebx
+ pop eax
+ }
+#endif
+
+ // result now contains the standard feature bits
+ if (result & (1u << 15))
+ features |= CMOV;
+ if (result & (1u << 23))
+ features |= MMX;
+ if (extended_result & (1u << 22))
+ features |= MMXEXT;
+ if (extended_result & (1u << 31))
+ features |= MMX3DNOW;
+ if (extended_result & (1u << 30))
+ features |= MMX3DNOWEXT;
+ if (result & (1u << 25))
+ features |= SSE;
+ if (result & (1u << 26))
+ features |= SSE2;
+#endif // i386
+
+#if defined(QT_HAVE_MMX)
+ if (qgetenv("QT_NO_MMX").toInt())
+ features ^= MMX;
+#endif
+ if (qgetenv("QT_NO_MMXEXT").toInt())
+ features ^= MMXEXT;
+
+#if defined(QT_HAVE_3DNOW)
+ if (qgetenv("QT_NO_3DNOW").toInt())
+ features ^= MMX3DNOW;
+#endif
+ if (qgetenv("QT_NO_3DNOWEXT").toInt())
+ features ^= MMX3DNOWEXT;
+
+#if defined(QT_HAVE_SSE)
+ if (qgetenv("QT_NO_SSE").toInt())
+ features ^= SSE;
+#endif
+#if defined(QT_HAVE_SSE2)
+ if (qgetenv("QT_NO_SSE2").toInt())
+ features ^= SSE2;
+#endif
+
+ return features;
+#endif
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h
new file mode 100644
index 0000000..556db14
--- /dev/null
+++ b/src/corelib/tools/qsimd_p.h
@@ -0,0 +1,126 @@
+/****************************************************************************
+**
+** 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 QtCore module 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$
+**
+****************************************************************************/
+
+#ifndef QSIMD_P_H
+#define QSIMD_P_H
+
+#include <qglobal.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+#if defined(QT_NO_MAC_XARCH) || (defined(Q_OS_DARWIN) && (defined(__ppc__) || defined(__ppc64__)))
+// Disable MMX and SSE on Mac/PPC builds, or if the compiler
+// does not support -Xarch argument passing
+#undef QT_HAVE_SSE2
+#undef QT_HAVE_SSE
+#undef QT_HAVE_3DNOW
+#undef QT_HAVE_MMX
+#endif
+
+// SSE intrinsics
+#if defined(__SSE2__)
+#if defined(QT_LINUXBASE)
+/// this is an evil hack - the posix_memalign declaration in LSB
+/// is wrong - see http://bugs.linuxbase.org/show_bug.cgi?id=2431
+# define posix_memalign _lsb_hack_posix_memalign
+# include <emmintrin.h>
+# undef posix_memalign
+#else
+# include <emmintrin.h>
+#endif
+
+#define QT_ALWAYS_HAVE_SSE2
+#endif
+
+// NEON intrinsics
+#if defined(QT_HAVE_NEON)
+#include <arm_neon.h>
+#endif
+
+
+// IWMMXT intrinsics
+#if defined(QT_HAVE_IWMMXT)
+#include <mmintrin.h>
+#if defined(Q_OS_WINCE)
+# include "qplatformdefs.h"
+#endif
+#endif
+
+#if defined(QT_HAVE_IWMMXT)
+#if !defined(__IWMMXT__) && !defined(Q_OS_WINCE)
+# include <xmmintrin.h>
+#elif defined(Q_OS_WINCE_STD) && defined(_X86_)
+# pragma warning(disable: 4391)
+# include <xmmintrin.h>
+#endif
+#endif
+
+// 3D now intrinsics
+#if defined(QT_HAVE_3DNOW)
+#include <mm3dnow.h>
+#endif
+
+enum CPUFeatures {
+ None = 0,
+ MMX = 0x1,
+ MMXEXT = 0x2,
+ MMX3DNOW = 0x4,
+ MMX3DNOWEXT = 0x8,
+ SSE = 0x10,
+ SSE2 = 0x20,
+ CMOV = 0x40,
+ IWMMXT = 0x80,
+ NEON = 0x100
+};
+
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+Q_CORE_EXPORT uint qDetectCPUFeatures();
+
+#endif // QSIMD_P_H
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index ac1bee7..e9b7b9a 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -46,6 +46,7 @@
#include <qtextcodec.h>
#endif
#include <private/qutfcodec_p.h>
+#include "qsimd_p.h"
#include <qdatastream.h>
#include <qlist.h>
#include "qlocale.h"
@@ -3479,12 +3480,82 @@ static QByteArray toLatin1_helper(const QChar *data, int length)
QByteArray ba;
if (length) {
ba.resize(length);
- const ushort *i = reinterpret_cast<const ushort *>(data);
- const ushort *e = i + length;
- uchar *s = (uchar*) ba.data();
- while (i != e) {
- *s++ = (*i>0xff) ? '?' : (uchar) *i;
- ++i;
+ const ushort *src = reinterpret_cast<const ushort *>(data);
+ uchar *dst = (uchar*) ba.data();
+#if defined(QT_ALWAYS_HAVE_SSE2)
+ if (length >= 16) {
+ const int chunkCount = length >> 4; // divided by 16
+ const __m128i questionMark = _mm_set1_epi16('?');
+ // SSE has no compare instruction for unsigned comparison.
+ // The variables must be shiffted + 0x8000 to be compared
+ const __m128i signedBitOffset = _mm_set1_epi16(0x8000);
+ const __m128i thresholdMask = _mm_set1_epi16(0xff + 0x8000);
+ for (int i = 0; i < chunkCount; ++i) {
+ __m128i chunk1 = _mm_loadu_si128((__m128i*)src); // load
+ src += 8;
+ {
+ // each 16 bit is equal to 0xFF if the source is outside latin 1 (>0xff)
+ const __m128i signedChunk = _mm_add_epi16(chunk1, signedBitOffset);
+ const __m128i offLimitMask = _mm_cmpgt_epi16(signedChunk, thresholdMask);
+
+ // offLimitQuestionMark contains '?' for each 16 bits that was off-limit
+ // the 16 bits that were correct contains zeros
+ const __m128i offLimitQuestionMark = _mm_and_si128(offLimitMask, questionMark);
+
+ // correctBytes contains the bytes that were in limit
+ // the 16 bits that were off limits contains zeros
+ const __m128i correctBytes = _mm_andnot_si128(offLimitMask, chunk1);
+
+ // merge offLimitQuestionMark and correctBytes to have the result
+ chunk1 = _mm_or_si128(correctBytes, offLimitQuestionMark);
+ }
+
+ __m128i chunk2 = _mm_loadu_si128((__m128i*)src); // load
+ src += 8;
+ {
+ // exactly the same operations as for the previous chunk of data
+ const __m128i signedChunk = _mm_add_epi16(chunk2, signedBitOffset);
+ const __m128i offLimitMask = _mm_cmpgt_epi16(signedChunk, thresholdMask);
+ const __m128i offLimitQuestionMark = _mm_and_si128(offLimitMask, questionMark);
+ const __m128i correctBytes = _mm_andnot_si128(offLimitMask, chunk2);
+ chunk2 = _mm_or_si128(correctBytes, offLimitQuestionMark);
+ }
+
+ // pack the two vector to 16 x 8bits elements
+ const __m128i result = _mm_packus_epi16(chunk1, chunk2);
+
+ _mm_storeu_si128((__m128i*)dst, result); // store
+ dst += 16;
+ }
+ length = length % 16;
+ }
+#elif QT_HAVE_NEON
+ // Refer to the documentation of the SSE2 implementation
+ // this use eactly the same method as for SSE except:
+ // 1) neon has unsigned comparison
+ // 2) packing is done to 64 bits (8 x 8bits component).
+ if (length >= 16) {
+ const int chunkCount = length >> 3; // divided by 8
+ const uint16x8_t questionMark = vdupq_n_u16('?'); // set
+ const uint16x8_t thresholdMask = vdupq_n_u16(0xff); // set
+ for (int i = 0; i < chunkCount; ++i) {
+ uint16x8_t chunk = vld1q_u16((uint16_t *)src); // load
+ src += 8;
+
+ const uint16x8_t offLimitMask = vcgtq_u16(chunk, thresholdMask); // chunk > thresholdMask
+ const uint16x8_t offLimitQuestionMark = vandq_u16(offLimitMask, questionMark); // offLimitMask & questionMark
+ const uint16x8_t correctBytes = vbicq_u16(chunk, offLimitMask); // !offLimitMask & chunk
+ chunk = vorrq_u16(correctBytes, offLimitQuestionMark); // correctBytes | offLimitQuestionMark
+ const uint8x8_t result = vmovn_u16(chunk); // narrowing move->packing
+ vst1_u8(dst, result); // store
+ dst += 8;
+ }
+ length = length % 8;
+ }
+#endif
+ while (length--) {
+ *dst++ = (*src>0xff) ? '?' : (uchar) *src;
+ ++src;
}
}
return ba;
@@ -3647,10 +3718,35 @@ QString::Data *QString::fromLatin1_helper(const char *str, int size)
d->alloc = d->size = size;
d->clean = d->asciiCache = d->simpletext = d->righttoleft = d->capacity = 0;
d->data = d->array;
- ushort *i = d->data;
d->array[size] = '\0';
+ ushort *dst = d->data;
+ /* SIMD:
+ * Unpacking with SSE has been shown to improve performance on recent CPUs
+ * The same method gives no improvement with NEON.
+ */
+#if defined(QT_ALWAYS_HAVE_SSE2)
+ if (size >= 16) {
+ int chunkCount = size >> 4; // divided by 16
+ const __m128i nullMask = _mm_set1_epi32(0);
+ for (int i = 0; i < chunkCount; ++i) {
+ const __m128i chunk = _mm_loadu_si128((__m128i*)str); // load
+ str += 16;
+
+ // unpack the first 8 bytes, padding with zeros
+ const __m128i firstHalf = _mm_unpacklo_epi8(chunk, nullMask);
+ _mm_storeu_si128((__m128i*)dst, firstHalf); // store
+ dst += 8;
+
+ // unpack the last 8 bytes, padding with zeros
+ const __m128i secondHalf = _mm_unpackhi_epi8 (chunk, nullMask);
+ _mm_storeu_si128((__m128i*)dst, secondHalf); // store
+ dst += 8;
+ }
+ size = size % 16;
+ }
+#endif
while (size--)
- *i++ = (uchar)*str++;
+ *dst++ = (uchar)*str++;
}
return d;
}
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 3406e41..6d64915 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -33,6 +33,7 @@ HEADERS += \
tools/qsharedpointer.h \
tools/qsharedpointer_impl.h \
tools/qset.h \
+ tools/qsimd_p.h \
tools/qsize.h \
tools/qstack.h \
tools/qstring.h \
@@ -68,6 +69,7 @@ SOURCES += \
tools/qregexp.cpp \
tools/qshareddata.cpp \
tools/qsharedpointer.cpp \
+ tools/qsimd.cpp \
tools/qsize.cpp \
tools/qstring.cpp \
tools/qstringbuilder.cpp \
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index aaae88e..40e1d2c 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -693,6 +693,18 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
--selectionChanging;
if (!selectionChanging && selectedItems.size() != oldSelectedItemsSize)
emit q->selectionChanged();
+
+ QHash<QGesture *, QGraphicsObject *>::iterator it;
+ for (it = gestureTargets.begin(); it != gestureTargets.end();) {
+ if (it.value() == item)
+ it = gestureTargets.erase(it);
+ else
+ ++it;
+ }
+ QGraphicsObject *dummy = static_cast<QGraphicsObject *>(item);
+ cachedTargetItems.removeOne(dummy);
+ cachedItemGestures.remove(dummy);
+ cachedAlreadyDeliveredGestures.remove(dummy);
}
/*!
@@ -5900,45 +5912,51 @@ void QGraphicsScenePrivate::leaveModal(QGraphicsItem *panel)
dispatchHoverEvent(&hoverEvent);
}
-void QGraphicsScenePrivate::getGestureTargets(const QSet<QGesture *> &gestures,
- QWidget *viewport,
- QMap<Qt::GestureType, QGesture *> *conflictedGestures,
- QList<QList<QGraphicsObject *> > *conflictedItems,
- QHash<QGesture *, QGraphicsObject *> *normalGestures)
+void QGraphicsScenePrivate::gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures,
+ Qt::GestureFlag flag,
+ QHash<QGraphicsObject *, QSet<QGesture *> > *targets,
+ QSet<QGraphicsObject *> *itemsSet,
+ QSet<QGesture *> *normal,
+ QSet<QGesture *> *conflicts)
{
+ QSet<QGesture *> normalGestures; // that are not in conflicted state.
foreach (QGesture *gesture, gestures) {
- Qt::GestureType gestureType = gesture->gestureType();
- if (gesture->hasHotSpot()) {
- QPoint screenPos = gesture->hotSpot().toPoint();
- QList<QGraphicsItem *> items = itemsAtPosition(screenPos, QPointF(), viewport);
- QList<QGraphicsObject *> result;
- for (int j = 0; j < items.size(); ++j) {
- QGraphicsItem *item = items.at(j);
+ if (!gesture->hasHotSpot())
+ continue;
+ const Qt::GestureType gestureType = gesture->gestureType();
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), gesture->d_func()->sceneHotSpot, 0);
+ for (int j = 0; j < items.size(); ++j) {
+ QGraphicsItem *item = items.at(j);
- // Check if the item is blocked by a modal panel and use it as
- // a target instead of this item.
- (void) item->isBlockedByModalPanel(&item);
+ // Check if the item is blocked by a modal panel and use it as
+ // a target instead of this item.
+ (void) item->isBlockedByModalPanel(&item);
- if (QGraphicsObject *itemobj = item->toGraphicsObject()) {
- QGraphicsItemPrivate *d = item->d_func();
- if (d->gestureContext.contains(gestureType)) {
- result.append(itemobj);
+ if (QGraphicsObject *itemobj = item->toGraphicsObject()) {
+ QGraphicsItemPrivate *d = item->QGraphicsItem::d_func();
+ QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator it =
+ d->gestureContext.find(gestureType);
+ if (it != d->gestureContext.end() && (!flag || (it.value() & flag))) {
+ if (normalGestures.contains(gesture)) {
+ normalGestures.remove(gesture);
+ if (conflicts)
+ conflicts->insert(gesture);
+ } else {
+ normalGestures.insert(gesture);
}
+ if (targets)
+ (*targets)[itemobj].insert(gesture);
+ if (itemsSet)
+ (*itemsSet).insert(itemobj);
}
- // Don't propagate through panels.
- if (item->isPanel())
- break;
- }
- DEBUG() << "QGraphicsScenePrivate::getGestureTargets:"
- << gesture << result;
- if (result.size() == 1) {
- normalGestures->insert(gesture, result.first());
- } else if (!result.isEmpty()) {
- conflictedGestures->insert(gestureType, gesture);
- conflictedItems->append(result);
}
+ // Don't propagate through panels.
+ if (item->isPanel())
+ break;
}
}
+ if (normal)
+ *normal = normalGestures;
}
void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
@@ -5946,266 +5964,215 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
QWidget *viewport = event->widget();
if (!viewport)
return;
+ QGraphicsView *graphicsView = qobject_cast<QGraphicsView *>(viewport->parent());
+ if (!graphicsView)
+ return;
+
QList<QGesture *> allGestures = event->gestures();
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "Delivering gestures:" << allGestures;
- typedef QHash<QGraphicsObject *, QList<QGesture *> > GesturesPerItem;
- GesturesPerItem gesturesPerItem;
-
- // gestures that are only supposed to propagate to parent items.
- QSet<QGesture *> parentPropagatedGestures;
-
QSet<QGesture *> startedGestures;
+ QPoint delta = graphicsView->mapFromGlobal(QPoint());
+ QTransform toScene = QTransform::fromTranslate(delta.x(), delta.y())
+ * graphicsView->viewportTransform().inverted();
foreach (QGesture *gesture, allGestures) {
+ // cache scene coordinates of the hot spot
+ if (gesture->hasHotSpot()) {
+ gesture->d_func()->sceneHotSpot = toScene.map(gesture->hotSpot());
+ } else {
+ gesture->d_func()->sceneHotSpot = QPointF();
+ }
+
QGraphicsObject *target = gestureTargets.value(gesture, 0);
if (!target) {
// when we are not in started mode but don't have a target
// then the only one interested in gesture is the view/scene
if (gesture->state() == Qt::GestureStarted)
startedGestures.insert(gesture);
- } else {
- gesturesPerItem[target].append(gesture);
- Qt::GestureFlags flags =
- target->QGraphicsItem::d_func()->gestureContext.value(gesture->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(gesture);
}
}
- QMap<Qt::GestureType, QGesture *> conflictedGestures;
- QList<QList<QGraphicsObject *> > conflictedItems;
- QHash<QGesture *, QGraphicsObject *> normalGestures;
- getGestureTargets(startedGestures, viewport, &conflictedGestures, &conflictedItems,
- &normalGestures);
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "Conflicting gestures:" << conflictedGestures.values() << conflictedItems;
- Q_ASSERT((conflictedGestures.isEmpty() && conflictedItems.isEmpty()) ||
- (!conflictedGestures.isEmpty() && !conflictedItems.isEmpty()));
-
- // gestures that were sent as override events, but no one accepted them
- QHash<QGesture *, QGraphicsObject *> ignoredConflictedGestures;
-
- // deliver conflicted gestures as override events first
- while (!conflictedGestures.isEmpty() && !conflictedItems.isEmpty()) {
- // get the topmost item to deliver the override event
- Q_ASSERT(!conflictedItems.isEmpty());
- Q_ASSERT(!conflictedItems.first().isEmpty());
- QGraphicsObject *topmost = conflictedItems.first().first();
- for (int i = 1; i < conflictedItems.size(); ++i) {
- QGraphicsObject *item = conflictedItems.at(i).first();
- if (qt_closestItemFirst(item, topmost)) {
- topmost = item;
- }
- }
- // get a list of gestures to send to the item
- QList<Qt::GestureType> grabbedGestures =
- topmost->QGraphicsItem::d_func()->gestureContext.keys();
- QList<QGesture *> gestures;
- for (int i = 0; i < grabbedGestures.size(); ++i) {
- if (QGesture *g = conflictedGestures.value(grabbedGestures.at(i), 0)) {
- gestures.append(g);
- if (!ignoredConflictedGestures.contains(g))
- ignoredConflictedGestures.insert(g, topmost);
- }
- }
-
- // send gesture override to the topmost item
- QGestureEvent ev(gestures);
- ev.t = QEvent::GestureOverride;
- ev.setWidget(event->widget());
- // mark event and individual gestures as ignored
- ev.ignore();
- foreach(QGesture *g, gestures)
- ev.setAccepted(g, false);
+ if (!startedGestures.isEmpty()) {
+ QSet<QGesture *> normalGestures; // that have just one target
+ QSet<QGesture *> conflictedGestures; // that have multiple possible targets
+ gestureTargetsAtHotSpots(startedGestures, Qt::GestureFlag(0), &cachedItemGestures, 0,
+ &normalGestures, &conflictedGestures);
+ cachedTargetItems = cachedItemGestures.keys();
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "delivering override to"
- << topmost << gestures;
- sendEvent(topmost, &ev);
- // mark all accepted gestures to deliver them as normal gesture events
- foreach (QGesture *g, gestures) {
- if (ev.isAccepted() || ev.isAccepted(g)) {
- conflictedGestures.remove(g->gestureType());
- gestureTargets.remove(g);
- // add the gesture to the list of normal delivered gestures
- normalGestures.insert(g, topmost);
+ << "Conflicting gestures:" << conflictedGestures;
+
+ // deliver conflicted gestures as override events AND remember
+ // initial gesture targets
+ if (!conflictedGestures.isEmpty()) {
+ for (int i = 0; i < cachedTargetItems.size(); ++i) {
+ QWeakPointer<QGraphicsObject> item = cachedTargetItems.at(i);
+
+ // get gestures to deliver to the current item
+ QSet<QGesture *> gestures = conflictedGestures & cachedItemGestures.value(item.data());
+ if (gestures.isEmpty())
+ continue;
+
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "override was accepted:"
- << g << topmost;
- ignoredConflictedGestures.remove(g);
+ << "delivering override to"
+ << item.data() << gestures;
+ // send gesture override
+ QGestureEvent ev(gestures.toList());
+ ev.t = QEvent::GestureOverride;
+ ev.setWidget(event->widget());
+ // mark event and individual gestures as ignored
+ ev.ignore();
+ foreach(QGesture *g, gestures)
+ ev.setAccepted(g, false);
+ sendEvent(item.data(), &ev);
+ // mark all accepted gestures to deliver them as normal gesture events
+ foreach (QGesture *g, gestures) {
+ if (ev.isAccepted() || ev.isAccepted(g)) {
+ conflictedGestures.remove(g);
+ // mark the item as a gesture target
+ if (item)
+ gestureTargets.insert(g, item.data());
+ DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
+ << "override was accepted:"
+ << g << item.data();
+ }
+ // remember the first item that received the override event
+ // as it most likely become a target if noone else accepts
+ // the override event
+ if (!gestureTargets.contains(g) && item)
+ gestureTargets.insert(g, item.data());
+
+ }
+ if (conflictedGestures.isEmpty())
+ break;
}
}
- // remove the item that we've already delivered from the list
- for (int i = 0; i < conflictedItems.size(); ) {
- QList<QGraphicsObject *> &items = conflictedItems[i];
- if (items.first() == topmost) {
- items.removeFirst();
- if (items.isEmpty()) {
- conflictedItems.removeAt(i);
- continue;
+ // remember the initial target item for each gesture that was not in
+ // the conflicted state.
+ if (!normalGestures.isEmpty()) {
+ for (int i = 0; i < cachedTargetItems.size() && !normalGestures.isEmpty(); ++i) {
+ QGraphicsObject *item = cachedTargetItems.at(i);
+
+ // get gestures to deliver to the current item
+ foreach (QGesture *g, cachedItemGestures.value(item)) {
+ if (!gestureTargets.contains(g)) {
+ gestureTargets.insert(g, item);
+ normalGestures.remove(g);
+ }
}
}
- ++i;
}
}
- // put back those started gestures that are not in the conflicted state
- // and remember their targets
- QHash<QGesture *, QGraphicsObject *>::const_iterator it = normalGestures.begin(),
- e = normalGestures.end();
- for (; it != e; ++it) {
- QGesture *g = it.key();
- QGraphicsObject *receiver = it.value();
- Q_ASSERT(!gestureTargets.contains(g));
- gestureTargets.insert(g, receiver);
- gesturesPerItem[receiver].append(g);
- Qt::GestureFlags flags =
- receiver->QGraphicsItem::d_func()->gestureContext.value(g->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(g);
- }
- it = ignoredConflictedGestures.begin();
- e = ignoredConflictedGestures.end();
- for (; it != e; ++it) {
- QGesture *g = it.key();
- QGraphicsObject *receiver = it.value();
- Q_ASSERT(!gestureTargets.contains(g));
- gestureTargets.insert(g, receiver);
- gesturesPerItem[receiver].append(g);
- Qt::GestureFlags flags =
- receiver->QGraphicsItem::d_func()->gestureContext.value(g->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(g);
- }
-
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "Started gestures:" << normalGestures.keys()
- << "All gestures:" << gesturesPerItem.values();
// deliver all gesture events
- QList<QGesture *> alreadyIgnoredGestures;
- QHash<QGraphicsObject *, QSet<QGesture *> > itemIgnoredGestures;
- QList<QGraphicsObject *> targetItems = gesturesPerItem.keys();
- qSort(targetItems.begin(), targetItems.end(), qt_closestItemFirst);
- for (int i = 0; i < targetItems.size(); ++i) {
- QGraphicsObject *item = targetItems.at(i);
- QList<QGesture *> gestures = gesturesPerItem.value(item);
- // remove gestures that were already delivered once and were ignored
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "already ignored gestures for item"
- << item << ":" << itemIgnoredGestures.value(item);
-
- if (itemIgnoredGestures.contains(item)) // don't deliver twice to the same item
- continue;
-
- QGraphicsItemPrivate *gid = item->QGraphicsItem::d_func();
- foreach(QGesture *g, alreadyIgnoredGestures) {
- QMap<Qt::GestureType, Qt::GestureFlags>::iterator contextit =
- gid->gestureContext.find(g->gestureType());
- bool deliver = false;
- if (contextit != gid->gestureContext.end()) {
- if (g->state() == Qt::GestureStarted) {
- deliver = true;
- } else {
- const Qt::GestureFlags flags = contextit.value();
- if (flags & Qt::ReceivePartialGestures) {
- QGraphicsObject *originalTarget = gestureTargets.value(g);
- Q_ASSERT(originalTarget);
- QGraphicsItemPrivate *otd = originalTarget->QGraphicsItem::d_func();
- const Qt::GestureFlags originalTargetFlags = otd->gestureContext.value(g->gestureType());
- if (originalTargetFlags & Qt::IgnoredGesturesPropagateToParent) {
- // only deliver to parents of the original target item
- deliver = item->isAncestorOf(originalTarget);
- } else {
- deliver = true;
- }
- }
- }
- }
- if (deliver)
- gestures += g;
+ QSet<QGesture *> undeliveredGestures;
+ QSet<QGesture *> parentPropagatedGestures;
+ foreach (QGesture *gesture, allGestures) {
+ if (QGraphicsObject *target = gestureTargets.value(gesture, 0)) {
+ cachedItemGestures[target].insert(gesture);
+ cachedTargetItems.append(target);
+ undeliveredGestures.insert(gesture);
+ QGraphicsItemPrivate *d = target->QGraphicsItem::d_func();
+ const Qt::GestureFlags flags = d->gestureContext.value(gesture->gestureType());
+ if (flags & Qt::IgnoredGesturesPropagateToParent)
+ parentPropagatedGestures.insert(gesture);
}
+ }
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
+ for (int i = 0; i < cachedTargetItems.size(); ++i) {
+ QWeakPointer<QGraphicsObject> receiver = cachedTargetItems.at(i);
+ QSet<QGesture *> gestures =
+ undeliveredGestures & cachedItemGestures.value(receiver.data());
+ gestures -= cachedAlreadyDeliveredGestures.value(receiver.data());
+
if (gestures.isEmpty())
continue;
+
+ cachedAlreadyDeliveredGestures[receiver.data()] += gestures;
+ const bool isPanel = receiver.data()->isPanel();
+
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "delivering to"
- << item << gestures;
- QGestureEvent ev(gestures);
+ << receiver.data() << gestures;
+ QGestureEvent ev(gestures.toList());
ev.setWidget(event->widget());
- sendEvent(item, &ev);
+ sendEvent(receiver.data(), &ev);
QSet<QGesture *> ignoredGestures;
foreach (QGesture *g, gestures) {
if (!ev.isAccepted() && !ev.isAccepted(g)) {
- ignoredGestures.insert(g);
+ // if the gesture was ignored by its target, we will update the
+ // targetItems list with a possible target items (items that
+ // want to receive partial gestures).
+ // ### wont' work if the target was destroyed in the event
+ // we will just stop delivering it.
+ if (receiver && receiver.data() == gestureTargets.value(g, 0))
+ ignoredGestures.insert(g);
} else {
- if (g->state() == Qt::GestureStarted)
- gestureTargets[g] = item;
- }
- }
- if (!ignoredGestures.isEmpty()) {
- // get a list of items under the (current) hotspot of each ignored
- // gesture and start delivery again from the beginning
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "item has ignored the event, will propagate."
- << item << ignoredGestures;
- itemIgnoredGestures[item] += ignoredGestures;
- alreadyIgnoredGestures = ignoredGestures.toList();
-
- // remove gestures that are supposed to be propagated to
- // parent items only.
- QSet<QGesture *> parentGestures;
- for (QSet<QGesture *>::iterator it = ignoredGestures.begin();
- it != ignoredGestures.end();) {
- if (parentPropagatedGestures.contains(*it)) {
- parentGestures.insert(*it);
- it = ignoredGestures.erase(it);
- } else {
- ++it;
+ if (receiver && g->state() == Qt::GestureStarted) {
+ // someone accepted the propagated initial GestureStarted
+ // event, let it be the new target for all following events.
+ gestureTargets[g] = receiver.data();
}
+ undeliveredGestures.remove(g);
}
+ }
+ if (undeliveredGestures.isEmpty())
+ break;
- QSet<QGraphicsObject *> itemsSet = targetItems.toSet();
-
- foreach(QGesture *g, parentGestures) {
- // get the original target for the gesture
- QGraphicsItem *item = gestureTargets.value(g, 0);
- Q_ASSERT(item);
- const Qt::GestureType gestureType = g->gestureType();
- // iterate through parent items of the original gesture
- // target item and collect potential receivers
- do {
- if (QGraphicsObject *obj = item->toGraphicsObject()) {
- if (item->d_func()->gestureContext.contains(gestureType))
- itemsSet.insert(obj);
+ // ignoredGestures list is only filled when delivering to the gesture
+ // target item, so it is safe to assume item == target.
+ if (!ignoredGestures.isEmpty() && !isPanel) {
+ // look for new potential targets for gestures that were ignored
+ // and should be propagated.
+
+ QSet<QGraphicsObject *> targetsSet = cachedTargetItems.toSet();
+
+ if (receiver) {
+ // first if the gesture should be propagated to parents only
+ for (QSet<QGesture *>::iterator it = ignoredGestures.begin();
+ it != ignoredGestures.end();) {
+ if (parentPropagatedGestures.contains(*it)) {
+ QGesture *gesture = *it;
+ const Qt::GestureType gestureType = gesture->gestureType();
+ QGraphicsItem *item = receiver.data();
+ while (item) {
+ if (QGraphicsObject *obj = item->toGraphicsObject()) {
+ if (item->d_func()->gestureContext.contains(gestureType)) {
+ targetsSet.insert(obj);
+ cachedItemGestures[obj].insert(gesture);
+ }
+ }
+ if (item->isPanel())
+ break;
+ item = item->parentItem();
+ }
+
+ it = ignoredGestures.erase(it);
+ continue;
}
- if (item->isPanel())
- break;
- } while ((item = item->parentItem()));
+ ++it;
+ }
}
- QMap<Qt::GestureType, QGesture *> conflictedGestures;
- QList<QList<QGraphicsObject *> > itemsForConflictedGestures;
- QHash<QGesture *, QGraphicsObject *> normalGestures;
- getGestureTargets(ignoredGestures, viewport,
- &conflictedGestures, &itemsForConflictedGestures,
- &normalGestures);
- for (int k = 0; k < itemsForConflictedGestures.size(); ++k)
- itemsSet += itemsForConflictedGestures.at(k).toSet();
-
- targetItems = itemsSet.toList();
+ gestureTargetsAtHotSpots(ignoredGestures, Qt::ReceivePartialGestures,
+ &cachedItemGestures, &targetsSet, 0, 0);
- qSort(targetItems.begin(), targetItems.end(), qt_closestItemFirst);
+ cachedTargetItems = targetsSet.toList();
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "new targets:" << targetItems;
+ << "new targets:" << cachedTargetItems;
i = -1; // start delivery again
continue;
}
}
+
foreach (QGesture *g, startedGestures) {
if (g->gestureCancelPolicy() == QGesture::CancelAllInContext) {
DEBUG() << "lets try to cancel some";
// find gestures in context in Qt::GestureStarted or Qt::GestureUpdated state and cancel them
- cancelGesturesForChildren(g, event->widget());
+ cancelGesturesForChildren(g);
}
}
@@ -6220,9 +6187,13 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
break;
}
}
+
+ cachedTargetItems.clear();
+ cachedItemGestures.clear();
+ cachedAlreadyDeliveredGestures.clear();
}
-void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidget *viewport)
+void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original)
{
Q_ASSERT(original);
QGraphicsItem *originalItem = gestureTargets.value(original);
@@ -6278,8 +6249,7 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidge
if (!g->hasHotSpot())
continue;
- QPoint screenPos = g->hotSpot().toPoint();
- QList<QGraphicsItem *> items = itemsAtPosition(screenPos, QPointF(), viewport);
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), g->d_func()->sceneHotSpot, 0);
for (int j = 0; j < items.size(); ++j) {
QGraphicsObject *item = items.at(j)->toGraphicsObject();
if (!item)
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index 04ffe0f..ca8b829 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -294,13 +294,18 @@ public:
bool allItemsIgnoreTouchEvents;
void enableTouchEventsOnViews();
+ QList<QGraphicsObject *> cachedTargetItems;
+ QHash<QGraphicsObject *, QSet<QGesture *> > cachedItemGestures;
+ QHash<QGraphicsObject *, QSet<QGesture *> > cachedAlreadyDeliveredGestures;
QHash<QGesture *, QGraphicsObject *> gestureTargets;
void gestureEventHandler(QGestureEvent *event);
- void getGestureTargets(const QSet<QGesture *> &gestures, QWidget *viewport,
- QMap<Qt::GestureType, QGesture *> *conflictedGestures,
- QList<QList<QGraphicsObject *> > *conflictedItems,
- QHash<QGesture *, QGraphicsObject *> *normalGestures);
- void cancelGesturesForChildren(QGesture *original, QWidget *viewport);
+ void gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures,
+ Qt::GestureFlag flag,
+ QHash<QGraphicsObject *, QSet<QGesture *> > *targets,
+ QSet<QGraphicsObject *> *itemsSet = 0,
+ QSet<QGesture *> *normal = 0,
+ QSet<QGesture *> *conflicts = 0);
+ void cancelGesturesForChildren(QGesture *original);
void updateInputMethodSensitivityInViews();
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index c347410..6a16403 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -419,6 +419,8 @@ extern "C" {
- (BOOL)isOpaque;
{
+ if (!qwidgetprivate)
+ return [super isOpaque];
return qwidgetprivate->isOpaque;
}
@@ -450,7 +452,7 @@ extern "C" {
}
// Make sure the opengl context is updated on resize.
- if (qwidgetprivate->isGLWidget) {
+ if (qwidgetprivate && qwidgetprivate->isGLWidget) {
qwidgetprivate->needWindowChange = true;
QEvent event(QEvent::MacGLWindowChange);
qApp->sendEvent(qwidget, &event);
@@ -459,6 +461,9 @@ extern "C" {
- (void)drawRect:(NSRect)aRect
{
+ if (!qwidget)
+ return;
+
if (QApplicationPrivate::graphicsSystem() != 0) {
if (QWidgetBackingStore *bs = qwidgetprivate->maybeBackingStore()) {
// Drawing is handled on the window level
@@ -552,12 +557,18 @@ extern "C" {
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return NO;
+
Q_UNUSED(theEvent);
return !qwidget->testAttribute(Qt::WA_MacNoClickThrough);
}
- (NSView *)hitTest:(NSPoint)aPoint
{
+ if (!qwidget)
+ return [super hitTest:aPoint];
+
if (qwidget->testAttribute(Qt::WA_TransparentForMouseEvents))
return nil; // You cannot hit a transparent for mouse event widget.
return [super hitTest:aPoint];
@@ -565,6 +576,9 @@ extern "C" {
- (void)updateTrackingAreas
{
+ if (!qwidget)
+ return;
+
// [NSView addTrackingArea] is slow, so bail out early if we can:
if (NSIsEmptyRect([self visibleRect]))
return;
@@ -598,6 +612,9 @@ extern "C" {
- (void)mouseEntered:(NSEvent *)event
{
+ if (!qwidget)
+ return;
+
if (qwidgetprivate->data.in_destructor)
return;
QEvent enterEvent(QEvent::Enter);
@@ -620,6 +637,9 @@ extern "C" {
- (void)mouseExited:(NSEvent *)event
{
+ if (!qwidget)
+ return;
+
QEvent leaveEvent(QEvent::Leave);
NSPoint globalPoint = [[event window] convertBaseToScreen:[event locationInWindow]];
if (!qAppInstance()->activeModalWidget() || QApplicationPrivate::tryModalHelper(qwidget, 0)) {
@@ -638,6 +658,9 @@ extern "C" {
- (void)flagsChanged:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return;
+
QWidget *widgetToGetKey = qwidget;
QWidget *popup = qAppInstance()->activePopupWidget();
@@ -649,6 +672,9 @@ extern "C" {
- (void)mouseMoved:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return;
+
// We always enable mouse tracking for all QCocoaView-s. In cases where we have
// child views, we will receive mouseMoved for both parent & the child (if
// mouse is over the child). We need to ignore the parent mouseMoved in such
@@ -939,6 +965,8 @@ extern "C" {
- (void)frameDidChange:(NSNotification *)note
{
Q_UNUSED(note);
+ if (!qwidget)
+ return;
if (qwidget->isWindow())
return;
NSRect newFrame = [self frame];
@@ -962,7 +990,7 @@ extern "C" {
{
QMacCocoaAutoReleasePool pool;
[super setEnabled:flag];
- if (qwidget->isEnabled() != flag)
+ if (qwidget && qwidget->isEnabled() != flag)
qwidget->setEnabled(flag);
}
@@ -973,6 +1001,8 @@ extern "C" {
- (BOOL)acceptsFirstResponder
{
+ if (!qwidget)
+ return NO;
if (qwidget->isWindow())
return YES; // Always do it, so that windows can accept key press events.
return qwidget->focusPolicy() != Qt::NoFocus;
@@ -980,6 +1010,8 @@ extern "C" {
- (BOOL)resignFirstResponder
{
+ if (!qwidget)
+ return NO;
// Seems like the following test only triggers if this
// view is inside a QMacNativeWidget:
if (qwidget == QApplication::focusWidget())
@@ -1015,6 +1047,12 @@ extern "C" {
return qwidget;
}
+- (void) qt_clearQWidget
+{
+ qwidget = 0;
+ qwidgetprivate = 0;
+}
+
- (BOOL)qt_leftButtonIsRightButton
{
return leftButtonIsRightButton;
@@ -1068,9 +1106,11 @@ extern "C" {
- (void)viewWillMoveToWindow:(NSWindow *)window
{
+ if (qwidget == 0)
+ return;
+
if (qwidget->windowFlags() & Qt::MSWindowsOwnDC
&& (window != [self window])) { // OpenGL Widget
- // Create a stupid ClearDrawable Event
QEvent event(QEvent::MacGLClearDrawable);
qApp->sendEvent(qwidget, &event);
}
@@ -1078,6 +1118,9 @@ extern "C" {
- (void)viewDidMoveToWindow
{
+ if (qwidget == 0)
+ return;
+
if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) {
// call update paint event
qwidgetprivate->needWindowChange = true;
@@ -1273,6 +1316,9 @@ extern "C" {
- (NSArray*) validAttributesForMarkedText
{
+ if (qwidget == 0)
+ return nil;
+
if (!qwidget->testAttribute(Qt::WA_InputMethodEnabled))
return nil; // Not sure if that's correct, but it's saves a malloc.
diff --git a/src/gui/kernel/qcocoaview_mac_p.h b/src/gui/kernel/qcocoaview_mac_p.h
index 4bb10c5..33aaa24 100644
--- a/src/gui/kernel/qcocoaview_mac_p.h
+++ b/src/gui/kernel/qcocoaview_mac_p.h
@@ -103,6 +103,7 @@ Q_GUI_EXPORT
- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation;
- (BOOL)isComposing;
- (QWidget *)qt_qwidget;
+- (void) qt_clearQWidget;
- (BOOL)qt_leftButtonIsRightButton;
- (void)qt_setLeftButtonIsRightButton:(BOOL)isSwapped;
+ (DnDParams*)currentMouseEvent;
diff --git a/src/gui/kernel/qgesture_p.h b/src/gui/kernel/qgesture_p.h
index dee5592..649a310 100644
--- a/src/gui/kernel/qgesture_p.h
+++ b/src/gui/kernel/qgesture_p.h
@@ -69,13 +69,13 @@ public:
QGesturePrivate()
: gestureType(Qt::CustomGesture), state(Qt::NoGesture),
isHotSpotSet(false), gestureCancelPolicy(0)
-
{
}
Qt::GestureType gestureType;
Qt::GestureState state;
QPointF hotSpot;
+ QPointF sceneHotSpot;
uint isHotSpotSet : 1;
uint gestureCancelPolicy : 2;
};
diff --git a/src/gui/kernel/qgesturerecognizer.cpp b/src/gui/kernel/qgesturerecognizer.cpp
index 8735d27..c88a9a7 100644
--- a/src/gui/kernel/qgesturerecognizer.cpp
+++ b/src/gui/kernel/qgesturerecognizer.cpp
@@ -181,6 +181,7 @@ void QGestureRecognizer::reset(QGesture *gesture)
QGesturePrivate *d = gesture->d_func();
d->state = Qt::NoGesture;
d->hotSpot = QPointF();
+ d->sceneHotSpot = QPointF();
d->isHotSpotSet = false;
}
}
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index e9fdbda..9560952 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm
@@ -369,6 +369,16 @@ QMacTabletHash *qt_mac_tablet_hash()
}
#ifdef QT_MAC_USE_COCOA
+
+// Clears the QWidget pointer that each QCocoaView holds.
+void qt_mac_clearCocoaViewQWidgetPointers(QWidget *widget)
+{
+ QCocoaView *cocoaView = reinterpret_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ if (cocoaView && [cocoaView respondsToSelector:@selector(qt_qwidget)]) {
+ [cocoaView qt_clearQWidget];
+ }
+}
+
void qt_dispatchTabletProximityEvent(void * /*NSEvent * */ tabletEvent)
{
NSEvent *proximityEvent = static_cast<NSEvent *>(tabletEvent);
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index d433048..1e9b1d9 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -1468,6 +1468,15 @@ QWidget::~QWidget()
d->declarativeData = 0; // don't activate again in ~QObject
}
+#ifdef QT_MAC_USE_COCOA
+ // QCocoaView holds a pointer back to this widget. Clear it now
+ // to make sure it's not followed later on. The lifetime of the
+ // QCocoaView might exceed the lifetime of this widget in cases
+ // where Cocoa itself holds references to it.
+ extern void qt_mac_clearCocoaViewQWidgetPointers(QWidget *);
+ qt_mac_clearCocoaViewQWidgetPointers(this);
+#endif
+
if (!d->children.isEmpty())
d->deleteChildren();
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index fae26e0..891f4c2 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -46,6 +46,7 @@
#include <private/qdrawhelper_armv6_p.h>
#include <private/qdrawhelper_neon_p.h>
#include <private/qmath_p.h>
+#include <private/qsimd_p.h>
#include <qmath.h>
QT_BEGIN_NAMESPACE
@@ -7720,199 +7721,6 @@ static void qt_memfill16_setup(quint16 *dest, quint16 value, int count);
qt_memfill32_func qt_memfill32 = qt_memfill32_setup;
qt_memfill16_func qt_memfill16 = qt_memfill16_setup;
-enum CPUFeatures {
- None = 0,
- MMX = 0x1,
- MMXEXT = 0x2,
- MMX3DNOW = 0x4,
- MMX3DNOWEXT = 0x8,
- SSE = 0x10,
- SSE2 = 0x20,
- CMOV = 0x40,
- IWMMXT = 0x80,
- NEON = 0x100
-};
-
-static uint detectCPUFeatures()
-{
-#if defined (Q_OS_WINCE)
-#if defined (ARM)
- if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX))
- return IWMMXT;
-#elif defined(_X86_)
- uint features = 0;
-#if defined QT_HAVE_MMX
- if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE))
- features |= MMX;
-#endif
-#if defined QT_HAVE_3DNOW
- if (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE))
- features |= MMX3DNOW;
-#endif
- return features;
-#endif
- return 0;
-#elif defined(QT_HAVE_IWMMXT)
- // runtime detection only available when running as a previlegied process
- static const bool doIWMMXT = !qgetenv("QT_NO_IWMMXT").toInt();
- return doIWMMXT ? IWMMXT : 0;
-#elif defined(QT_HAVE_NEON)
- static const bool doNEON = !qgetenv("QT_NO_NEON").toInt();
- return doNEON ? NEON : 0;
-#else
- uint features = 0;
-#if defined(__x86_64__) || defined(Q_OS_WIN64)
- features = MMX|SSE|SSE2|CMOV;
-#elif defined(__ia64__)
- features = MMX|SSE|SSE2;
-#elif defined(__i386__) || defined(_M_IX86)
- unsigned int extended_result = 0;
- uint result = 0;
- /* see p. 118 of amd64 instruction set manual Vol3 */
-#if defined(Q_CC_GNU)
- asm ("push %%ebx\n"
- "pushf\n"
- "pop %%eax\n"
- "mov %%eax, %%ebx\n"
- "xor $0x00200000, %%eax\n"
- "push %%eax\n"
- "popf\n"
- "pushf\n"
- "pop %%eax\n"
- "xor %%edx, %%edx\n"
- "xor %%ebx, %%eax\n"
- "jz 1f\n"
-
- "mov $0x00000001, %%eax\n"
- "cpuid\n"
- "1:\n"
- "pop %%ebx\n"
- "mov %%edx, %0\n"
- : "=r" (result)
- :
- : "%eax", "%ecx", "%edx"
- );
-
- asm ("push %%ebx\n"
- "pushf\n"
- "pop %%eax\n"
- "mov %%eax, %%ebx\n"
- "xor $0x00200000, %%eax\n"
- "push %%eax\n"
- "popf\n"
- "pushf\n"
- "pop %%eax\n"
- "xor %%edx, %%edx\n"
- "xor %%ebx, %%eax\n"
- "jz 2f\n"
-
- "mov $0x80000000, %%eax\n"
- "cpuid\n"
- "cmp $0x80000000, %%eax\n"
- "jbe 2f\n"
- "mov $0x80000001, %%eax\n"
- "cpuid\n"
- "2:\n"
- "pop %%ebx\n"
- "mov %%edx, %0\n"
- : "=r" (extended_result)
- :
- : "%eax", "%ecx", "%edx"
- );
-#elif defined (Q_OS_WIN)
- _asm {
- push eax
- push ebx
- push ecx
- push edx
- pushfd
- pop eax
- mov ebx, eax
- xor eax, 00200000h
- push eax
- popfd
- pushfd
- pop eax
- mov edx, 0
- xor eax, ebx
- jz skip
-
- mov eax, 1
- cpuid
- mov result, edx
- skip:
- pop edx
- pop ecx
- pop ebx
- pop eax
- }
-
- _asm {
- push eax
- push ebx
- push ecx
- push edx
- pushfd
- pop eax
- mov ebx, eax
- xor eax, 00200000h
- push eax
- popfd
- pushfd
- pop eax
- mov edx, 0
- xor eax, ebx
- jz skip2
-
- mov eax, 80000000h
- cpuid
- cmp eax, 80000000h
- jbe skip2
- mov eax, 80000001h
- cpuid
- mov extended_result, edx
- skip2:
- pop edx
- pop ecx
- pop ebx
- pop eax
- }
-#endif
-
- // result now contains the standard feature bits
- if (result & (1u << 15))
- features |= CMOV;
- if (result & (1u << 23))
- features |= MMX;
- if (extended_result & (1u << 22))
- features |= MMXEXT;
- if (extended_result & (1u << 31))
- features |= MMX3DNOW;
- if (extended_result & (1u << 30))
- features |= MMX3DNOWEXT;
- if (result & (1u << 25))
- features |= SSE;
- if (result & (1u << 26))
- features |= SSE2;
-#endif // i386
-
- if (qgetenv("QT_NO_MMX").toInt())
- features ^= MMX;
- if (qgetenv("QT_NO_MMXEXT").toInt())
- features ^= MMXEXT;
- if (qgetenv("QT_NO_3DNOW").toInt())
- features ^= MMX3DNOW;
- if (qgetenv("QT_NO_3DNOWEXT").toInt())
- features ^= MMX3DNOWEXT;
- if (qgetenv("QT_NO_SSE").toInt())
- features ^= SSE;
- if (qgetenv("QT_NO_SSE2").toInt())
- features ^= SSE2;
-
- return features;
-#endif
-}
-
#if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6)
// Move these to qdrawhelper_arm.c when all
// functions are implemented using arm assembly.
@@ -8005,10 +7813,7 @@ static void qt_blend_color_argb_armv6(int count, const QSpan *spans, void *userD
void qInitDrawhelperAsm()
{
- static uint features = 0xffffffff;
- if (features != 0xffffffff)
- return;
- features = detectCPUFeatures();
+ const uint features = qDetectCPUFeatures();
qt_memfill32 = qt_memfill_template<quint32, quint32>;
qt_memfill16 = qt_memfill_quint16; //qt_memfill_template<quint16, quint16>;
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index 2f78b00..f5b17ea 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -67,15 +67,6 @@
#include "QtGui/qscreen_qws.h"
#endif
-// Disable MMX and SSE on Mac/PPC builds, or if the compiler
-// does not support -Xarch argument passing
-#if defined(QT_NO_MAC_XARCH) || (defined(Q_OS_DARWIN) && (defined(__ppc__) || defined(__ppc64__)))
-#undef QT_HAVE_SSE2
-#undef QT_HAVE_SSE
-#undef QT_HAVE_3DNOW
-#undef QT_HAVE_MMX
-#endif
-
QT_BEGIN_NAMESPACE
#if defined(Q_CC_MSVC) && _MSCVER <= 1300 && !defined(Q_CC_INTEL)
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 60265c5..a7c2a0b 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -3213,6 +3213,9 @@ QRasterPaintEnginePrivate::getPenFunc(const QRectF &rect,
return isUnclipped(rect, penWidth) ? data->unclipped_blend : data->blend;
}
+/*!
+ \reimp
+*/
void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
{
ensurePen();
diff --git a/src/multimedia/base/qgraphicsvideoitem.cpp b/src/multimedia/base/qgraphicsvideoitem.cpp
index 21ba8c9..d5ca9e8 100644
--- a/src/multimedia/base/qgraphicsvideoitem.cpp
+++ b/src/multimedia/base/qgraphicsvideoitem.cpp
@@ -177,9 +177,10 @@ void QGraphicsVideoItemPrivate::_q_mediaObjectDestroyed()
/*!
\class QGraphicsVideoItem
-
\brief The QGraphicsVideoItem class provides a graphics item which display video produced by a QMediaObject.
+ \since 4.7
+
\ingroup multimedia
Attaching a QGraphicsVideoItem to a QMediaObject allows it to display
diff --git a/src/multimedia/base/qmediacontent.cpp b/src/multimedia/base/qmediacontent.cpp
index fd519c6..6f158d2 100644
--- a/src/multimedia/base/qmediacontent.cpp
+++ b/src/multimedia/base/qmediacontent.cpp
@@ -76,6 +76,7 @@ private:
\class QMediaContent
\preliminary
\brief The QMediaContent class provides access to the resources relating to a media content.
+ \since 4.7
\ingroup multimedia
diff --git a/src/multimedia/base/qmediacontrol.cpp b/src/multimedia/base/qmediacontrol.cpp
index c8bbfd4..b84c49e 100644
--- a/src/multimedia/base/qmediacontrol.cpp
+++ b/src/multimedia/base/qmediacontrol.cpp
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaControl
\ingroup multimedia-serv
+ \since 4.7
\preliminary
\brief The QMediaControl class provides a base interface for media service controls.
diff --git a/src/multimedia/base/qmediaobject.cpp b/src/multimedia/base/qmediaobject.cpp
index b2b8c1b..0422718 100644
--- a/src/multimedia/base/qmediaobject.cpp
+++ b/src/multimedia/base/qmediaobject.cpp
@@ -67,6 +67,7 @@ void QMediaObjectPrivate::_q_notify()
\class QMediaObject
\preliminary
\brief The QMediaObject class provides a common base for multimedia objects.
+ \since 4.7
\ingroup multimedia
diff --git a/src/multimedia/base/qmediaplaylist.cpp b/src/multimedia/base/qmediaplaylist.cpp
index ab91fd7..b3f3dd3 100644
--- a/src/multimedia/base/qmediaplaylist.cpp
+++ b/src/multimedia/base/qmediaplaylist.cpp
@@ -66,6 +66,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, playlistIOLoader,
/*!
\class QMediaPlaylist
\ingroup multimedia
+ \since 4.7
\preliminary
\brief The QMediaPlaylist class provides a list of media content to play.
diff --git a/src/multimedia/base/qmediaplaylistcontrol.cpp b/src/multimedia/base/qmediaplaylistcontrol.cpp
index 2ae03ad..ba3d224 100644
--- a/src/multimedia/base/qmediaplaylistcontrol.cpp
+++ b/src/multimedia/base/qmediaplaylistcontrol.cpp
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistControl
\ingroup multimedia-serv
+ \since 4.7
\preliminary
\brief The QMediaPlaylistControl class provides access to the playlist functionality of a
diff --git a/src/multimedia/base/qmediaplaylistioplugin.cpp b/src/multimedia/base/qmediaplaylistioplugin.cpp
index 5f11e38..48fd721 100644
--- a/src/multimedia/base/qmediaplaylistioplugin.cpp
+++ b/src/multimedia/base/qmediaplaylistioplugin.cpp
@@ -46,6 +46,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistReader
\preliminary
+ \since 4.7
\brief The QMediaPlaylistReader class provides an interface for reading a playlist file.
\sa QMediaPlaylistIOPlugin
@@ -83,6 +84,7 @@ QMediaPlaylistReader::~QMediaPlaylistReader()
/*!
\class QMediaPlaylistWriter
\preliminary
+ \since 4.7
\brief The QMediaPlaylistWriter class provides an interface for writing a playlist file.
\sa QMediaPlaylistIOPlugin
@@ -111,6 +113,7 @@ QMediaPlaylistWriter::~QMediaPlaylistWriter()
/*!
\class QMediaPlaylistIOPlugin
+ \since 4.7
\brief The QMediaPlaylistIOPlugin class provides an interface for media playlist I/O plug-ins.
*/
diff --git a/src/multimedia/base/qmediaplaylistnavigator.cpp b/src/multimedia/base/qmediaplaylistnavigator.cpp
index 3c22ea4..0c52c71 100644
--- a/src/multimedia/base/qmediaplaylistnavigator.cpp
+++ b/src/multimedia/base/qmediaplaylistnavigator.cpp
@@ -193,6 +193,7 @@ int QMediaPlaylistNavigatorPrivate::previousItemPos(int steps) const
/*!
\class QMediaPlaylistNavigator
\preliminary
+ \since 4.7
\brief The QMediaPlaylistNavigator class provides navigation for a media playlist.
\sa QMediaPlaylist, QMediaPlaylistProvider
diff --git a/src/multimedia/base/qmediaplaylistprovider.cpp b/src/multimedia/base/qmediaplaylistprovider.cpp
index 65105dc..942f155 100644
--- a/src/multimedia/base/qmediaplaylistprovider.cpp
+++ b/src/multimedia/base/qmediaplaylistprovider.cpp
@@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistProvider
\preliminary
+ \since 4.7
\brief The QMediaPlaylistProvider class provides an abstract list of media.
\sa QMediaPlaylist
diff --git a/src/multimedia/base/qmediaresource.cpp b/src/multimedia/base/qmediaresource.cpp
index 515e432..646d9a7 100644
--- a/src/multimedia/base/qmediaresource.cpp
+++ b/src/multimedia/base/qmediaresource.cpp
@@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaResource
\preliminary
+ \since 4.7
\brief The QMediaResource class provides a description of a media resource.
\ingroup multimedia
diff --git a/src/multimedia/base/qmediaservice.cpp b/src/multimedia/base/qmediaservice.cpp
index e40688e..d9e980b 100644
--- a/src/multimedia/base/qmediaservice.cpp
+++ b/src/multimedia/base/qmediaservice.cpp
@@ -57,6 +57,7 @@ QT_MODULE(Multimedia)
service implementations.
\ingroup multimedia-serv
\preliminary
+ \since 4.7
Media services provide implementations of the functionality promised
by media objects, and allow multiple providers to implement a QMediaObject.
diff --git a/src/multimedia/base/qmediaserviceprovider.cpp b/src/multimedia/base/qmediaserviceprovider.cpp
index 02c9b29..eb6505c 100644
--- a/src/multimedia/base/qmediaserviceprovider.cpp
+++ b/src/multimedia/base/qmediaserviceprovider.cpp
@@ -82,6 +82,7 @@ public:
/*!
\class QMediaServiceProviderHint
\preliminary
+ \since 4.7
\brief The QMediaServiceProviderHint class describes what is required of a QMediaService.
\ingroup multimedia-serv
@@ -489,6 +490,7 @@ Q_GLOBAL_STATIC(QPluginServiceProvider, pluginProvider);
/*!
\class QMediaServiceProvider
\preliminary
+ \since 4.7
\brief The QMediaServiceProvider class provides an abstract allocator for media services.
*/
@@ -597,6 +599,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
/*!
\class QMediaServiceProviderPlugin
\preliminary
+ \since 4.7
\brief The QMediaServiceProviderPlugin class interface provides an interface for QMediaService
plug-ins.
@@ -630,6 +633,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceSupportedFormatsInterface
\brief The QMediaServiceSupportedFormatsInterface class interface
identifies if a media service plug-in supports a media format.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
@@ -656,6 +660,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceSupportedDevicesInterface
\brief The QMediaServiceSupportedDevicesInterface class interface
identifies the devices supported by a media service plug-in.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
@@ -682,6 +687,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceFeaturesInterface
\brief The QMediaServiceFeaturesInterface class interface identifies
features supported by a media service plug-in.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
diff --git a/src/multimedia/base/qmediatimerange.cpp b/src/multimedia/base/qmediatimerange.cpp
index 0ca1948..e1cea7e 100644
--- a/src/multimedia/base/qmediatimerange.cpp
+++ b/src/multimedia/base/qmediatimerange.cpp
@@ -48,6 +48,7 @@ QT_BEGIN_NAMESPACE
\class QMediaTimeInterval
\brief The QMediaTimeInterval class represents a time interval with integer precision.
\ingroup multimedia
+ \since 4.7
An interval is specified by an inclusive start() and end() time.
These must be set in the constructor, as this is an immutable class.
@@ -308,6 +309,7 @@ void QMediaTimeRangePrivate::removeInterval(const QMediaTimeInterval &interval)
\brief The QMediaTimeRange class represents a set of zero or more disjoint
time intervals.
\ingroup multimedia
+ \since 4.7
\reentrant
diff --git a/src/multimedia/base/qmetadatacontrol.cpp b/src/multimedia/base/qmetadatacontrol.cpp
index 3ecbe8d..28a82ec 100644
--- a/src/multimedia/base/qmetadatacontrol.cpp
+++ b/src/multimedia/base/qmetadatacontrol.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMetaDataControl
\ingroup multimedia-serv
-
+ \since 4.7
\preliminary
\brief The QMetaDataControl class provides access to the meta-data of a
QMediaService's media.
diff --git a/src/multimedia/base/qvideodevicecontrol.cpp b/src/multimedia/base/qvideodevicecontrol.cpp
index 21db500..c0fe9a8 100644
--- a/src/multimedia/base/qvideodevicecontrol.cpp
+++ b/src/multimedia/base/qvideodevicecontrol.cpp
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoDeviceControl
\preliminary
+ \since 4.7
\brief The QVideoDeviceControl class provides an video device selector media control.
\ingroup multimedia-serv
diff --git a/src/multimedia/base/qvideooutputcontrol.cpp b/src/multimedia/base/qvideooutputcontrol.cpp
index a904385..58f1527 100644
--- a/src/multimedia/base/qvideooutputcontrol.cpp
+++ b/src/multimedia/base/qvideooutputcontrol.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoOutputControl
\preliminary
-
+ \since 4.7
\brief The QVideoOutputControl class provides a means of selecting the
active video output control.
diff --git a/src/multimedia/base/qvideorenderercontrol.cpp b/src/multimedia/base/qvideorenderercontrol.cpp
index 4e7b3da..a34ef9b 100644
--- a/src/multimedia/base/qvideorenderercontrol.cpp
+++ b/src/multimedia/base/qvideorenderercontrol.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoRendererControl
\preliminary
-
+ \since 4.7
\brief The QVideoRendererControl class provides a control for rendering
to a video surface.
diff --git a/src/multimedia/base/qvideowidget.cpp b/src/multimedia/base/qvideowidget.cpp
index 5df245e..aabfefc 100644
--- a/src/multimedia/base/qvideowidget.cpp
+++ b/src/multimedia/base/qvideowidget.cpp
@@ -488,7 +488,7 @@ void QVideoWidgetPrivate::_q_dimensionsChanged()
/*!
\class QVideoWidget
\preliminary
-
+ \since 4.7
\brief The QVideoWidget class provides a widget which presents video
produced by a media object.
\ingroup multimedia
diff --git a/src/multimedia/base/qvideowidgetcontrol.cpp b/src/multimedia/base/qvideowidgetcontrol.cpp
index bd7ce4e..c53c77b 100644
--- a/src/multimedia/base/qvideowidgetcontrol.cpp
+++ b/src/multimedia/base/qvideowidgetcontrol.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoWidgetControl
\preliminary
-
+ \since 4.7
\brief The QVideoWidgetControl class provides a media control which
implements a video widget.
diff --git a/src/multimedia/base/qvideowindowcontrol.cpp b/src/multimedia/base/qvideowindowcontrol.cpp
index a23cb4b..da46823 100644
--- a/src/multimedia/base/qvideowindowcontrol.cpp
+++ b/src/multimedia/base/qvideowindowcontrol.cpp
@@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoWindowControl
\preliminary
+ \since 4.7
\ingroup multimedia-serv
\brief The QVideoWindowControl class provides a media control for rendering video to a window.
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index ca34993..27bff02 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -66,7 +66,7 @@ QT_MODULE(Multimedia)
\class QMediaPlayer
\brief The QMediaPlayer class allows the playing of a media source.
\ingroup multimedia
-
+ \since 4.7
\preliminary
The QMediaPlayer class is a high level media playback class. It can be used
diff --git a/src/multimedia/playback/qmediaplayercontrol.cpp b/src/multimedia/playback/qmediaplayercontrol.cpp
index 95ffade..2129098 100644
--- a/src/multimedia/playback/qmediaplayercontrol.cpp
+++ b/src/multimedia/playback/qmediaplayercontrol.cpp
@@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlayerControl
\ingroup multimedia-serv
-
+ \since 4.7
\preliminary
\brief The QMediaPlayerControl class provides access to the media playing
functionality of a QMediaService.
diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp
index e96b80c..dc89342 100644
--- a/src/plugins/bearer/generic/qgenericengine.cpp
+++ b/src/plugins/bearer/generic/qgenericengine.cpp
@@ -126,14 +126,11 @@ static QString qGetInterfaceType(const QString &interface)
ifreq request;
strncpy(request.ifr_name, interface.toLocal8Bit().data(), sizeof(request.ifr_name));
- if (ioctl(sock, SIOCGIFHWADDR, &request) >= 0) {
- switch (request.ifr_hwaddr.sa_family) {
- case ARPHRD_ETHER:
- return QLatin1String("Ethernet");
- }
- }
-
+ int result = ioctl(sock, SIOCGIFHWADDR, &request);
close(sock);
+
+ if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER)
+ return QLatin1String("Ethernet");
#else
Q_UNUSED(interface);
#endif
diff --git a/src/plugins/bearer/symbian/symbian.pro b/src/plugins/bearer/symbian/symbian.pro
index 9fd1a74..9613def 100644
--- a/src/plugins/bearer/symbian/symbian.pro
+++ b/src/plugins/bearer/symbian/symbian.pro
@@ -21,6 +21,7 @@ exists($${EPOCROOT}epoc32/release/armv5/lib/cmmanager.lib) {
}
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+symbian-abld:INCLUDEPATH += $$QT_BUILD_TREE/include/QtNetwork/private
LIBS += -lcommdb \
-lapsettingshandlerui \
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
index 0a689d9..13a2454 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
@@ -48,7 +48,7 @@ static int wuchi = qRegisterMetaType<QGstreamerMessage>();
/*!
- \class QGstreamerMessage
+ \class gstreamer::QGstreamerMessage
\internal
*/
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index f69e537..79294fe 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -854,7 +854,7 @@ inline bool QScriptEnginePrivate::isQObject(JSC::JSValue value)
inline bool QScriptEnginePrivate::isQMetaObject(JSC::JSValue value)
{
#ifndef QT_NO_QOBJECT
- return JSC::asObject(value)->inherits(&QScript::QMetaObjectWrapperObject::info);
+ return isObject(value) && JSC::asObject(value)->inherits(&QScript::QMetaObjectWrapperObject::info);
#else
return false;
#endif
diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp
index 24391c0..a2058cd 100644
--- a/tests/auto/gestures/tst_gestures.cpp
+++ b/tests/auto/gestures/tst_gestures.cpp
@@ -261,15 +261,19 @@ protected:
eventsPtr->all << g->gestureType();
switch(g->state()) {
case Qt::GestureStarted:
+ emit gestureStarted(e->type(), g);
eventsPtr->started << g->gestureType();
break;
case Qt::GestureUpdated:
+ emit gestureUpdated(e->type(), g);
eventsPtr->updated << g->gestureType();
break;
case Qt::GestureFinished:
+ emit gestureFinished(e->type(), g);
eventsPtr->finished << g->gestureType();
break;
case Qt::GestureCanceled:
+ emit gestureCanceled(e->type(), g);
eventsPtr->canceled << g->gestureType();
break;
default:
@@ -283,13 +287,23 @@ protected:
}
return true;
}
+
+Q_SIGNALS:
+ void gestureStarted(QEvent::Type, QGesture *);
+ void gestureUpdated(QEvent::Type, QGesture *);
+ void gestureFinished(QEvent::Type, QGesture *);
+ void gestureCanceled(QEvent::Type, QGesture *);
+
+public Q_SLOTS:
+ void deleteThis() { delete this; }
};
// TODO rename to sendGestureSequence
static void sendCustomGesture(CustomEvent *event, QObject *object, QGraphicsScene *scene = 0)
{
+ QWeakPointer<QObject> receiver(object);
for (int i = CustomGesture::SerialMaybeThreshold;
- i <= CustomGesture::SerialFinishedThreshold; ++i) {
+ i <= CustomGesture::SerialFinishedThreshold && receiver; ++i) {
event->serial = i;
if (scene)
scene->sendEvent(qobject_cast<QGraphicsObject *>(object), event);
@@ -336,6 +350,9 @@ private slots:
void graphicsViewParentPropagation();
void panelPropagation();
void panelStacksBehindParent();
+ void deleteGestureTargetWidget();
+ void deleteGestureTargetItem_data();
+ void deleteGestureTargetItem();
};
tst_Gestures::tst_Gestures()
@@ -657,14 +674,16 @@ static const QColor InstanceColors[] = {
class GestureItem : public QGraphicsObject
{
+ Q_OBJECT
static int InstanceCount;
-
public:
GestureItem(const char *name = 0)
{
instanceNumber = InstanceCount++;
- if (name)
+ if (name) {
setObjectName(QLatin1String(name));
+ setToolTip(name);
+ }
size = QRectF(0, 0, 100, 100);
customEventsReceived = 0;
gestureEventsReceived = 0;
@@ -672,6 +691,8 @@ public:
events.clear();
overrideEvents.clear();
acceptGestureOverride = false;
+
+ scene = 0;
}
~GestureItem()
{
@@ -773,15 +794,19 @@ protected:
switch(g->state()) {
case Qt::GestureStarted:
eventsPtr->started << g->gestureType();
+ emit gestureStarted(e->type(), g);
break;
case Qt::GestureUpdated:
eventsPtr->updated << g->gestureType();
+ emit gestureUpdated(e->type(), g);
break;
case Qt::GestureFinished:
eventsPtr->finished << g->gestureType();
+ emit gestureFinished(e->type(), g);
break;
case Qt::GestureCanceled:
eventsPtr->canceled << g->gestureType();
+ emit gestureCanceled(e->type(), g);
break;
default:
Q_ASSERT(false);
@@ -794,6 +819,26 @@ protected:
}
return true;
}
+
+Q_SIGNALS:
+ void gestureStarted(QEvent::Type, QGesture *);
+ void gestureUpdated(QEvent::Type, QGesture *);
+ void gestureFinished(QEvent::Type, QGesture *);
+ void gestureCanceled(QEvent::Type, QGesture *);
+
+public:
+ // some arguments for the slots below:
+ QGraphicsScene *scene;
+
+public Q_SLOTS:
+ void deleteThis() { delete this; }
+ void addSelfToScene(QEvent::Type eventType, QGesture *)
+ {
+ if (eventType == QEvent::Gesture) {
+ disconnect(sender(), 0, this, SLOT(addSelfToScene(QEvent::Type,QGesture*)));
+ scene->addItem(this);
+ }
+ }
};
int GestureItem::InstanceCount = 0;
@@ -1549,7 +1594,7 @@ void tst_Gestures::graphicsViewParentPropagation()
QCOMPARE(item1_c1_c1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_c1_c1->gestureOverrideEventsReceived, 1);
- QCOMPARE(item1_c1->gestureEventsReceived, 0);
+ QCOMPARE(item1_c1->gestureEventsReceived, TotalGestureEventsCount-1);
QCOMPARE(item1_c1->gestureOverrideEventsReceived, 1);
QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount-1);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
@@ -1724,5 +1769,93 @@ void tst_Gestures::panelStacksBehindParent()
QCOMPARE(panel->gestureOverrideEventsReceived, 0);
}
+void tst_Gestures::deleteGestureTargetWidget()
+{
+
+}
+
+void tst_Gestures::deleteGestureTargetItem_data()
+{
+ QTest::addColumn<bool>("propagateUpdateGesture");
+ QTest::addColumn<QString>("emitter");
+ QTest::addColumn<QString>("receiver");
+ QTest::addColumn<QByteArray>("signalName");
+ QTest::addColumn<QByteArray>("slotName");
+
+ QByteArray gestureUpdated = SIGNAL(gestureUpdated(QEvent::Type,QGesture*));
+ QByteArray gestureFinished = SIGNAL(gestureFinished(QEvent::Type,QGesture*));
+ QByteArray deleteThis = SLOT(deleteThis());
+ QByteArray deleteLater = SLOT(deleteLater());
+
+ QTest::newRow("delete1")
+ << false << "item1" << "item1" << gestureUpdated << deleteThis;
+ QTest::newRow("delete2")
+ << false << "item2" << "item2" << gestureUpdated << deleteThis;
+ QTest::newRow("delete3")
+ << false << "item1" << "item2" << gestureUpdated << deleteThis;
+
+ QTest::newRow("deleteLater1")
+ << false << "item1" << "item1" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater2")
+ << false << "item2" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater3")
+ << false << "item1" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater4")
+ << false << "item2" << "item1" << gestureUpdated << deleteLater;
+
+ QTest::newRow("delete-self-and-propagate")
+ << true << "item2" << "item2" << gestureUpdated << deleteThis;
+ QTest::newRow("deleteLater-self-and-propagate")
+ << true << "item2" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("propagate-to-deletedLater")
+ << true << "item2" << "item1" << gestureUpdated << deleteLater;
+}
+
+void tst_Gestures::deleteGestureTargetItem()
+{
+ QFETCH(bool, propagateUpdateGesture);
+ QFETCH(QString, emitter);
+ QFETCH(QString, receiver);
+ QFETCH(QByteArray, signalName);
+ QFETCH(QByteArray, slotName);
+
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+
+ GestureItem *item1 = new GestureItem("item1");
+ item1->grabGesture(CustomGesture::GestureType);
+ item1->setZValue(2);
+ scene.addItem(item1);
+
+ GestureItem *item2 = new GestureItem("item2");
+ item2->grabGesture(CustomGesture::GestureType);
+ item2->setZValue(5);
+ scene.addItem(item2);
+
+ QMap<QString, GestureItem *> items;
+ items.insert(item1->objectName(), item1);
+ items.insert(item2->objectName(), item2);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.ensureVisible(scene.sceneRect());
+
+ view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren);
+
+ if (propagateUpdateGesture)
+ item2->ignoredUpdatedGestures << CustomGesture::GestureType;
+ connect(items.value(emitter, 0), signalName, items.value(receiver, 0), slotName);
+
+ // some debug output to see the current test data tag, so if we crash
+ // we know which one caused the crash.
+ qDebug() << "<-- testing";
+
+ CustomEvent event;
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item2, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item1, &scene);
+}
+
QTEST_MAIN(tst_Gestures)
#include "tst_gestures.moc"
diff --git a/tests/auto/headers/headers.pro b/tests/auto/headers/headers.pro
index 703da7c..74e1a02 100644
--- a/tests/auto/headers/headers.pro
+++ b/tests/auto/headers/headers.pro
@@ -1,3 +1,3 @@
load(qttest_p4)
-SOURCES += tst_headers.cpp
+SOURCES += tst_headers.cpp headersclean.cpp
QT = core
diff --git a/tests/auto/headers/headersclean.cpp b/tests/auto/headers/headersclean.cpp
new file mode 100644
index 0000000..b932b9f
--- /dev/null
+++ b/tests/auto/headers/headersclean.cpp
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#define QT_NO_KEYWORDS
+#define signals int
+#define slots int
+#define emit public:;
+#define foreach public:;
+#define forever public:;
+
+// include all of Qt here
+
+// core Qt
+#include <QtCore/QtCore>
+#include <QtGui/QtGui>
+#include <QtNetwork/QtNetwork>
+
+// extra
+#include <QtDBus/QtDBus>
+//#include <QtDeclarative/QtDeclarative>
+#include <QtHelp/QtHelp>
+#include <QtMultimedia/QtMultimedia>
+#include <QtOpenGL/QtOpenGL>
+#include <QtScript/QtScript>
+#include <QtScriptTools/QtScriptTools>
+#include <QtSql/QtSql>
+#include <QtSvg/QtSvg>
+#include <QtTest/QtTest>
+#include <QtXml/QtXml>
+#include <QtXmlPatterns/QtXmlPatterns>
+
+// webkit:
+#include <QtWebKit/QtWebKit>
+
+// designer:
+#include <QtDesigner/QtDesigner>
+#include <QtUiTools/QtUiTools>
+
+// feature dependent:
+#ifndef QT_NO_OPENVG
+#include <QtOpenVG/QtOpenVG>
+#endif
+
+// removed in 4.7:
+//#include <QtAssistant/QtAssistant>
+
+// can't include this since it causes a linker error
+//#include <Qt3Support/Qt3Support>
diff --git a/tests/auto/qchar/qchar.pro b/tests/auto/qchar/qchar.pro
index fca4ef6..0a3fcc3 100644
--- a/tests/auto/qchar/qchar.pro
+++ b/tests/auto/qchar/qchar.pro
@@ -8,3 +8,4 @@ deploy.sources += NormalizationTest.txt
DEPLOYMENT = deploy
}
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
diff --git a/tests/auto/qchar/tst_qchar.cpp b/tests/auto/qchar/tst_qchar.cpp
index 241b9a5..547147c 100644
--- a/tests/auto/qchar/tst_qchar.cpp
+++ b/tests/auto/qchar/tst_qchar.cpp
@@ -499,10 +499,7 @@ void tst_QChar::normalization()
QVERIFY(composed.normalized(QString::NormalizationForm_KC) == decomposed);
}
- QFile f("NormalizationTest.txt");
- // Windows - current directory is the debug/release subdirectory where the executable is located
- if (!f.exists())
- f.setFileName("../NormalizationTest.txt");;
+ QFile f(SRCDIR "NormalizationTest.txt");
if (!f.exists()) {
QFAIL("Couldn't find NormalizationTest.txt");
return;
diff --git a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
index 7208383..54426ce 100644
--- a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
+++ b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
@@ -41,6 +41,7 @@
#include <QtCore/QObject>
#include <QtCore/QVariant>
#include <QtCore/QList>
+#include <QtCore/QThread>
#include <QtCore/QVector>
#include <QtTest/QtTest>
#ifndef QT_NO_DBUS
@@ -90,6 +91,7 @@ private Q_SLOTS:
void watcher();
void watcher_error();
void watcher_waitForFinished();
+ void watcher_waitForFinished_threaded();
void watcher_waitForFinished_alreadyFinished();
void watcher_waitForFinished_alreadyFinished_eventLoop();
void watcher_waitForFinished_error();
@@ -124,7 +126,10 @@ void tst_QDBusPendingCall::finished(QDBusPendingCallWatcher *call)
slotCalled = FinishCalled;
++callCount;
watchArgument = call;
- QTestEventLoop::instance().exitLoop();
+ if (QThread::currentThread() == thread())
+ QTestEventLoop::instance().exitLoop();
+ else
+ QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
}
void tst_QDBusPendingCall::callback(const QStringList &list)
@@ -377,6 +382,56 @@ void tst_QDBusPendingCall::watcher_waitForFinished()
QVERIFY(args2.at(0).toStringList().contains(conn.baseService()));
}
+void tst_QDBusPendingCall::watcher_waitForFinished_threaded()
+{
+ callCount = 0;
+ watchArgument = 0;
+ slotCalled = 0;
+
+ class WorkerThread: public QThread {
+ public:
+ tst_QDBusPendingCall *tst;
+ WorkerThread(tst_QDBusPendingCall *tst) : tst(tst) {}
+ void run()
+ {
+ QDBusPendingCall ac = tst->sendMessage();
+// QVERIFY(!ac.isFinished());
+// QVERIFY(!ac.isError());
+// QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+
+ QDBusPendingCallWatcher watch(ac);
+ tst->connect(&watch, SIGNAL(finished(QDBusPendingCallWatcher*)),
+ SLOT(finished(QDBusPendingCallWatcher*)), Qt::DirectConnection);
+
+ QTest::qSleep(100); // don't process events in this thread
+
+// QVERIFY(!ac.isFinished());
+// QVERIFY(!ac.isError());
+// QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+ QCOMPARE(tst->callCount, 0);
+ QCOMPARE(tst->slotCalled, 0);
+
+ watch.waitForFinished();
+ QVERIFY(ac.isFinished());
+ QVERIFY(!ac.isError());
+
+ QCOMPARE(tst->callCount, 1);
+ QCOMPARE(tst->slotCalled, (int)FinishCalled);
+ QCOMPARE(tst->watchArgument, &watch);
+ QVERIFY(!watch.isError());
+
+ const QVariantList args2 = ac.reply().arguments();
+ QVERIFY(!args2.isEmpty());
+ QVERIFY(args2.at(0).toStringList().contains(tst->conn.baseService()));
+ }
+ } thread(this);
+ QTestEventLoop::instance().connect(&thread, SIGNAL(finished()), SLOT(exitLoop()));
+ thread.start();
+ QTestEventLoop::instance().enterLoop(1000);
+ QVERIFY(!thread.isRunning());
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
void tst_QDBusPendingCall::watcher_waitForFinished_alreadyFinished()
{
QDBusPendingCall ac = sendMessage();
diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/qregexp/tst_qregexp.cpp
index 4d16ab5..ea07323 100644
--- a/tests/auto/qregexp/tst_qregexp.cpp
+++ b/tests/auto/qregexp/tst_qregexp.cpp
@@ -102,6 +102,9 @@ private slots:
void reentrancy();
void threadsafeEngineCache();
+
+ void QTBUG_7049_data();
+ void QTBUG_7049();
};
// Testing get/set functions
@@ -1333,5 +1336,95 @@ void tst_QRegExp::operator_eq()
}
}
+void tst_QRegExp::QTBUG_7049_data()
+{
+ QTest::addColumn<QString>("reStr");
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("matchIndex");
+
+ QTest::addColumn<int>("pos0");
+ QTest::addColumn<int>("pos1");
+ QTest::addColumn<int>("pos2");
+
+ QTest::addColumn<QString>("cap0");
+ QTest::addColumn<QString>("cap1");
+ QTest::addColumn<QString>("cap2");
+
+ QTest::newRow("no match")
+ << QString("(a) (b)") << QString("b a") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+ QTest::newRow("both captures match")
+ << QString("(a) (b)") << QString("a b") << 0
+ << 0 << 0 << 2 << QString("a b") << QString("a") << QString("b");
+
+ QTest::newRow("first capture matches @0")
+ << QString("(a*)|(b*)") << QString("axx") << 0
+ << 0 << 0 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @0")
+ << QString("(a*)|(b*)") << QString("bxx") << 0
+ << 0 << -1 << 0 << QString("b") << QString() << QString("b");
+ QTest::newRow("first capture empty match @0")
+ << QString("(a*)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+ QTest::newRow("second capture empty match @0")
+ << QString("(a)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+
+ QTest::newRow("first capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xa") << 1
+ << 1 << 2 << -1 << QString("xa") << QString("a") << QString();
+ QTest::newRow("second capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xb") << 1
+ << 1 << -1 << 2 << QString("xb") << QString() << QString("b");
+ QTest::newRow("first capture empty match @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+ QTest::newRow("second capture empty match @1")
+ << QString("x(?:(a)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+
+ QTest::newRow("first capture matches @2")
+ << QString("(a)|(b)") << QString("xxa") << 2
+ << 2 << 2 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @2")
+ << QString("(a)|(b)") << QString("xxb") << 2
+ << 2 << -1 << 2 << QString("b") << QString() << QString("b");
+ QTest::newRow("no match - with options")
+ << QString("(a)|(b)") << QString("xx") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+}
+
+void tst_QRegExp::QTBUG_7049()
+{
+ QFETCH( QString, reStr );
+ QFETCH( QString, text );
+ QFETCH( int, matchIndex );
+ QFETCH( int, pos0 );
+ QFETCH( int, pos1 );
+ QFETCH( int, pos2 );
+ QFETCH( QString, cap0 );
+ QFETCH( QString, cap1 );
+ QFETCH( QString, cap2 );
+
+ QRegExp re(reStr);
+ QCOMPARE(re.numCaptures(), 2);
+ QCOMPARE(re.capturedTexts().size(), 3);
+
+ QCOMPARE(re.indexIn(text), matchIndex);
+
+ QCOMPARE( re.pos(0), pos0 );
+ QCOMPARE( re.pos(1), pos1 );
+ QCOMPARE( re.pos(2), pos2 );
+
+ QCOMPARE( re.cap(0).isNull(), cap0.isNull() );
+ QCOMPARE( re.cap(0), cap0 );
+ QCOMPARE( re.cap(1).isNull(), cap1.isNull() );
+ QCOMPARE( re.cap(1), cap1 );
+ QCOMPARE( re.cap(2).isNull(), cap2.isNull() );
+ QCOMPARE( re.cap(2), cap2 );
+}
+
QTEST_APPLESS_MAIN(tst_QRegExp)
#include "tst_qregexp.moc"
diff --git a/tests/auto/qscriptvalue/qscriptvalue.pro b/tests/auto/qscriptvalue/qscriptvalue.pro
index 1588cc5..191cd4a 100644
--- a/tests/auto/qscriptvalue/qscriptvalue.pro
+++ b/tests/auto/qscriptvalue/qscriptvalue.pro
@@ -5,3 +5,10 @@ HEADERS += tst_qscriptvalue.h
# Generated by testgen
SOURCES += tst_qscriptvalue_generated.cpp
+
+
+win32-msvc* {
+ # With -O2, MSVC takes up to 24 minutes to compile this test!
+ QMAKE_CXXFLAGS_RELEASE -= -O1 -O2
+ QMAKE_CXXFLAGS_RELEASE += -Od
+}
diff --git a/tests/auto/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvalue/testgen/data.txt
index a041c9b..73677ec 100644
--- a/tests/auto/qscriptvalue/testgen/data.txt
+++ b/tests/auto/qscriptvalue/testgen/data.txt
@@ -34,6 +34,7 @@ QScriptValue(QString())
QScriptValue(QString("0"))
QScriptValue(QString("123"))
QScriptValue(QString("12.4"))
+#QScriptValue(QString::fromUtf8("ąśćżźółńę"))
#Unbound values (bound to a null engine)
QScriptValue(0, QScriptValue::UndefinedValue)
@@ -64,6 +65,7 @@ QScriptValue(0, QString())
QScriptValue(0, QString("0"))
QScriptValue(0, QString("123"))
QScriptValue(0, QString("12.3"))
+#QScriptValue(0, QString::fromUtf8("ąśćżźółńę"))
#Bound values
QScriptValue(engine, QScriptValue::UndefinedValue)
@@ -114,7 +116,46 @@ engine->evaluate("/foo/")
engine->evaluate("new Object()")
engine->evaluate("new Array()")
engine->evaluate("new Error()")
+engine->evaluate("a = new Object(); a.foo = 22; a.foo")
+engine->evaluate("Undefined")
+engine->evaluate("Null")
+engine->evaluate("True")
+engine->evaluate("False")
+
+engine->evaluate("undefined")
+engine->evaluate("null")
+engine->evaluate("true")
+engine->evaluate("false")
+engine->evaluate("122")
+engine->evaluate("124")
+engine->evaluate("0")
+engine->evaluate("0.0")
+engine->evaluate("123.0")
+engine->evaluate("6.37e-8")
+engine->evaluate("-6.37e-8")
+engine->evaluate("0x43211234")
+engine->evaluate("0x10000")
+engine->evaluate("0x10001")
+engine->evaluate("NaN")
+engine->evaluate("Infinity")
+engine->evaluate("-Infinity")
+engine->evaluate("'ciao'")
+engine->evaluate("''")
+engine->evaluate("'0'")
+engine->evaluate("'123'")
+engine->evaluate("'12.4'")
+#engine->evaluate(QString::fromUtf8("'ąśćżźółńę'"))
#other
engine->nullValue()
-engine->undefinedValue() \ No newline at end of file
+engine->undefinedValue()
+engine->newObject()
+engine->newArray()
+engine->newArray(10)
+engine->newDate(QDateTime())
+engine->newQMetaObject(&QObject::staticMetaObject)
+engine->newVariant(QVariant())
+engine->newVariant(QVariant(123))
+engine->newVariant(QVariant(false))
+engine->newQObject(0)
+engine->newQObject(engine) \ No newline at end of file
diff --git a/tests/auto/qscriptvalue/testgen/gen.py b/tests/auto/qscriptvalue/testgen/gen.py
index b3c81b9..6e48f46 100755
--- a/tests/auto/qscriptvalue/testgen/gen.py
+++ b/tests/auto/qscriptvalue/testgen/gen.py
@@ -70,8 +70,7 @@ class Options():
return getattr(self._o, attr)
-mainTempl = Template("""/*
-/****************************************************************************
+mainTempl = Template("""/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.cpp b/tests/auto/qscriptvalue/testgen/testgenerator.cpp
index d852ea5..4376c42 100644
--- a/tests/auto/qscriptvalue/testgen/testgenerator.cpp
+++ b/tests/auto/qscriptvalue/testgen/testgenerator.cpp
@@ -119,6 +119,7 @@ static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
"{\n"\
" QFETCH(bool, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n"\
@@ -166,6 +167,7 @@ static QString generateToXXXDef(const QString& name, const QList<QPair<QString,
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n";
@@ -213,9 +215,11 @@ QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString,
"%666"
" if (qIsInf(expected)) {\n"\
" QVERIFY(qIsInf(value.%1()));\n"\
+ " QVERIFY(qIsInf(value.%1()));\n"\
" return;\n"\
" }\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n";
@@ -269,6 +273,7 @@ static QString generateCastDef(const QList<QPair<QString, T> >& list)
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
@@ -313,13 +318,16 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
" QFETCH(%2, expected);\n"\
" if (qIsNaN(expected)) {\n"
" QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
+ " QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
" return;\n"
" }\n"\
" if (qIsInf(expected)) {\n"
" QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
+ " QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
" return;\n"
" }\n"
" QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h
index 6215506..a5c7b45 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.h
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h
@@ -89,11 +89,11 @@ private slots:
void isObject_data();
void isObject();
-// void isQMetaObject_data();
-// void isQMetaObject();
+ void isQMetaObject_data();
+ void isQMetaObject();
-// void isQObject_data();
-// void isQObject();
+ void isQObject_data();
+ void isQObject();
void isRegExp_data();
void isRegExp();
@@ -107,8 +107,8 @@ private slots:
void isValid_data();
void isValid();
-// void isVariant_data();
-// void isVariant();
+ void isVariant_data();
+ void isVariant();
void toBool_data();
void toBool();
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
index 4e621b3..a07ff4b 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
@@ -152,8 +152,45 @@ void tst_QScriptValue::initScriptValues()
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->evaluate("a = new Object(); a.foo = 22; a.foo"));
+ DEFINE_TEST_VALUE(engine->evaluate("Undefined"));
+ DEFINE_TEST_VALUE(engine->evaluate("Null"));
+ DEFINE_TEST_VALUE(engine->evaluate("True"));
+ DEFINE_TEST_VALUE(engine->evaluate("False"));
+ DEFINE_TEST_VALUE(engine->evaluate("undefined"));
+ DEFINE_TEST_VALUE(engine->evaluate("null"));
+ DEFINE_TEST_VALUE(engine->evaluate("true"));
+ DEFINE_TEST_VALUE(engine->evaluate("false"));
+ DEFINE_TEST_VALUE(engine->evaluate("122"));
+ DEFINE_TEST_VALUE(engine->evaluate("124"));
+ DEFINE_TEST_VALUE(engine->evaluate("0"));
+ DEFINE_TEST_VALUE(engine->evaluate("0.0"));
+ DEFINE_TEST_VALUE(engine->evaluate("123.0"));
+ DEFINE_TEST_VALUE(engine->evaluate("6.37e-8"));
+ DEFINE_TEST_VALUE(engine->evaluate("-6.37e-8"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x43211234"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x10000"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x10001"));
+ DEFINE_TEST_VALUE(engine->evaluate("NaN"));
+ DEFINE_TEST_VALUE(engine->evaluate("Infinity"));
+ DEFINE_TEST_VALUE(engine->evaluate("-Infinity"));
+ DEFINE_TEST_VALUE(engine->evaluate("'ciao'"));
+ DEFINE_TEST_VALUE(engine->evaluate("''"));
+ DEFINE_TEST_VALUE(engine->evaluate("'0'"));
+ DEFINE_TEST_VALUE(engine->evaluate("'123'"));
+ DEFINE_TEST_VALUE(engine->evaluate("'12.4'"));
DEFINE_TEST_VALUE(engine->nullValue());
DEFINE_TEST_VALUE(engine->undefinedValue());
+ DEFINE_TEST_VALUE(engine->newObject());
+ DEFINE_TEST_VALUE(engine->newArray());
+ DEFINE_TEST_VALUE(engine->newArray(10));
+ DEFINE_TEST_VALUE(engine->newDate(QDateTime()));
+ DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant()));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant(123)));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant(false)));
+ DEFINE_TEST_VALUE(engine->newQObject(0));
+ DEFINE_TEST_VALUE(engine->newQObject(engine));
}
@@ -269,8 +306,45 @@ void tst_QScriptValue::isValid_makeData(const char* expr)
<< "engine->evaluate(\"new Object()\")"
<< "engine->evaluate(\"new Array()\")"
<< "engine->evaluate(\"new Error()\")"
+ << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"
+ << "engine->evaluate(\"Undefined\")"
+ << "engine->evaluate(\"Null\")"
+ << "engine->evaluate(\"True\")"
+ << "engine->evaluate(\"False\")"
+ << "engine->evaluate(\"undefined\")"
+ << "engine->evaluate(\"null\")"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
+ << "engine->evaluate(\"122\")"
+ << "engine->evaluate(\"124\")"
+ << "engine->evaluate(\"0\")"
+ << "engine->evaluate(\"0.0\")"
+ << "engine->evaluate(\"123.0\")"
+ << "engine->evaluate(\"6.37e-8\")"
+ << "engine->evaluate(\"-6.37e-8\")"
+ << "engine->evaluate(\"0x43211234\")"
+ << "engine->evaluate(\"0x10000\")"
+ << "engine->evaluate(\"0x10001\")"
+ << "engine->evaluate(\"NaN\")"
+ << "engine->evaluate(\"Infinity\")"
+ << "engine->evaluate(\"-Infinity\")"
+ << "engine->evaluate(\"'ciao'\")"
+ << "engine->evaluate(\"''\")"
+ << "engine->evaluate(\"'0'\")"
+ << "engine->evaluate(\"'123'\")"
+ << "engine->evaluate(\"'12.4'\")"
<< "engine->nullValue()"
<< "engine->undefinedValue()"
+ << "engine->newObject()"
+ << "engine->newArray()"
+ << "engine->newArray(10)"
+ << "engine->newDate(QDateTime())"
+ << "engine->newQMetaObject(&QObject::staticMetaObject)"
+ << "engine->newVariant(QVariant())"
+ << "engine->newVariant(QVariant(123))"
+ << "engine->newVariant(QVariant(false))"
+ << "engine->newQObject(0)"
+ << "engine->newQObject(engine)"
;
}
newRow(expr) << isValid.contains(expr);
@@ -280,6 +354,7 @@ void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isValid(), expected);
+ QCOMPARE(value.isValid(), expected);
}
DEFINE_TEST_FUNCTION(isValid)
@@ -301,6 +376,8 @@ void tst_QScriptValue::isBool_makeData(const char* expr)
<< "QScriptValue(0, false)"
<< "QScriptValue(engine, true)"
<< "QScriptValue(engine, false)"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
;
}
newRow(expr) << isBool.contains(expr);
@@ -310,6 +387,7 @@ void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isBool(), expected);
+ QCOMPARE(value.isBool(), expected);
}
DEFINE_TEST_FUNCTION(isBool)
@@ -331,6 +409,8 @@ void tst_QScriptValue::isBoolean_makeData(const char* expr)
<< "QScriptValue(0, false)"
<< "QScriptValue(engine, true)"
<< "QScriptValue(engine, false)"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
;
}
newRow(expr) << isBoolean.contains(expr);
@@ -340,6 +420,7 @@ void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isBoolean(), expected);
+ QCOMPARE(value.isBoolean(), expected);
}
DEFINE_TEST_FUNCTION(isBoolean)
@@ -397,6 +478,20 @@ void tst_QScriptValue::isNumber_makeData(const char* expr)
<< "QScriptValue(engine, qQNaN())"
<< "QScriptValue(engine, qInf())"
<< "QScriptValue(engine, -qInf())"
+ << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"
+ << "engine->evaluate(\"122\")"
+ << "engine->evaluate(\"124\")"
+ << "engine->evaluate(\"0\")"
+ << "engine->evaluate(\"0.0\")"
+ << "engine->evaluate(\"123.0\")"
+ << "engine->evaluate(\"6.37e-8\")"
+ << "engine->evaluate(\"-6.37e-8\")"
+ << "engine->evaluate(\"0x43211234\")"
+ << "engine->evaluate(\"0x10000\")"
+ << "engine->evaluate(\"0x10001\")"
+ << "engine->evaluate(\"NaN\")"
+ << "engine->evaluate(\"Infinity\")"
+ << "engine->evaluate(\"-Infinity\")"
;
}
newRow(expr) << isNumber.contains(expr);
@@ -406,6 +501,7 @@ void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isNumber(), expected);
+ QCOMPARE(value.isNumber(), expected);
}
DEFINE_TEST_FUNCTION(isNumber)
@@ -430,6 +526,7 @@ void tst_QScriptValue::isFunction_makeData(const char* expr)
<< "engine->evaluate(\"(function() { return 'ciao'; })\")"
<< "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
<< "engine->evaluate(\"/foo/\")"
+ << "engine->newQMetaObject(&QObject::staticMetaObject)"
;
}
newRow(expr) << isFunction.contains(expr);
@@ -439,6 +536,7 @@ void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isFunction(), expected);
+ QCOMPARE(value.isFunction(), expected);
}
DEFINE_TEST_FUNCTION(isFunction)
@@ -457,7 +555,9 @@ void tst_QScriptValue::isNull_makeData(const char* expr)
isNull << "QScriptValue(QScriptValue::NullValue)"
<< "QScriptValue(0, QScriptValue::NullValue)"
<< "QScriptValue(engine, QScriptValue::NullValue)"
+ << "engine->evaluate(\"null\")"
<< "engine->nullValue()"
+ << "engine->newQObject(0)"
;
}
newRow(expr) << isNull.contains(expr);
@@ -467,6 +567,7 @@ void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isNull(), expected);
+ QCOMPARE(value.isNull(), expected);
}
DEFINE_TEST_FUNCTION(isNull)
@@ -512,6 +613,11 @@ void tst_QScriptValue::isString_makeData(const char* expr)
<< "QScriptValue(engine, QString(\"0\"))"
<< "QScriptValue(engine, QString(\"123\"))"
<< "QScriptValue(engine, QString(\"1.23\"))"
+ << "engine->evaluate(\"'ciao'\")"
+ << "engine->evaluate(\"''\")"
+ << "engine->evaluate(\"'0'\")"
+ << "engine->evaluate(\"'123'\")"
+ << "engine->evaluate(\"'12.4'\")"
;
}
newRow(expr) << isString.contains(expr);
@@ -521,6 +627,7 @@ void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isString(), expected);
+ QCOMPARE(value.isString(), expected);
}
DEFINE_TEST_FUNCTION(isString)
@@ -540,6 +647,7 @@ void tst_QScriptValue::isUndefined_makeData(const char* expr)
<< "QScriptValue(0, QScriptValue::UndefinedValue)"
<< "QScriptValue(engine, QScriptValue::UndefinedValue)"
<< "engine->evaluate(\"{}\")"
+ << "engine->evaluate(\"undefined\")"
<< "engine->undefinedValue()"
;
}
@@ -550,12 +658,90 @@ void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isUndefined(), expected);
+ QCOMPARE(value.isUndefined(), expected);
}
DEFINE_TEST_FUNCTION(isUndefined)
+void tst_QScriptValue::isVariant_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isVariant_makeData(const char* expr)
+{
+ static QSet<QString> isVariant;
+ if (isVariant.isEmpty()) {
+ isVariant << "engine->newVariant(QVariant())"
+ << "engine->newVariant(QVariant(123))"
+ << "engine->newVariant(QVariant(false))"
+ ;
+ }
+ newRow(expr) << isVariant.contains(expr);
+}
+
+void tst_QScriptValue::isVariant_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isVariant(), expected);
+ QCOMPARE(value.isVariant(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isVariant)
+
+
+void tst_QScriptValue::isQObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isQObject_makeData(const char* expr)
+{
+ static QSet<QString> isQObject;
+ if (isQObject.isEmpty()) {
+ isQObject << "engine->newQObject(engine)"
+ ;
+ }
+ newRow(expr) << isQObject.contains(expr);
+}
+
+void tst_QScriptValue::isQObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isQObject(), expected);
+ QCOMPARE(value.isQObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isQObject)
+
+void tst_QScriptValue::isQMetaObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isQMetaObject_makeData(const char* expr)
+{
+ static QSet<QString> isQMetaObject;
+ if (isQMetaObject.isEmpty()) {
+ isQMetaObject << "engine->newQMetaObject(&QObject::staticMetaObject)"
+ ;
+ }
+ newRow(expr) << isQMetaObject.contains(expr);
+}
+
+void tst_QScriptValue::isQMetaObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isQMetaObject(), expected);
+ QCOMPARE(value.isQMetaObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isQMetaObject)
void tst_QScriptValue::isObject_initData()
@@ -585,6 +771,19 @@ void tst_QScriptValue::isObject_makeData(const char* expr)
<< "engine->evaluate(\"new Object()\")"
<< "engine->evaluate(\"new Array()\")"
<< "engine->evaluate(\"new Error()\")"
+ << "engine->evaluate(\"Undefined\")"
+ << "engine->evaluate(\"Null\")"
+ << "engine->evaluate(\"True\")"
+ << "engine->evaluate(\"False\")"
+ << "engine->newObject()"
+ << "engine->newArray()"
+ << "engine->newArray(10)"
+ << "engine->newDate(QDateTime())"
+ << "engine->newQMetaObject(&QObject::staticMetaObject)"
+ << "engine->newVariant(QVariant())"
+ << "engine->newVariant(QVariant(123))"
+ << "engine->newVariant(QVariant(false))"
+ << "engine->newQObject(engine)"
;
}
newRow(expr) << isObject.contains(expr);
@@ -594,6 +793,7 @@ void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isObject(), expected);
+ QCOMPARE(value.isObject(), expected);
}
DEFINE_TEST_FUNCTION(isObject)
@@ -610,6 +810,7 @@ void tst_QScriptValue::isDate_makeData(const char* expr)
static QSet<QString> isDate;
if (isDate.isEmpty()) {
isDate << "engine->evaluate(\"Date.prototype\")"
+ << "engine->newDate(QDateTime())"
;
}
newRow(expr) << isDate.contains(expr);
@@ -619,6 +820,7 @@ void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isDate(), expected);
+ QCOMPARE(value.isDate(), expected);
}
DEFINE_TEST_FUNCTION(isDate)
@@ -644,6 +846,7 @@ void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isRegExp(), expected);
+ QCOMPARE(value.isRegExp(), expected);
}
DEFINE_TEST_FUNCTION(isRegExp)
@@ -662,6 +865,8 @@ void tst_QScriptValue::isArray_makeData(const char* expr)
isArray << "engine->evaluate(\"[]\")"
<< "engine->evaluate(\"Array.prototype\")"
<< "engine->evaluate(\"new Array()\")"
+ << "engine->newArray()"
+ << "engine->newArray(10)"
;
}
newRow(expr) << isArray.contains(expr);
@@ -671,6 +876,7 @@ void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isArray(), expected);
+ QCOMPARE(value.isArray(), expected);
}
DEFINE_TEST_FUNCTION(isArray)
@@ -688,6 +894,10 @@ void tst_QScriptValue::isError_makeData(const char* expr)
if (isError.isEmpty()) {
isError << "engine->evaluate(\"Error.prototype\")"
<< "engine->evaluate(\"new Error()\")"
+ << "engine->evaluate(\"Undefined\")"
+ << "engine->evaluate(\"Null\")"
+ << "engine->evaluate(\"True\")"
+ << "engine->evaluate(\"False\")"
;
}
newRow(expr) << isError.contains(expr);
@@ -697,6 +907,7 @@ void tst_QScriptValue::isError_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isError(), expected);
+ QCOMPARE(value.isError(), expected);
}
DEFINE_TEST_FUNCTION(isError)
@@ -816,8 +1027,45 @@ void tst_QScriptValue::toString_makeData(const char* expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22");
+ toString.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined");
+ toString.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null");
+ toString.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True");
+ toString.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False");
+ toString.insert("engine->evaluate(\"undefined\")", "undefined");
+ toString.insert("engine->evaluate(\"null\")", "null");
+ toString.insert("engine->evaluate(\"true\")", "true");
+ toString.insert("engine->evaluate(\"false\")", "false");
+ toString.insert("engine->evaluate(\"122\")", "122");
+ toString.insert("engine->evaluate(\"124\")", "124");
+ toString.insert("engine->evaluate(\"0\")", "0");
+ toString.insert("engine->evaluate(\"0.0\")", "0");
+ toString.insert("engine->evaluate(\"123.0\")", "123");
+ toString.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8");
+ toString.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8");
+ toString.insert("engine->evaluate(\"0x43211234\")", "1126240820");
+ toString.insert("engine->evaluate(\"0x10000\")", "65536");
+ toString.insert("engine->evaluate(\"0x10001\")", "65537");
+ toString.insert("engine->evaluate(\"NaN\")", "NaN");
+ toString.insert("engine->evaluate(\"Infinity\")", "Infinity");
+ toString.insert("engine->evaluate(\"-Infinity\")", "-Infinity");
+ toString.insert("engine->evaluate(\"'ciao'\")", "ciao");
+ toString.insert("engine->evaluate(\"''\")", "");
+ toString.insert("engine->evaluate(\"'0'\")", "0");
+ toString.insert("engine->evaluate(\"'123'\")", "123");
+ toString.insert("engine->evaluate(\"'12.4'\")", "12.4");
toString.insert("engine->nullValue()", "null");
toString.insert("engine->undefinedValue()", "undefined");
+ toString.insert("engine->newObject()", "[object Object]");
+ toString.insert("engine->newArray()", "");
+ toString.insert("engine->newArray(10)", ",,,,,,,,,");
+ toString.insert("engine->newDate(QDateTime())", "Invalid Date");
+ toString.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]");
+ toString.insert("engine->newVariant(QVariant())", "undefined");
+ toString.insert("engine->newVariant(QVariant(123))", "123");
+ toString.insert("engine->newVariant(QVariant(false))", "false");
+ toString.insert("engine->newQObject(0)", "null");
+ toString.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")");
}
newRow(expr) << toString.value(expr);
}
@@ -826,6 +1074,7 @@ void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
{
QFETCH(QString, expected);
QCOMPARE(value.toString(), expected);
+ QCOMPARE(value.toString(), expected);
}
DEFINE_TEST_FUNCTION(toString)
@@ -944,8 +1193,45 @@ void tst_QScriptValue::toNumber_makeData(const char* expr)
toNumber.insert("engine->evaluate(\"new Object()\")", qQNaN());
toNumber.insert("engine->evaluate(\"new Array()\")", 0);
toNumber.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toNumber.insert("engine->evaluate(\"Undefined\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Null\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"True\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"False\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"undefined\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"null\")", 0);
+ toNumber.insert("engine->evaluate(\"true\")", 1);
+ toNumber.insert("engine->evaluate(\"false\")", 0);
+ toNumber.insert("engine->evaluate(\"122\")", 122);
+ toNumber.insert("engine->evaluate(\"124\")", 124);
+ toNumber.insert("engine->evaluate(\"0\")", 0);
+ toNumber.insert("engine->evaluate(\"0.0\")", 0);
+ toNumber.insert("engine->evaluate(\"123.0\")", 123);
+ toNumber.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08);
+ toNumber.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08);
+ toNumber.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toNumber.insert("engine->evaluate(\"0x10000\")", 65536);
+ toNumber.insert("engine->evaluate(\"0x10001\")", 65537);
+ toNumber.insert("engine->evaluate(\"NaN\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Infinity\")", qInf());
+ toNumber.insert("engine->evaluate(\"-Infinity\")", qInf());
+ toNumber.insert("engine->evaluate(\"'ciao'\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"''\")", 0);
+ toNumber.insert("engine->evaluate(\"'0'\")", 0);
+ toNumber.insert("engine->evaluate(\"'123'\")", 123);
+ toNumber.insert("engine->evaluate(\"'12.4'\")", 12.4);
toNumber.insert("engine->nullValue()", 0);
toNumber.insert("engine->undefinedValue()", qQNaN());
+ toNumber.insert("engine->newObject()", qQNaN());
+ toNumber.insert("engine->newArray()", 0);
+ toNumber.insert("engine->newArray(10)", qQNaN());
+ toNumber.insert("engine->newDate(QDateTime())", qQNaN());
+ toNumber.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN());
+ toNumber.insert("engine->newVariant(QVariant())", qQNaN());
+ toNumber.insert("engine->newVariant(QVariant(123))", 123);
+ toNumber.insert("engine->newVariant(QVariant(false))", 0);
+ toNumber.insert("engine->newQObject(0)", 0);
+ toNumber.insert("engine->newQObject(engine)", qQNaN());
}
newRow(expr) << toNumber.value(expr);
}
@@ -959,9 +1245,11 @@ void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
}
if (qIsInf(expected)) {
QVERIFY(qIsInf(value.toNumber()));
+ QVERIFY(qIsInf(value.toNumber()));
return;
}
QCOMPARE(value.toNumber(), expected);
+ QCOMPARE(value.toNumber(), expected);
}
DEFINE_TEST_FUNCTION(toNumber)
@@ -1080,8 +1368,45 @@ void tst_QScriptValue::toBool_makeData(const char* expr)
toBool.insert("engine->evaluate(\"new Object()\")", true);
toBool.insert("engine->evaluate(\"new Array()\")", true);
toBool.insert("engine->evaluate(\"new Error()\")", true);
+ toBool.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ toBool.insert("engine->evaluate(\"Undefined\")", true);
+ toBool.insert("engine->evaluate(\"Null\")", true);
+ toBool.insert("engine->evaluate(\"True\")", true);
+ toBool.insert("engine->evaluate(\"False\")", true);
+ toBool.insert("engine->evaluate(\"undefined\")", false);
+ toBool.insert("engine->evaluate(\"null\")", false);
+ toBool.insert("engine->evaluate(\"true\")", true);
+ toBool.insert("engine->evaluate(\"false\")", false);
+ toBool.insert("engine->evaluate(\"122\")", true);
+ toBool.insert("engine->evaluate(\"124\")", true);
+ toBool.insert("engine->evaluate(\"0\")", false);
+ toBool.insert("engine->evaluate(\"0.0\")", false);
+ toBool.insert("engine->evaluate(\"123.0\")", true);
+ toBool.insert("engine->evaluate(\"6.37e-8\")", true);
+ toBool.insert("engine->evaluate(\"-6.37e-8\")", true);
+ toBool.insert("engine->evaluate(\"0x43211234\")", true);
+ toBool.insert("engine->evaluate(\"0x10000\")", true);
+ toBool.insert("engine->evaluate(\"0x10001\")", true);
+ toBool.insert("engine->evaluate(\"NaN\")", false);
+ toBool.insert("engine->evaluate(\"Infinity\")", true);
+ toBool.insert("engine->evaluate(\"-Infinity\")", true);
+ toBool.insert("engine->evaluate(\"'ciao'\")", true);
+ toBool.insert("engine->evaluate(\"''\")", false);
+ toBool.insert("engine->evaluate(\"'0'\")", true);
+ toBool.insert("engine->evaluate(\"'123'\")", true);
+ toBool.insert("engine->evaluate(\"'12.4'\")", true);
toBool.insert("engine->nullValue()", false);
toBool.insert("engine->undefinedValue()", false);
+ toBool.insert("engine->newObject()", true);
+ toBool.insert("engine->newArray()", true);
+ toBool.insert("engine->newArray(10)", true);
+ toBool.insert("engine->newDate(QDateTime())", true);
+ toBool.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ toBool.insert("engine->newVariant(QVariant())", true);
+ toBool.insert("engine->newVariant(QVariant(123))", true);
+ toBool.insert("engine->newVariant(QVariant(false))", true);
+ toBool.insert("engine->newQObject(0)", false);
+ toBool.insert("engine->newQObject(engine)", true);
}
newRow(expr) << toBool.value(expr);
}
@@ -1090,6 +1415,7 @@ void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.toBool(), expected);
+ QCOMPARE(value.toBool(), expected);
}
DEFINE_TEST_FUNCTION(toBool)
@@ -1208,8 +1534,45 @@ void tst_QScriptValue::toBoolean_makeData(const char* expr)
toBoolean.insert("engine->evaluate(\"new Object()\")", true);
toBoolean.insert("engine->evaluate(\"new Array()\")", true);
toBoolean.insert("engine->evaluate(\"new Error()\")", true);
+ toBoolean.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ toBoolean.insert("engine->evaluate(\"Undefined\")", true);
+ toBoolean.insert("engine->evaluate(\"Null\")", true);
+ toBoolean.insert("engine->evaluate(\"True\")", true);
+ toBoolean.insert("engine->evaluate(\"False\")", true);
+ toBoolean.insert("engine->evaluate(\"undefined\")", false);
+ toBoolean.insert("engine->evaluate(\"null\")", false);
+ toBoolean.insert("engine->evaluate(\"true\")", true);
+ toBoolean.insert("engine->evaluate(\"false\")", false);
+ toBoolean.insert("engine->evaluate(\"122\")", true);
+ toBoolean.insert("engine->evaluate(\"124\")", true);
+ toBoolean.insert("engine->evaluate(\"0\")", false);
+ toBoolean.insert("engine->evaluate(\"0.0\")", false);
+ toBoolean.insert("engine->evaluate(\"123.0\")", true);
+ toBoolean.insert("engine->evaluate(\"6.37e-8\")", true);
+ toBoolean.insert("engine->evaluate(\"-6.37e-8\")", true);
+ toBoolean.insert("engine->evaluate(\"0x43211234\")", true);
+ toBoolean.insert("engine->evaluate(\"0x10000\")", true);
+ toBoolean.insert("engine->evaluate(\"0x10001\")", true);
+ toBoolean.insert("engine->evaluate(\"NaN\")", false);
+ toBoolean.insert("engine->evaluate(\"Infinity\")", true);
+ toBoolean.insert("engine->evaluate(\"-Infinity\")", true);
+ toBoolean.insert("engine->evaluate(\"'ciao'\")", true);
+ toBoolean.insert("engine->evaluate(\"''\")", false);
+ toBoolean.insert("engine->evaluate(\"'0'\")", true);
+ toBoolean.insert("engine->evaluate(\"'123'\")", true);
+ toBoolean.insert("engine->evaluate(\"'12.4'\")", true);
toBoolean.insert("engine->nullValue()", false);
toBoolean.insert("engine->undefinedValue()", false);
+ toBoolean.insert("engine->newObject()", true);
+ toBoolean.insert("engine->newArray()", true);
+ toBoolean.insert("engine->newArray(10)", true);
+ toBoolean.insert("engine->newDate(QDateTime())", true);
+ toBoolean.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ toBoolean.insert("engine->newVariant(QVariant())", true);
+ toBoolean.insert("engine->newVariant(QVariant(123))", true);
+ toBoolean.insert("engine->newVariant(QVariant(false))", true);
+ toBoolean.insert("engine->newQObject(0)", false);
+ toBoolean.insert("engine->newQObject(engine)", true);
}
newRow(expr) << toBoolean.value(expr);
}
@@ -1218,6 +1581,7 @@ void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.toBoolean(), expected);
+ QCOMPARE(value.toBoolean(), expected);
}
DEFINE_TEST_FUNCTION(toBoolean)
@@ -1336,8 +1700,45 @@ void tst_QScriptValue::toInteger_makeData(const char* expr)
toInteger.insert("engine->evaluate(\"new Object()\")", 0);
toInteger.insert("engine->evaluate(\"new Array()\")", 0);
toInteger.insert("engine->evaluate(\"new Error()\")", 0);
+ toInteger.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toInteger.insert("engine->evaluate(\"Undefined\")", 0);
+ toInteger.insert("engine->evaluate(\"Null\")", 0);
+ toInteger.insert("engine->evaluate(\"True\")", 0);
+ toInteger.insert("engine->evaluate(\"False\")", 0);
+ toInteger.insert("engine->evaluate(\"undefined\")", 0);
+ toInteger.insert("engine->evaluate(\"null\")", 0);
+ toInteger.insert("engine->evaluate(\"true\")", 1);
+ toInteger.insert("engine->evaluate(\"false\")", 0);
+ toInteger.insert("engine->evaluate(\"122\")", 122);
+ toInteger.insert("engine->evaluate(\"124\")", 124);
+ toInteger.insert("engine->evaluate(\"0\")", 0);
+ toInteger.insert("engine->evaluate(\"0.0\")", 0);
+ toInteger.insert("engine->evaluate(\"123.0\")", 123);
+ toInteger.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toInteger.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toInteger.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toInteger.insert("engine->evaluate(\"0x10000\")", 65536);
+ toInteger.insert("engine->evaluate(\"0x10001\")", 65537);
+ toInteger.insert("engine->evaluate(\"NaN\")", 0);
+ toInteger.insert("engine->evaluate(\"Infinity\")", qInf());
+ toInteger.insert("engine->evaluate(\"-Infinity\")", qInf());
+ toInteger.insert("engine->evaluate(\"'ciao'\")", 0);
+ toInteger.insert("engine->evaluate(\"''\")", 0);
+ toInteger.insert("engine->evaluate(\"'0'\")", 0);
+ toInteger.insert("engine->evaluate(\"'123'\")", 123);
+ toInteger.insert("engine->evaluate(\"'12.4'\")", 12);
toInteger.insert("engine->nullValue()", 0);
toInteger.insert("engine->undefinedValue()", 0);
+ toInteger.insert("engine->newObject()", 0);
+ toInteger.insert("engine->newArray()", 0);
+ toInteger.insert("engine->newArray(10)", 0);
+ toInteger.insert("engine->newDate(QDateTime())", 0);
+ toInteger.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toInteger.insert("engine->newVariant(QVariant())", 0);
+ toInteger.insert("engine->newVariant(QVariant(123))", 123);
+ toInteger.insert("engine->newVariant(QVariant(false))", 0);
+ toInteger.insert("engine->newQObject(0)", 0);
+ toInteger.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toInteger.value(expr);
}
@@ -1347,9 +1748,11 @@ void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
QFETCH(qsreal, expected);
if (qIsInf(expected)) {
QVERIFY(qIsInf(value.toInteger()));
+ QVERIFY(qIsInf(value.toInteger()));
return;
}
QCOMPARE(value.toInteger(), expected);
+ QCOMPARE(value.toInteger(), expected);
}
DEFINE_TEST_FUNCTION(toInteger)
@@ -1468,8 +1871,45 @@ void tst_QScriptValue::toInt32_makeData(const char* expr)
toInt32.insert("engine->evaluate(\"new Object()\")", 0);
toInt32.insert("engine->evaluate(\"new Array()\")", 0);
toInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ toInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toInt32.insert("engine->evaluate(\"Undefined\")", 0);
+ toInt32.insert("engine->evaluate(\"Null\")", 0);
+ toInt32.insert("engine->evaluate(\"True\")", 0);
+ toInt32.insert("engine->evaluate(\"False\")", 0);
+ toInt32.insert("engine->evaluate(\"undefined\")", 0);
+ toInt32.insert("engine->evaluate(\"null\")", 0);
+ toInt32.insert("engine->evaluate(\"true\")", 1);
+ toInt32.insert("engine->evaluate(\"false\")", 0);
+ toInt32.insert("engine->evaluate(\"122\")", 122);
+ toInt32.insert("engine->evaluate(\"124\")", 124);
+ toInt32.insert("engine->evaluate(\"0\")", 0);
+ toInt32.insert("engine->evaluate(\"0.0\")", 0);
+ toInt32.insert("engine->evaluate(\"123.0\")", 123);
+ toInt32.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toInt32.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toInt32.insert("engine->evaluate(\"0x10000\")", 65536);
+ toInt32.insert("engine->evaluate(\"0x10001\")", 65537);
+ toInt32.insert("engine->evaluate(\"NaN\")", 0);
+ toInt32.insert("engine->evaluate(\"Infinity\")", 0);
+ toInt32.insert("engine->evaluate(\"-Infinity\")", 0);
+ toInt32.insert("engine->evaluate(\"'ciao'\")", 0);
+ toInt32.insert("engine->evaluate(\"''\")", 0);
+ toInt32.insert("engine->evaluate(\"'0'\")", 0);
+ toInt32.insert("engine->evaluate(\"'123'\")", 123);
+ toInt32.insert("engine->evaluate(\"'12.4'\")", 12);
toInt32.insert("engine->nullValue()", 0);
toInt32.insert("engine->undefinedValue()", 0);
+ toInt32.insert("engine->newObject()", 0);
+ toInt32.insert("engine->newArray()", 0);
+ toInt32.insert("engine->newArray(10)", 0);
+ toInt32.insert("engine->newDate(QDateTime())", 0);
+ toInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toInt32.insert("engine->newVariant(QVariant())", 0);
+ toInt32.insert("engine->newVariant(QVariant(123))", 123);
+ toInt32.insert("engine->newVariant(QVariant(false))", 0);
+ toInt32.insert("engine->newQObject(0)", 0);
+ toInt32.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toInt32.value(expr);
}
@@ -1478,6 +1918,7 @@ void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
{
QFETCH(qint32, expected);
QCOMPARE(value.toInt32(), expected);
+ QCOMPARE(value.toInt32(), expected);
}
DEFINE_TEST_FUNCTION(toInt32)
@@ -1596,8 +2037,45 @@ void tst_QScriptValue::toUInt32_makeData(const char* expr)
toUInt32.insert("engine->evaluate(\"new Object()\")", 0);
toUInt32.insert("engine->evaluate(\"new Array()\")", 0);
toUInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ toUInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toUInt32.insert("engine->evaluate(\"Undefined\")", 0);
+ toUInt32.insert("engine->evaluate(\"Null\")", 0);
+ toUInt32.insert("engine->evaluate(\"True\")", 0);
+ toUInt32.insert("engine->evaluate(\"False\")", 0);
+ toUInt32.insert("engine->evaluate(\"undefined\")", 0);
+ toUInt32.insert("engine->evaluate(\"null\")", 0);
+ toUInt32.insert("engine->evaluate(\"true\")", 1);
+ toUInt32.insert("engine->evaluate(\"false\")", 0);
+ toUInt32.insert("engine->evaluate(\"122\")", 122);
+ toUInt32.insert("engine->evaluate(\"124\")", 124);
+ toUInt32.insert("engine->evaluate(\"0\")", 0);
+ toUInt32.insert("engine->evaluate(\"0.0\")", 0);
+ toUInt32.insert("engine->evaluate(\"123.0\")", 123);
+ toUInt32.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toUInt32.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toUInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toUInt32.insert("engine->evaluate(\"0x10000\")", 65536);
+ toUInt32.insert("engine->evaluate(\"0x10001\")", 65537);
+ toUInt32.insert("engine->evaluate(\"NaN\")", 0);
+ toUInt32.insert("engine->evaluate(\"Infinity\")", 0);
+ toUInt32.insert("engine->evaluate(\"-Infinity\")", 0);
+ toUInt32.insert("engine->evaluate(\"'ciao'\")", 0);
+ toUInt32.insert("engine->evaluate(\"''\")", 0);
+ toUInt32.insert("engine->evaluate(\"'0'\")", 0);
+ toUInt32.insert("engine->evaluate(\"'123'\")", 123);
+ toUInt32.insert("engine->evaluate(\"'12.4'\")", 12);
toUInt32.insert("engine->nullValue()", 0);
toUInt32.insert("engine->undefinedValue()", 0);
+ toUInt32.insert("engine->newObject()", 0);
+ toUInt32.insert("engine->newArray()", 0);
+ toUInt32.insert("engine->newArray(10)", 0);
+ toUInt32.insert("engine->newDate(QDateTime())", 0);
+ toUInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toUInt32.insert("engine->newVariant(QVariant())", 0);
+ toUInt32.insert("engine->newVariant(QVariant(123))", 123);
+ toUInt32.insert("engine->newVariant(QVariant(false))", 0);
+ toUInt32.insert("engine->newQObject(0)", 0);
+ toUInt32.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toUInt32.value(expr);
}
@@ -1606,6 +2084,7 @@ void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
{
QFETCH(quint32, expected);
QCOMPARE(value.toUInt32(), expected);
+ QCOMPARE(value.toUInt32(), expected);
}
DEFINE_TEST_FUNCTION(toUInt32)
@@ -1724,8 +2203,45 @@ void tst_QScriptValue::toUInt16_makeData(const char* expr)
toUInt16.insert("engine->evaluate(\"new Object()\")", 0);
toUInt16.insert("engine->evaluate(\"new Array()\")", 0);
toUInt16.insert("engine->evaluate(\"new Error()\")", 0);
+ toUInt16.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toUInt16.insert("engine->evaluate(\"Undefined\")", 0);
+ toUInt16.insert("engine->evaluate(\"Null\")", 0);
+ toUInt16.insert("engine->evaluate(\"True\")", 0);
+ toUInt16.insert("engine->evaluate(\"False\")", 0);
+ toUInt16.insert("engine->evaluate(\"undefined\")", 0);
+ toUInt16.insert("engine->evaluate(\"null\")", 0);
+ toUInt16.insert("engine->evaluate(\"true\")", 1);
+ toUInt16.insert("engine->evaluate(\"false\")", 0);
+ toUInt16.insert("engine->evaluate(\"122\")", 122);
+ toUInt16.insert("engine->evaluate(\"124\")", 124);
+ toUInt16.insert("engine->evaluate(\"0\")", 0);
+ toUInt16.insert("engine->evaluate(\"0.0\")", 0);
+ toUInt16.insert("engine->evaluate(\"123.0\")", 123);
+ toUInt16.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toUInt16.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toUInt16.insert("engine->evaluate(\"0x43211234\")", 4660);
+ toUInt16.insert("engine->evaluate(\"0x10000\")", 0);
+ toUInt16.insert("engine->evaluate(\"0x10001\")", 1);
+ toUInt16.insert("engine->evaluate(\"NaN\")", 0);
+ toUInt16.insert("engine->evaluate(\"Infinity\")", 0);
+ toUInt16.insert("engine->evaluate(\"-Infinity\")", 0);
+ toUInt16.insert("engine->evaluate(\"'ciao'\")", 0);
+ toUInt16.insert("engine->evaluate(\"''\")", 0);
+ toUInt16.insert("engine->evaluate(\"'0'\")", 0);
+ toUInt16.insert("engine->evaluate(\"'123'\")", 123);
+ toUInt16.insert("engine->evaluate(\"'12.4'\")", 12);
toUInt16.insert("engine->nullValue()", 0);
toUInt16.insert("engine->undefinedValue()", 0);
+ toUInt16.insert("engine->newObject()", 0);
+ toUInt16.insert("engine->newArray()", 0);
+ toUInt16.insert("engine->newArray(10)", 0);
+ toUInt16.insert("engine->newDate(QDateTime())", 0);
+ toUInt16.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toUInt16.insert("engine->newVariant(QVariant())", 0);
+ toUInt16.insert("engine->newVariant(QVariant(123))", 123);
+ toUInt16.insert("engine->newVariant(QVariant(false))", 0);
+ toUInt16.insert("engine->newQObject(0)", 0);
+ toUInt16.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toUInt16.value(expr);
}
@@ -1734,6 +2250,7 @@ void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value)
{
QFETCH(quint16, expected);
QCOMPARE(value.toUInt16(), expected);
+ QCOMPARE(value.toUInt16(), expected);
}
DEFINE_TEST_FUNCTION(toUInt16)
@@ -1758,8 +2275,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
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)");
@@ -1767,11 +2287,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(true) <=> QScriptValue(true)");
equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(false) <=> QScriptValue(false)");
equals.insert("QScriptValue(false) <=> QScriptValue(0)");
equals.insert("QScriptValue(false) <=> QScriptValue(0.0)");
@@ -1793,12 +2317,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(false) <=> engine->newArray()");
+ equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(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(int(122)) <=> engine->evaluate(\"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(uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
@@ -1820,6 +2353,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
@@ -1841,39 +2381,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(false))");
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(123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(123.0) <=> engine->newVariant(QVariant(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) <=> engine->evaluate(\"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(-6.37e-8) <=> engine->evaluate(\"-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(0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"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(-qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -1883,24 +2440,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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\") <=> engine->evaluate(\"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(\"-Infinity\") <=> engine->evaluate(\"-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(\"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0.0)");
@@ -1919,6 +2480,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0.0)");
@@ -1937,6 +2504,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)");
@@ -1949,13 +2522,22 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(false))");
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(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'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)");
@@ -1963,8 +2545,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
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)");
@@ -1972,11 +2557,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)");
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, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0.0)");
@@ -1998,12 +2587,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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, false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
@@ -2025,6 +2623,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(false))");
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)");
@@ -2046,39 +2651,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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, 0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(false))");
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, 123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"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, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2088,24 +2710,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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\") <=> engine->evaluate(\"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, \"-Infinity\") <=> engine->evaluate(\"-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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)");
@@ -2124,6 +2750,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0.0)");
@@ -2142,6 +2774,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(false))");
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)");
@@ -2154,12 +2792,20 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(false))");
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(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(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)");
@@ -2168,8 +2814,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
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)");
@@ -2177,11 +2826,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)");
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, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0.0)");
@@ -2203,12 +2856,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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, false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
@@ -2230,6 +2892,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(false))");
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)");
@@ -2251,39 +2920,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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, 0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(false))");
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, 123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"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, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2293,24 +2979,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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\") <=> engine->evaluate(\"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, \"-Infinity\") <=> engine->evaluate(\"-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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)");
@@ -2329,6 +3019,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0.0)");
@@ -2347,6 +3043,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(false))");
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)");
@@ -2359,12 +3061,20 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(false))");
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(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(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)");
@@ -2382,6 +3092,10 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0.0\")");
+ 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)");
@@ -2389,8 +3103,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"null\")");
equals.insert("engine->evaluate(\"{}\") <=> engine->nullValue()");
equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->newQObject(0)");
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)");
@@ -2409,6 +3126,10 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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(\"Array.prototype\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"''\")");
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\")");
@@ -2436,7 +3157,238 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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 Array()\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")");
+ 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(\"''\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2444,8 +3396,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->nullValue() <=> engine->nullValue()");
equals.insert("engine->nullValue() <=> engine->undefinedValue()");
+ equals.insert("engine->nullValue() <=> engine->newQObject(0)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2453,8 +3408,82 @@ void tst_QScriptValue::equals_makeData(const char *expr)
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->evaluate(\"undefined\")");
+ equals.insert("engine->undefinedValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->undefinedValue() <=> engine->nullValue()");
equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+ equals.insert("engine->undefinedValue() <=> engine->newQObject(0)");
+ equals.insert("engine->newObject() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> QScriptValue(false)");
+ equals.insert("engine->newArray() <=> QScriptValue(0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString())");
+ equals.insert("engine->newArray() <=> QScriptValue(0, false)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString())");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, false)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString())");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"false\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"''\")");
+ equals.insert("engine->newArray() <=> engine->newArray()");
+ equals.insert("engine->newArray(10) <=> engine->newArray(10)");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"false\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"''\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")");
+ equals.insert("engine->newQObject(0) <=> engine->nullValue()");
+ equals.insert("engine->newQObject(0) <=> engine->undefinedValue()");
+ equals.insert("engine->newQObject(0) <=> engine->newQObject(0)");
+ equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -2489,59 +3518,78 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
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->evaluate(\"undefined\")");
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->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(true) <=> QScriptValue(true)");
equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(false) <=> QScriptValue(false)");
equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"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(int(122)) <=> engine->evaluate(\"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(uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"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(0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"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(123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"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(-6.37e-8) <=> engine->evaluate(\"-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(0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2557,88 +3605,114 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
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(\"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"''\")");
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()) <=> engine->evaluate(\"''\")");
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(\"0\")) <=> engine->evaluate(\"'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(\"123\")) <=> engine->evaluate(\"'123'\")");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'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->evaluate(\"undefined\")");
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->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)");
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, true) <=> engine->evaluate(\"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, false) <=> engine->evaluate(\"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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"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, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"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, 123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"Infinity\")");
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()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2654,88 +3728,113 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"''\")");
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()) <=> engine->evaluate(\"''\")");
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(\"0\")) <=> engine->evaluate(\"'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(\"123\")) <=> engine->evaluate(\"'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->evaluate(\"undefined\")");
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->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)");
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, true) <=> engine->evaluate(\"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, false) <=> engine->evaluate(\"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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"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, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"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, 123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"Infinity\")");
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()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2751,36 +3850,43 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"''\")");
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()) <=> engine->evaluate(\"''\")");
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(\"0\")) <=> engine->evaluate(\"'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(\"123\")) <=> engine->evaluate(\"'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->evaluate(\"undefined\")");
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\")");
@@ -2798,15 +3904,138 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")");
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->evaluate(\"null\")");
equals.insert("engine->nullValue() <=> engine->nullValue()");
+ equals.insert("engine->nullValue() <=> engine->newQObject(0)");
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->evaluate(\"undefined\")");
equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+ equals.insert("engine->newObject() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> engine->newArray()");
+ equals.insert("engine->newArray(10) <=> engine->newArray(10)");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")");
+ equals.insert("engine->newQObject(0) <=> engine->nullValue()");
+ equals.insert("engine->newQObject(0) <=> engine->newQObject(0)");
+ equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -2872,6 +4101,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(true) <=> QScriptValue(123.0)");
@@ -2902,6 +4144,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(false) <=> QScriptValue(true)");
equals.insert("QScriptValue(false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(false) <=> QScriptValue(uint(124))");
@@ -2938,6 +4191,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x43211234)");
@@ -2962,6 +4228,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10001)");
@@ -2977,6 +4251,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0) <=> QScriptValue(uint(124))");
@@ -3013,6 +4291,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(uint(124))");
@@ -3049,6 +4340,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10000)");
@@ -3067,6 +4371,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"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))");
@@ -3100,6 +4409,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->newVariant(QVariant(123))");
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)");
@@ -3160,13 +4481,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(-6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newQObject(0)");
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(0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(qInf())");
@@ -3179,6 +4523,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")");
@@ -3188,6 +4535,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(false)");
@@ -3251,7 +4600,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(-qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -3268,6 +4640,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -3287,6 +4667,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(false)");
@@ -3363,7 +4751,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(\"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")");
@@ -3444,6 +4861,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(uint(124))");
@@ -3508,6 +4948,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString()) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(true)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))");
@@ -3565,6 +5028,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)");
@@ -3604,6 +5088,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQObject(engine)");
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)");
@@ -3652,6 +5149,24 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQObject(engine)");
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))");
@@ -3688,6 +5203,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(123.0)");
@@ -3718,6 +5246,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(uint(124))");
@@ -3754,6 +5293,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(123))");
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)");
@@ -3778,6 +5330,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->newVariant(QVariant(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)");
@@ -3793,6 +5353,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(uint(124))");
@@ -3829,6 +5393,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(123))");
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))");
@@ -3865,6 +5442,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(123))");
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)");
@@ -3883,6 +5473,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"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))");
@@ -3916,6 +5511,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->newVariant(QVariant(123))");
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)");
@@ -3976,13 +5583,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newQObject(0)");
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, 0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(qInf())");
@@ -3995,6 +5625,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")");
@@ -4004,6 +5637,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(false)");
@@ -4067,7 +5702,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, -qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4084,6 +5742,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, \"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -4103,6 +5769,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)");
@@ -4179,7 +5853,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(engine)");
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\")");
@@ -4260,6 +5963,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(uint(124))");
@@ -4324,6 +6050,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newQObject(engine)");
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))");
@@ -4381,6 +6130,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQObject(engine)");
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)");
@@ -4420,6 +6190,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQObject(engine)");
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)");
@@ -4469,6 +6252,25 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQObject(engine)");
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))");
@@ -4505,6 +6307,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(123.0)");
@@ -4535,6 +6350,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(uint(124))");
@@ -4571,6 +6397,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(123))");
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)");
@@ -4595,6 +6434,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->newVariant(QVariant(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)");
@@ -4610,6 +6457,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(uint(124))");
@@ -4646,6 +6497,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(123))");
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))");
@@ -4682,6 +6546,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(123))");
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)");
@@ -4700,6 +6577,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"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))");
@@ -4733,6 +6615,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->newVariant(QVariant(123))");
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)");
@@ -4793,13 +6687,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newQObject(0)");
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, 0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())");
@@ -4812,6 +6729,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")");
@@ -4821,6 +6741,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, 0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(false)");
@@ -4884,7 +6806,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, -qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4901,6 +6846,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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, \"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -4920,6 +6873,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)");
@@ -4996,7 +6957,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(engine)");
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\")");
@@ -5077,6 +7067,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(uint(124))");
@@ -5141,6 +7154,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newQObject(engine)");
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))");
@@ -5198,6 +7234,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQObject(engine)");
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)");
@@ -5237,6 +7294,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQObject(engine)");
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)");
@@ -5287,6 +7357,25 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(true)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(int(122))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(uint(124))");
@@ -5351,6 +7440,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newQObject(engine)");
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\")");
@@ -5365,6 +7477,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
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))");
@@ -5429,6 +7543,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)");
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\")");
@@ -5458,6 +7595,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
@@ -5512,6 +7657,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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(\"/foo/\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)");
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\")");
@@ -5526,6 +7682,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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 Object()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
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))");
@@ -5590,6 +7748,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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 Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")");
@@ -5612,6 +7793,982 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
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->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"True\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"False\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ 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(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQObject(engine)");
equals.insert("engine->nullValue() <=> QScriptValue(true)");
equals.insert("engine->nullValue() <=> QScriptValue(int(122))");
equals.insert("engine->nullValue() <=> QScriptValue(uint(124))");
@@ -5648,6 +8805,329 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->nullValue() <=> QScriptValue(engine, \"Infinity\")");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"true\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"122\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"124\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->nullValue() <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newObject() <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray() <=> QScriptValue(true)");
+ equals.insert("engine->newArray() <=> QScriptValue(int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, true)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, true)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newArray() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> engine->newArray(10)");
+ equals.insert("engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray() <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newArray() <=> engine->newQObject(engine)");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newArray(10) <=> engine->newObject()");
+ equals.insert("engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray(10) <=> engine->newQObject(engine)");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newQObject(0) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newQObject(engine) <=> engine->newObject()");
+ equals.insert("engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -5702,6 +9182,21 @@ void tst_QScriptValue::instanceOf_makeData(const char *expr)
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\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -5833,8 +9328,45 @@ void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
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->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22");
+ value.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined");
+ value.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null");
+ value.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True");
+ value.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False");
+ value.insert("engine->evaluate(\"undefined\")", "");
+ value.insert("engine->evaluate(\"null\")", "");
+ value.insert("engine->evaluate(\"true\")", "true");
+ value.insert("engine->evaluate(\"false\")", "false");
+ value.insert("engine->evaluate(\"122\")", "122");
+ value.insert("engine->evaluate(\"124\")", "124");
+ value.insert("engine->evaluate(\"0\")", "0");
+ value.insert("engine->evaluate(\"0.0\")", "0");
+ value.insert("engine->evaluate(\"123.0\")", "123");
+ value.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8");
+ value.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8");
+ value.insert("engine->evaluate(\"0x43211234\")", "1126240820");
+ value.insert("engine->evaluate(\"0x10000\")", "65536");
+ value.insert("engine->evaluate(\"0x10001\")", "65537");
+ value.insert("engine->evaluate(\"NaN\")", "NaN");
+ value.insert("engine->evaluate(\"Infinity\")", "Infinity");
+ value.insert("engine->evaluate(\"-Infinity\")", "-Infinity");
+ value.insert("engine->evaluate(\"'ciao'\")", "ciao");
+ value.insert("engine->evaluate(\"''\")", "");
+ value.insert("engine->evaluate(\"'0'\")", "0");
+ value.insert("engine->evaluate(\"'123'\")", "123");
+ value.insert("engine->evaluate(\"'12.4'\")", "12.4");
value.insert("engine->nullValue()", "");
value.insert("engine->undefinedValue()", "");
+ value.insert("engine->newObject()", "[object Object]");
+ value.insert("engine->newArray()", "");
+ value.insert("engine->newArray(10)", ",,,,,,,,,");
+ value.insert("engine->newDate(QDateTime())", "Invalid Date");
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]");
+ value.insert("engine->newVariant(QVariant())", "undefined");
+ value.insert("engine->newVariant(QVariant(123))", "123");
+ value.insert("engine->newVariant(QVariant(false))", "false");
+ value.insert("engine->newQObject(0)", "");
+ value.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")");
}
newRow(expr) << value.value(expr);
}
@@ -5843,6 +9375,7 @@ void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptV
{
QFETCH(QString, expected);
QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+ QCOMPARE(qscriptvalue_cast<QString>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
@@ -5961,8 +9494,45 @@ void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", qQNaN());
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", qQNaN());
+ value.insert("engine->evaluate(\"Null\")", qQNaN());
+ value.insert("engine->evaluate(\"True\")", qQNaN());
+ value.insert("engine->evaluate(\"False\")", qQNaN());
+ value.insert("engine->evaluate(\"undefined\")", qQNaN());
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08);
+ value.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", qQNaN());
+ value.insert("engine->evaluate(\"Infinity\")", qInf());
+ value.insert("engine->evaluate(\"-Infinity\")", qInf());
+ value.insert("engine->evaluate(\"'ciao'\")", qQNaN());
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12.4);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", qQNaN());
+ value.insert("engine->newObject()", qQNaN());
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", qQNaN());
+ value.insert("engine->newDate(QDateTime())", qQNaN());
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN());
+ value.insert("engine->newVariant(QVariant())", qQNaN());
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", qQNaN());
}
newRow(expr) << value.value(expr);
}
@@ -5972,13 +9542,16 @@ void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptVa
QFETCH(qsreal, expected);
if (qIsNaN(expected)) {
QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
+ QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
return;
}
if (qIsInf(expected)) {
QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
+ QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
return;
}
QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
+ QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
@@ -6097,8 +9670,45 @@ void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", true);
value.insert("engine->evaluate(\"new Array()\")", true);
value.insert("engine->evaluate(\"new Error()\")", true);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ value.insert("engine->evaluate(\"Undefined\")", true);
+ value.insert("engine->evaluate(\"Null\")", true);
+ value.insert("engine->evaluate(\"True\")", true);
+ value.insert("engine->evaluate(\"False\")", true);
+ value.insert("engine->evaluate(\"undefined\")", false);
+ value.insert("engine->evaluate(\"null\")", false);
+ value.insert("engine->evaluate(\"true\")", true);
+ value.insert("engine->evaluate(\"false\")", false);
+ value.insert("engine->evaluate(\"122\")", true);
+ value.insert("engine->evaluate(\"124\")", true);
+ value.insert("engine->evaluate(\"0\")", false);
+ value.insert("engine->evaluate(\"0.0\")", false);
+ value.insert("engine->evaluate(\"123.0\")", true);
+ value.insert("engine->evaluate(\"6.37e-8\")", true);
+ value.insert("engine->evaluate(\"-6.37e-8\")", true);
+ value.insert("engine->evaluate(\"0x43211234\")", true);
+ value.insert("engine->evaluate(\"0x10000\")", true);
+ value.insert("engine->evaluate(\"0x10001\")", true);
+ value.insert("engine->evaluate(\"NaN\")", false);
+ value.insert("engine->evaluate(\"Infinity\")", true);
+ value.insert("engine->evaluate(\"-Infinity\")", true);
+ value.insert("engine->evaluate(\"'ciao'\")", true);
+ value.insert("engine->evaluate(\"''\")", false);
+ value.insert("engine->evaluate(\"'0'\")", true);
+ value.insert("engine->evaluate(\"'123'\")", true);
+ value.insert("engine->evaluate(\"'12.4'\")", true);
value.insert("engine->nullValue()", false);
value.insert("engine->undefinedValue()", false);
+ value.insert("engine->newObject()", true);
+ value.insert("engine->newArray()", true);
+ value.insert("engine->newArray(10)", true);
+ value.insert("engine->newDate(QDateTime())", true);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ value.insert("engine->newVariant(QVariant())", true);
+ value.insert("engine->newVariant(QVariant(123))", true);
+ value.insert("engine->newVariant(QVariant(false))", true);
+ value.insert("engine->newQObject(0)", false);
+ value.insert("engine->newQObject(engine)", true);
}
newRow(expr) << value.value(expr);
}
@@ -6107,6 +9717,7 @@ void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValu
{
QFETCH(bool, expected);
QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+ QCOMPARE(qscriptvalue_cast<bool>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
@@ -6225,8 +9836,45 @@ void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6235,6 +9883,7 @@ void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptVa
{
QFETCH(qint32, expected);
QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
@@ -6353,8 +10002,45 @@ void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6363,6 +10049,7 @@ void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptV
{
QFETCH(quint32, expected);
QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
@@ -6481,8 +10168,45 @@ void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 4660);
+ value.insert("engine->evaluate(\"0x10000\")", 0);
+ value.insert("engine->evaluate(\"0x10001\")", 1);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6491,6 +10215,7 @@ void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptV
{
QFETCH(quint16, expected);
QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
+ QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castquint16)
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index 9c9524a..dc37c42 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -165,6 +165,10 @@ private slots:
void fromLocal8Bit();
void local8Bit_data();
void local8Bit();
+ void fromLatin1Roundtrip_data();
+ void fromLatin1Roundtrip();
+ void toLatin1Roundtrip_data();
+ void toLatin1Roundtrip();
void fromLatin1();
void fromAscii();
void arg();
@@ -3224,6 +3228,109 @@ void tst_QString::local8Bit()
QCOMPARE(local8Bit.toLocal8Bit(), QByteArray(result));
}
+void tst_QString::fromLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicode");
+
+ QTest::newRow("null") << QByteArray() << QString();
+ QTest::newRow("empty") << QByteArray("") << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3);
+}
+
+void tst_QString::fromLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicode);
+
+ // QtTest safety check:
+ Q_ASSERT(latin1.isNull() == unicode.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicode.isEmpty());
+ Q_ASSERT(latin1.length() == unicode.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicode += unicode;
+ }
+
+ // fromLatin1
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicode.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicode);
+
+ // and back:
+ QCOMPARE(unicode.toLatin1().length(), latin1.length());
+ QCOMPARE(unicode.toLatin1(), latin1);
+}
+
+void tst_QString::toLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicodesrc");
+ QTest::addColumn<QString>("unicodedst");
+
+ QTest::newRow("null") << QByteArray() << QString() << QString();
+ QTest::newRow("empty") << QByteArray("") << "" << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5) << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9) << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3) << QString::fromUtf16(unicode4, 3);
+
+ static const ushort unicodeq[] = { '?', '?', '?', '?', '?' };
+ const QString questionmarks = QString::fromUtf16(unicodeq, 5);
+
+ static const ushort unicode5[] = { 0x100, 0x101, 0x17f, 0x7f00, 0x7f7f };
+ QTest::newRow("non-latin1a") << QByteArray("?????") << QString::fromUtf16(unicode5, 5) << questionmarks;
+
+ static const ushort unicode6[] = { 0x180, 0x1ff, 0x8001, 0x8080, 0xfffc };
+ QTest::newRow("non-latin1b") << QByteArray("?????") << QString::fromUtf16(unicode6, 5) << questionmarks;
+}
+
+void tst_QString::toLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicodesrc);
+ QFETCH(QString, unicodedst);
+
+ // QtTest safety check:
+ Q_ASSERT(latin1.isNull() == unicodesrc.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicodesrc.isEmpty());
+ Q_ASSERT(latin1.length() == unicodesrc.length());
+ Q_ASSERT(latin1.isNull() == unicodedst.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicodedst.isEmpty());
+ Q_ASSERT(latin1.length() == unicodedst.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicodesrc += unicodesrc;
+ unicodedst += unicodedst;
+ }
+
+ // toLatin1
+ QCOMPARE(unicodesrc.toLatin1().length(), latin1.length());
+ QCOMPARE(unicodesrc.toLatin1(), latin1);
+
+ // and back:
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicodedst.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicodedst);
+}
+
void tst_QString::fromLatin1()
{
QString a;
diff --git a/tools/qdoc3/atom.cpp b/tools/qdoc3/atom.cpp
index 6920e9d..88f44ea 100644
--- a/tools/qdoc3/atom.cpp
+++ b/tools/qdoc3/atom.cpp
@@ -133,7 +133,7 @@ QString Atom::UPPERROMAN_ ("upperroman");
\value ParaLeft
\value ParaRight
\value Qml
- \value QDeclarativeText
+ \value QmlText
\value QuotationLeft
\value QuotationRight
\value RawString
@@ -210,7 +210,7 @@ static const struct {
{ "ParaRight", Atom::ParaRight },
#ifdef QDOC_QML
{ "Qml", Atom::Qml},
- { "QDeclarativeText", Atom::QDeclarativeText },
+ { "QmlText", Atom::QmlText },
#endif
{ "QuotationLeft", Atom::QuotationLeft },
{ "QuotationRight", Atom::QuotationRight },
diff --git a/tools/qdoc3/atom.h b/tools/qdoc3/atom.h
index d13afbc..70fbae9 100644
--- a/tools/qdoc3/atom.h
+++ b/tools/qdoc3/atom.h
@@ -103,7 +103,7 @@ class Atom
ParaRight,
#ifdef QDOC_QML
Qml,
- QDeclarativeText,
+ QmlText,
#endif
QuotationLeft,
QuotationRight,
diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp
index 48e9341..15f2c2d 100644
--- a/tools/qdoc3/codemarker.cpp
+++ b/tools/qdoc3/codemarker.cpp
@@ -290,13 +290,13 @@ QString CodeMarker::taggedQmlNode(const Node* node)
{
QString tag;
switch (node->type()) {
- case Node::QDeclarativeProperty:
+ case Node::QmlProperty:
tag = QLatin1String("@property");
break;
- case Node::QDeclarativeSignal:
+ case Node::QmlSignal:
tag = QLatin1String("@signal");
break;
- case Node::QDeclarativeMethod:
+ case Node::QmlMethod:
tag = QLatin1String("@method");
break;
default:
@@ -369,7 +369,7 @@ void CodeMarker::insert(FastSection &fastSection,
bool inheritedMember = false;
if (!node->relates()) {
if (node->parent() != (const InnerNode*)fastSection.innerNode) {
- if (node->type() != Node::QDeclarativeProperty)
+ if (node->type() != Node::QmlProperty)
inheritedMember = true;
}
}
@@ -612,9 +612,9 @@ QString CodeMarker::macName(const Node *node, const QString &name)
#ifdef QDOC_QML
/*!
Get the list of documentation sections for the children of
- the specified QDeclarativeClassNode.
+ the specified QmlClassNode.
*/
-QList<Section> CodeMarker::qmlSections(const QDeclarativeClassNode* , SynopsisStyle )
+QList<Section> CodeMarker::qmlSections(const QmlClassNode* , SynopsisStyle )
{
return QList<Section>();
}
diff --git a/tools/qdoc3/codemarker.h b/tools/qdoc3/codemarker.h
index 9e754a2..1b21753 100644
--- a/tools/qdoc3/codemarker.h
+++ b/tools/qdoc3/codemarker.h
@@ -138,7 +138,7 @@ class CodeMarker
SynopsisStyle style,
Status status) = 0;
#ifdef QDOC_QML
- virtual QList<Section> qmlSections(const QDeclarativeClassNode* qmlClassNode,
+ virtual QList<Section> qmlSections(const QmlClassNode* qmlClassNode,
SynopsisStyle style);
#endif
virtual const Node *resolveTarget(const QString& target,
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index ff09bb7..3ff6ebe 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -145,7 +145,7 @@ QString CppCodeMarker::plainFullName(const Node *node, const Node *relative)
}
else {
QString fullName;
- for (;;) {
+ while (node) {
fullName.prepend(plainName(node));
if (node->parent() == relative || node->parent()->name().isEmpty())
break;
@@ -194,8 +194,8 @@ QString CppCodeMarker::markedUpSynopsis(const Node *node,
synopsis = "class " + name;
break;
case Node::Function:
- case Node::QDeclarativeSignal:
- case Node::QDeclarativeMethod:
+ case Node::QmlSignal:
+ case Node::QmlMethod:
func = (const FunctionNode *) node;
if (style != SeparateList && !func->returnType().isEmpty())
synopsis = typified(func->returnType()) + " ";
@@ -355,15 +355,15 @@ QString CppCodeMarker::markedUpQmlItem(const Node* node, bool summary)
QString name = taggedQmlNode(node);
if (summary) {
name = linkTag(node,name);
- } else if (node->type() == Node::QDeclarativeProperty) {
- const QDeclarativePropertyNode* pn = static_cast<const QDeclarativePropertyNode*>(node);
+ } else if (node->type() == Node::QmlProperty) {
+ const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(node);
if (pn->isAttached())
name.prepend(pn->element() + QLatin1Char('.'));
}
name = "<@name>" + name + "</@name>";
QString synopsis = name;
- if (node->type() == Node::QDeclarativeProperty) {
- const QDeclarativePropertyNode* pn = static_cast<const QDeclarativePropertyNode*>(node);
+ if (node->type() == Node::QmlProperty) {
+ const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(node);
synopsis += " : " + typified(pn->dataType());
}
@@ -1108,7 +1108,7 @@ QString CppCodeMarker::addMarkUp(const QString& protectedCode,
Currently, it only handles QML property groups.
*/
-QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassNode,
+QList<Section> CppCodeMarker::qmlSections(const QmlClassNode* qmlClassNode,
SynopsisStyle style)
{
QList<Section> sections;
@@ -1141,12 +1141,12 @@ QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassN
NodeList::ConstIterator c = qmlClassNode->childNodes().begin();
while (c != qmlClassNode->childNodes().end()) {
- if ((*c)->subType() == Node::QDeclarativePropertyGroup) {
- const QDeclarativePropGroupNode* qpgn = static_cast<const QDeclarativePropGroupNode*>(*c);
+ if ((*c)->subType() == Node::QmlPropertyGroup) {
+ const QmlPropGroupNode* qpgn = static_cast<const QmlPropGroupNode*>(*c);
NodeList::ConstIterator p = qpgn->childNodes().begin();
while (p != qpgn->childNodes().end()) {
- if ((*p)->type() == Node::QDeclarativeProperty) {
- const QDeclarativePropertyNode* pn = static_cast<const QDeclarativePropertyNode*>(*p);
+ if ((*p)->type() == Node::QmlProperty) {
+ const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(*p);
if (pn->isAttached())
insert(qmlattachedproperties,*p,style,Okay);
else
@@ -1155,14 +1155,14 @@ QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassN
++p;
}
}
- else if ((*c)->type() == Node::QDeclarativeSignal) {
+ else if ((*c)->type() == Node::QmlSignal) {
const FunctionNode* sn = static_cast<const FunctionNode*>(*c);
if (sn->isAttached())
insert(qmlattachedsignals,*c,style,Okay);
else
insert(qmlsignals,*c,style,Okay);
}
- else if ((*c)->type() == Node::QDeclarativeMethod) {
+ else if ((*c)->type() == Node::QmlMethod) {
const FunctionNode* mn = static_cast<const FunctionNode*>(*c);
if (mn->isAttached())
insert(qmlattachedmethods,*c,style,Okay);
@@ -1187,21 +1187,21 @@ QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassN
FastSection qmlattachedmethods(qmlClassNode,"Attached Method Documentation");
NodeList::ConstIterator c = qmlClassNode->childNodes().begin();
while (c != qmlClassNode->childNodes().end()) {
- if ((*c)->subType() == Node::QDeclarativePropertyGroup) {
- const QDeclarativePropGroupNode* pgn = static_cast<const QDeclarativePropGroupNode*>(*c);
+ if ((*c)->subType() == Node::QmlPropertyGroup) {
+ const QmlPropGroupNode* pgn = static_cast<const QmlPropGroupNode*>(*c);
if (pgn->isAttached())
insert(qmlattachedproperties,*c,style,Okay);
else
insert(qmlproperties,*c,style,Okay);
}
- else if ((*c)->type() == Node::QDeclarativeSignal) {
+ else if ((*c)->type() == Node::QmlSignal) {
const FunctionNode* sn = static_cast<const FunctionNode*>(*c);
if (sn->isAttached())
insert(qmlattachedsignals,*c,style,Okay);
else
insert(qmlsignals,*c,style,Okay);
}
- else if ((*c)->type() == Node::QDeclarativeMethod) {
+ else if ((*c)->type() == Node::QmlMethod) {
const FunctionNode* mn = static_cast<const FunctionNode*>(*c);
if (mn->isAttached())
insert(qmlattachedmethods,*c,style,Okay);
diff --git a/tools/qdoc3/cppcodemarker.h b/tools/qdoc3/cppcodemarker.h
index 2f6471a..2dcf400 100644
--- a/tools/qdoc3/cppcodemarker.h
+++ b/tools/qdoc3/cppcodemarker.h
@@ -79,7 +79,7 @@ class CppCodeMarker : public CodeMarker
QList<Section> sections(const InnerNode *innerNode,
SynopsisStyle style,
Status status);
- QList<Section> qmlSections(const QDeclarativeClassNode* qmlClassNode,
+ QList<Section> qmlSections(const QmlClassNode* qmlClassNode,
SynopsisStyle style);
const Node *resolveTarget(const QString& target,
const Tree *tree,
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp
index 4d30f3a..021d64a 100644
--- a/tools/qdoc3/cppcodeparser.cpp
+++ b/tools/qdoc3/cppcodeparser.cpp
@@ -728,7 +728,7 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc,
if (n)
classNode = static_cast<const ClassNode*>(n);
}
- return new QDeclarativeClassNode(tre->root(), names[0], classNode);
+ return new QmlClassNode(tre->root(), names[0], classNode);
}
else if (command == COMMAND_QMLBASICTYPE) {
#if 0
@@ -738,11 +738,11 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc,
FakeNode* pageNode = static_cast<FakeNode*>(tre->root()->findNode(parts[1], Node::Fake));
if (pageNode) {
qDebug() << "FOUND";
- return new QDeclarativeBasicTypeNode(pageNode, parts[0]);
+ return new QmlBasicTypeNode(pageNode, parts[0]);
}
}
#endif
- return new QDeclarativeBasicTypeNode(tre->root(), arg);
+ return new QmlBasicTypeNode(tre->root(), arg);
}
else if ((command == COMMAND_QMLSIGNAL) ||
(command == COMMAND_QMLMETHOD) ||
@@ -750,19 +750,19 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc,
(command == COMMAND_QMLATTACHEDMETHOD)) {
QString element;
QString type;
- QDeclarativeClassNode* qmlClass = 0;
+ QmlClassNode* qmlClass = 0;
if (splitQmlMethodArg(doc,arg,type,element)) {
Node* n = tre->findNode(QStringList(element),Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
- qmlClass = static_cast<QDeclarativeClassNode*>(n);
+ if (n && n->subType() == Node::QmlClass) {
+ qmlClass = static_cast<QmlClassNode*>(n);
if (command == COMMAND_QMLSIGNAL)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeSignal,false,COMMAND_QMLSIGNAL);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlSignal,false,COMMAND_QMLSIGNAL);
else if (command == COMMAND_QMLATTACHEDSIGNAL)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeSignal,true,COMMAND_QMLATTACHEDSIGNAL);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlSignal,true,COMMAND_QMLATTACHEDSIGNAL);
else if (command == COMMAND_QMLMETHOD)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeMethod,false,COMMAND_QMLMETHOD);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlMethod,false,COMMAND_QMLMETHOD);
else if (command == COMMAND_QMLATTACHEDMETHOD)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeMethod,true,COMMAND_QMLATTACHEDMETHOD);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlMethod,true,COMMAND_QMLATTACHEDMETHOD);
else
return 0; // never get here.
}
@@ -850,7 +850,7 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
const QString& command,
const QStringList& args)
{
- QDeclarativePropGroupNode* qmlPropGroup = 0;
+ QmlPropGroupNode* qmlPropGroup = 0;
if ((command == COMMAND_QMLPROPERTY) ||
(command == COMMAND_QMLATTACHEDPROPERTY)) {
QString type;
@@ -860,20 +860,20 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
QStringList::ConstIterator arg = args.begin();
if (splitQmlPropertyArg(doc,(*arg),type,element,property)) {
Node* n = tre->findNode(QStringList(element),Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
- QDeclarativeClassNode* qmlClass = static_cast<QDeclarativeClassNode*>(n);
+ if (n && n->subType() == Node::QmlClass) {
+ QmlClassNode* qmlClass = static_cast<QmlClassNode*>(n);
if (qmlClass)
- qmlPropGroup = new QDeclarativePropGroupNode(qmlClass,
+ qmlPropGroup = new QmlPropGroupNode(qmlClass,
property,
attached);
}
}
if (qmlPropGroup) {
- const ClassNode *correspondingClass = static_cast<const QDeclarativeClassNode*>(qmlPropGroup->parent())->classNode();
+ const ClassNode *correspondingClass = static_cast<const QmlClassNode*>(qmlPropGroup->parent())->classNode();
PropertyNode *correspondingProperty = 0;
if (correspondingClass)
correspondingProperty = static_cast<PropertyNode*>((Node*)correspondingClass->findNode(property, Node::Property));
- QDeclarativePropertyNode *qmlPropNode = new QDeclarativePropertyNode(qmlPropGroup,property,type,attached);
+ QmlPropertyNode *qmlPropNode = new QmlPropertyNode(qmlPropGroup,property,type,attached);
if (correspondingProperty) {
bool writableList = type.startsWith("list") && correspondingProperty->dataType().endsWith('*');
qmlPropNode->setWritable(writableList || correspondingProperty->isWritable());
@@ -881,7 +881,7 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
++arg;
while (arg != args.end()) {
if (splitQmlPropertyArg(doc,(*arg),type,element,property)) {
- QDeclarativePropertyNode* qmlPropNode = new QDeclarativePropertyNode(qmlPropGroup,
+ QmlPropertyNode* qmlPropNode = new QmlPropertyNode(qmlPropGroup,
property,
type,
attached);
@@ -1033,12 +1033,12 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc,
#ifdef QDOC_QML
else if (command == COMMAND_QMLINHERITS) {
setLink(node, Node::InheritsLink, arg);
- if (node->subType() == Node::QDeclarativeClass) {
- QDeclarativeClassNode::addInheritedBy(arg,node);
+ if (node->subType() == Node::QmlClass) {
+ QmlClassNode::addInheritedBy(arg,node->name());
}
}
else if (command == COMMAND_QMLDEFAULT) {
- QDeclarativePropGroupNode* qpgn = static_cast<QDeclarativePropGroupNode*>(node);
+ QmlPropGroupNode* qpgn = static_cast<QmlPropGroupNode*>(node);
qpgn->setDefault();
}
#endif
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index 78b5d1f..ad4cdde 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -553,7 +553,7 @@ void DocParser::parse(const QString& source,
append(Atom::Qml, getCode(CMD_QML, marker));
break;
case CMD_QMLTEXT:
- append(Atom::QDeclarativeText);
+ append(Atom::QmlText);
break;
#endif
case CMD_CODELINE:
@@ -2842,7 +2842,7 @@ void Doc::initialize(const Config& config)
DocParser::quoting = config.getBool(CONFIG_QUOTINGINFORMATION);
#ifdef QDOC_QML
- QDeclarativeClassNode::qmlOnly = config.getBool(CONFIG_QMLONLY);
+ QmlClassNode::qmlOnly = config.getBool(CONFIG_QMLONLY);
#endif
QStringMap reverseAliasMap;
diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp
index 8766696..6a8899a 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -301,7 +301,7 @@ bool Generator::generateQmlText(const Text& text,
startText(relative, marker);
while (atom) {
- if (atom->type() != Atom::QDeclarativeText)
+ if (atom->type() != Atom::QmlText)
atom = atom->next();
else {
atom = atom->next();
@@ -520,7 +520,7 @@ void Generator::generateInherits(const ClassNode *classe, CodeMarker *marker)
#ifdef QDOC_QML
/*!
*/
-void Generator::generateQmlInherits(const QDeclarativeClassNode* , CodeMarker* )
+void Generator::generateQmlInherits(const QmlClassNode* , CodeMarker* )
{
// stub.
}
@@ -1186,32 +1186,6 @@ void Generator::appendSortedNames(Text& text,
}
}
-void Generator::appendSortedNames(Text& text,
- const Node* base,
- const NodeList& subs,
- CodeMarker *marker)
-{
- NodeList::ConstIterator r;
- QMap<QString,Text> classMap;
- int index = 0;
-
- r = subs.begin();
- while (r != subs.end()) {
- Text className;
- appendFullName(className, (*r), base, marker);
- classMap[className.toString().toLower()] = className;
- ++r;
- }
-
- QStringList classNames = classMap.keys();
- classNames.sort();
-
- foreach (const QString &className, classNames) {
- text << classMap[className];
- text << separator(index++, classNames.count());
- }
-}
-
int Generator::skipAtoms(const Atom *atom, Atom::Type type) const
{
int skipAhead = 0;
diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h
index 8e8eed8..44f56e2 100644
--- a/tools/qdoc3/generator.h
+++ b/tools/qdoc3/generator.h
@@ -101,7 +101,7 @@ class Generator
const Node *relative,
CodeMarker *marker,
const QString& qmlName);
- virtual void generateQmlInherits(const QDeclarativeClassNode* cn,
+ virtual void generateQmlInherits(const QmlClassNode* cn,
CodeMarker* marker);
#endif
virtual void generateBody(const Node *node, CodeMarker *marker);
@@ -169,13 +169,6 @@ class Generator
const QList<RelatedClass> &classes,
CodeMarker *marker);
- protected:
- void appendSortedNames(Text& text,
- const Node* base,
- const NodeList& subs,
- CodeMarker *marker);
-
- private:
QString amp;
QString lt;
QString gt;
diff --git a/tools/qdoc3/helpprojectwriter.cpp b/tools/qdoc3/helpprojectwriter.cpp
index 628fd0f..2189e02 100644
--- a/tools/qdoc3/helpprojectwriter.cpp
+++ b/tools/qdoc3/helpprojectwriter.cpp
@@ -127,7 +127,7 @@ void HelpProjectWriter::readSelectors(SubProject &subproject, const QStringList
subTypeHash["page"] = Node::Page;
subTypeHash["externalpage"] = Node::ExternalPage;
#ifdef QDOC_QML
- subTypeHash["qmlclass"] = Node::QDeclarativeClass;
+ subTypeHash["qmlclass"] = Node::QmlClass;
#endif
QSet<Node::SubType> allSubTypes = QSet<Node::SubType>::fromList(subTypeHash.values());
@@ -188,8 +188,8 @@ QStringList HelpProjectWriter::keywordDetails(const Node *node) const
} else if (node->type() == Node::Fake) {
const FakeNode *fake = static_cast<const FakeNode *>(node);
#ifdef QDOC_QML
- if (fake->subType() == Node::QDeclarativeClass) {
- details << (QDeclarativeClassNode::qmlOnly ? fake->name() : fake->fullTitle());
+ if (fake->subType() == Node::QmlClass) {
+ details << (QmlClassNode::qmlOnly ? fake->name() : fake->fullTitle());
details << "QML." + fake->name();
} else
#endif
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 7db5828..e767460 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -73,7 +73,6 @@ QString HtmlGenerator::sinceTitles[] =
" New Typedefs",
" New Properties",
" New Variables",
- " New QML Elements",
" New Qml Properties",
" New Qml Signals",
" New Qml Methods",
@@ -688,8 +687,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
nsmap = newSinceMaps.find(atom->string());
NewClassMaps::const_iterator ncmap;
ncmap = newClassMaps.find(atom->string());
- NewClassMaps::const_iterator nqcmap;
- nqcmap = newQmlClassMaps.find(atom->string());
if ((nsmap != newSinceMaps.constEnd()) && !nsmap.value().isEmpty()) {
QList<Section> sections;
QList<Section>::ConstIterator s;
@@ -700,10 +697,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
while (n != nsmap.value().constEnd()) {
const Node* node = n.value();
switch (node->type()) {
- case Node::Fake:
- if (node->subType() == Node::QDeclarativeClass)
- sections[QDeclarativeClass].appendMember((Node*)node);
- break;
case Node::Namespace:
sections[Namespace].appendMember((Node*)node);
break;
@@ -745,14 +738,14 @@ int HtmlGenerator::generateAtom(const Atom *atom,
case Node::Variable:
sections[Variable].appendMember((Node*)node);
break;
- case Node::QDeclarativeProperty:
- sections[QDeclarativeProperty].appendMember((Node*)node);
+ case Node::QmlProperty:
+ sections[QmlProperty].appendMember((Node*)node);
break;
- case Node::QDeclarativeSignal:
- sections[QDeclarativeSignal].appendMember((Node*)node);
+ case Node::QmlSignal:
+ sections[QmlSignal].appendMember((Node*)node);
break;
- case Node::QDeclarativeMethod:
- sections[QDeclarativeMethod].appendMember((Node*)node);
+ case Node::QmlMethod:
+ sections[QmlMethod].appendMember((Node*)node);
break;
default:
break;
@@ -789,8 +782,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<h3>" << protectEnc((*s).name) << "</h3>\n";
if (idx == Class)
generateCompactList(0, marker, ncmap.value(), QString("Q"));
- else if (idx == QDeclarativeClass)
- generateCompactList(0, marker, nqcmap.value(), QString("Q"));
else if (idx == MemberFunction) {
ParentMaps parentmaps;
ParentMaps::iterator pmap;
@@ -1190,7 +1181,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
<< "</code></b></font>";
break;
#ifdef QDOC_QML
- case Atom::QDeclarativeText:
+ case Atom::QmlText:
case Atom::EndQmlText:
// don't do anything with these. They are just tags.
break;
@@ -1453,7 +1444,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
subTitleSize = SmallSubTitle;
htmlTitle += " (" + fake->subTitle() + ")";
}
- else if (fake->subType() == Node::QDeclarativeBasicType) {
+ else if (fake->subType() == Node::QmlBasicType) {
fullTitle = "QML Basic Type: " + fullTitle;
htmlTitle = fullTitle;
}
@@ -1527,8 +1518,8 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
}
}
#ifdef QDOC_QML
- else if (fake->subType() == Node::QDeclarativeClass) {
- const QDeclarativeClassNode* qml_cn = static_cast<const QDeclarativeClassNode*>(fake);
+ else if (fake->subType() == Node::QmlClass) {
+ const QmlClassNode* qml_cn = static_cast<const QmlClassNode*>(fake);
const ClassNode* cn = qml_cn->classNode();
generateQmlInherits(qml_cn, marker);
generateQmlInstantiates(qml_cn, marker);
@@ -2341,11 +2332,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
out() << "<a href=\""
<< linkForNode(it.value(), relative)
<< "\">";
- QStringList pieces;
- if (it.value()->subType() == Node::QDeclarativeClass)
- pieces << it.value()->name();
- else
- pieces = fullName(it.value(), relative, marker).split("::");
+ QStringList pieces = fullName(it.value(), relative, marker).split("::");
out() << protectEnc(pieces.last());
out() << "</a>";
if (pieces.size() > 1) {
@@ -3507,18 +3494,18 @@ QString HtmlGenerator::refForNode(const Node *node)
break;
#ifdef QDOC_QML
case Node::Fake:
- if (node->subType() != Node::QDeclarativePropertyGroup)
+ if (node->subType() != Node::QmlPropertyGroup)
break;
- case Node::QDeclarativeProperty:
+ case Node::QmlProperty:
#endif
case Node::Property:
ref = node->name() + "-prop";
break;
#ifdef QDOC_QML
- case Node::QDeclarativeSignal:
+ case Node::QmlSignal:
ref = node->name() + "-signal";
break;
- case Node::QDeclarativeMethod:
+ case Node::QmlMethod:
ref = node->name() + "-method";
break;
#endif
@@ -3555,7 +3542,7 @@ QString HtmlGenerator::linkForNode(const Node *node, const Node *relative)
#endif
link += fn;
- if (!node->isInnerNode() || node->subType() == Node::QDeclarativePropertyGroup) {
+ if (!node->isInnerNode() || node->subType() == Node::QmlPropertyGroup) {
ref = refForNode(node);
if (relative && fn == fileName(relative) && ref == refForNode(relative))
return QString();
@@ -3736,9 +3723,6 @@ void HtmlGenerator::findAllSince(const InnerNode *node)
NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
if (ncmap == newClassMaps.end())
ncmap = newClassMaps.insert(sinceVersion,NodeMap());
- NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
- if (nqcmap == newQmlClassMaps.end())
- nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
if ((*child)->type() == Node::Function) {
FunctionNode *func = static_cast<FunctionNode *>(*child);
@@ -3758,15 +3742,6 @@ void HtmlGenerator::findAllSince(const InnerNode *node)
nsmap.value().insert(className,(*child));
ncmap.value().insert(className,(*child));
}
- else if ((*child)->subType() == Node::QDeclarativeClass) {
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
- nsmap.value().insert(className,(*child));
- nqcmap.value().insert(className,(*child));
- }
}
else {
QString name = (*child)->name();
@@ -3865,9 +3840,9 @@ void HtmlGenerator::findAllQmlClasses(const InnerNode *node)
while (c != node->childNodes().constEnd()) {
if ((*c)->type() == Node::Fake) {
const FakeNode* fakeNode = static_cast<const FakeNode *>(*c);
- if (fakeNode->subType() == Node::QDeclarativeClass) {
- const QDeclarativeClassNode* qmlNode =
- static_cast<const QDeclarativeClassNode*>(fakeNode);
+ if (fakeNode->subType() == Node::QmlClass) {
+ const QmlClassNode* qmlNode =
+ static_cast<const QmlClassNode*>(fakeNode);
const Node* n = qmlNode->classNode();
}
qmlClasses.insert(fakeNode->name(),*c);
@@ -4203,7 +4178,7 @@ void HtmlGenerator::generateQmlSummary(const Section& section,
NodeList::ConstIterator m;
int count = section.members.size();
bool twoColumn = false;
- if (section.members.first()->type() == Node::QDeclarativeProperty) {
+ if (section.members.first()->type() == Node::QmlProperty) {
twoColumn = (count >= 5);
}
if (twoColumn)
@@ -4237,18 +4212,18 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
const InnerNode *relative,
CodeMarker *marker)
{
- const QDeclarativePropertyNode* qpn = 0;
+ const QmlPropertyNode* qpn = 0;
generateMacRef(node, marker);
out() << "<div class=\"qmlitem\">";
- if (node->subType() == Node::QDeclarativePropertyGroup) {
- const QDeclarativePropGroupNode* qpgn = static_cast<const QDeclarativePropGroupNode*>(node);
+ if (node->subType() == Node::QmlPropertyGroup) {
+ const QmlPropGroupNode* qpgn = static_cast<const QmlPropGroupNode*>(node);
NodeList::ConstIterator p = qpgn->childNodes().begin();
out() << "<div class=\"qmlproto\">";
out() << "<table width=\"100%\" class=\"qmlname\">";
while (p != qpgn->childNodes().end()) {
- if ((*p)->type() == Node::QDeclarativeProperty) {
- qpn = static_cast<const QDeclarativePropertyNode*>(*p);
+ if ((*p)->type() == Node::QmlProperty) {
+ qpn = static_cast<const QmlPropertyNode*>(*p);
out() << "<tr><td>";
out() << "<a name=\"" + refForNode(qpn) + "\"></a>";
if (!qpn->isWritable())
@@ -4270,7 +4245,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
out() << "</table>";
out() << "</div>";
}
- else if (node->type() == Node::QDeclarativeSignal) {
+ else if (node->type() == Node::QmlSignal) {
const FunctionNode* qsn = static_cast<const FunctionNode*>(node);
out() << "<div class=\"qmlproto\">";
out() << "<table class=\"qmlname\">";
@@ -4282,7 +4257,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
out() << "</table>";
out() << "</div>";
}
- else if (node->type() == Node::QDeclarativeMethod) {
+ else if (node->type() == Node::QmlMethod) {
const FunctionNode* qmn = static_cast<const FunctionNode*>(node);
out() << "<div class=\"qmlproto\">";
out() << "<table class=\"qmlname\">";
@@ -4307,7 +4282,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
Output the "Inherits" line for the QML element,
if there should be one.
*/
-void HtmlGenerator::generateQmlInherits(const QDeclarativeClassNode* cn,
+void HtmlGenerator::generateQmlInherits(const QmlClassNode* cn,
CodeMarker* marker)
{
if (cn && !cn->links().empty()) {
@@ -4316,8 +4291,8 @@ void HtmlGenerator::generateQmlInherits(const QDeclarativeClassNode* cn,
linkPair = cn->links()[Node::InheritsLink];
QStringList strList(linkPair.first);
const Node* n = myTree->findNode(strList,Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
- const QDeclarativeClassNode* qcn = static_cast<const QDeclarativeClassNode*>(n);
+ if (n && n->subType() == Node::QmlClass) {
+ const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
out() << "<p style=\"text-align: center\">";
Text text;
text << "[Inherits ";
@@ -4337,30 +4312,55 @@ void HtmlGenerator::generateQmlInherits(const QDeclarativeClassNode* cn,
Output the "Inherit by" list for the QML element,
if it is inherited by any other elements.
*/
-void HtmlGenerator::generateQmlInheritedBy(const QDeclarativeClassNode* cn,
+void HtmlGenerator::generateQmlInheritedBy(const QmlClassNode* cn,
CodeMarker* marker)
{
if (cn) {
- NodeList subs;
- QDeclarativeClassNode::subclasses(cn->name(),subs);
+ QStringList subs;
+ QmlClassNode::subclasses(cn->name(),subs);
if (!subs.isEmpty()) {
+ subs.sort();
Text text;
text << Atom::ParaLeft << "Inherited by ";
- appendSortedNames(text,cn,subs,marker);
+ for (int i = 0; i < subs.size(); ++i) {
+ text << subs.at(i);
+ text << separator(i, subs.size());
+ }
text << Atom::ParaRight;
generateText(text, cn, marker);
}
+#if 0
+ if (cn->links().contains(Node::InheritsLink)) {
+ QPair<QString,QString> linkPair;
+ linkPair = cn->links()[Node::InheritsLink];
+ QStringList strList(linkPair.first);
+ const Node* n = myTree->findNode(strList,Node::Fake);
+ if (n && n->subType() == Node::QmlClass) {
+ const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
+ out() << "<p style=\"text-align: center\">";
+ Text text;
+ text << "[Inherits ";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, linkPair.second);
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << "]";
+ generateText(text, cn, marker);
+ out() << "</p>";
+ }
+ }
+#endif
}
}
/*!
- Output the "[Xxx instantiates the C++ class QDeclarativeXxx]"
+ Output the "[Xxx instantiates the C++ class QmlGraphicsXxx]"
line for the QML element, if there should be one.
If there is no class node, or if the class node status
is set to Node::Internal, do nothing.
*/
-void HtmlGenerator::generateQmlInstantiates(const QDeclarativeClassNode* qcn,
+void HtmlGenerator::generateQmlInstantiates(const QmlClassNode* qcn,
CodeMarker* marker)
{
const ClassNode* cn = qcn->classNode();
@@ -4384,7 +4384,7 @@ void HtmlGenerator::generateQmlInstantiates(const QDeclarativeClassNode* qcn,
}
/*!
- Output the "[QDeclarativeXxx is instantiated by QML element Xxx]"
+ Output the "[QmlGraphicsXxx is instantiated by QML element Xxx]"
line for the class, if there should be one.
If there is no QML element, or if the class node status
@@ -4395,7 +4395,7 @@ void HtmlGenerator::generateInstantiatedBy(const ClassNode* cn,
{
if (cn && cn->status() != Node::Internal && !cn->qmlElement().isEmpty()) {
const Node* n = myTree->root()->findNode(cn->qmlElement(),Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
+ if (n && n->subType() == Node::QmlClass) {
out() << "<p style=\"text-align: center\">";
Text text;
text << "[";
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 42c94cd..551bead 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -90,10 +90,9 @@ class HtmlGenerator : public PageGenerator
Typedef,
Property,
Variable,
- QDeclarativeClass,
- QDeclarativeProperty,
- QDeclarativeSignal,
- QDeclarativeMethod,
+ QmlProperty,
+ QmlSignal,
+ QmlMethod,
LastSinceType
};
@@ -185,9 +184,9 @@ class HtmlGenerator : public PageGenerator
void generateDetailedQmlMember(const Node *node,
const InnerNode *relative,
CodeMarker *marker);
- void generateQmlInherits(const QDeclarativeClassNode* cn, CodeMarker* marker);
- void generateQmlInheritedBy(const QDeclarativeClassNode* cn, CodeMarker* marker);
- void generateQmlInstantiates(const QDeclarativeClassNode* qcn, CodeMarker* marker);
+ void generateQmlInherits(const QmlClassNode* cn, CodeMarker* marker);
+ void generateQmlInheritedBy(const QmlClassNode* cn, CodeMarker* marker);
+ void generateQmlInstantiates(const QmlClassNode* qcn, CodeMarker* marker);
void generateInstantiatedBy(const ClassNode* cn, CodeMarker* marker);
#endif
#ifdef QDOC_NAME_ALIGNMENT
@@ -327,7 +326,6 @@ class HtmlGenerator : public PageGenerator
NewSinceMaps newSinceMaps;
static QString sinceTitles[];
NewClassMaps newClassMaps;
- NewClassMaps newQmlClassMaps;
static int id;
};
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 0ceda39..4ddcfb1 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -580,7 +580,7 @@ bool InnerNode::isSameSignature(const FunctionNode *f1, const FunctionNode *f2)
void InnerNode::addChild(Node *child)
{
children.append(child);
- if ((child->type() == Function) || (child->type() == QDeclarativeMethod)) {
+ if ((child->type() == Function) || (child->type() == QmlMethod)) {
FunctionNode *func = (FunctionNode *) child;
if (!primaryFunctionMap.contains(func->name())) {
primaryFunctionMap.insert(func->name(), func);
@@ -806,8 +806,8 @@ FakeNode::FakeNode(InnerNode *parent, const QString& name, SubType subtype)
case Group:
setPageType(ArticlePage);
break;
- case QDeclarativeClass:
- case QDeclarativeBasicType:
+ case QmlClass:
+ case QmlBasicType:
setPageType(ApiPage);
break;
case Example:
@@ -1256,20 +1256,20 @@ bool TargetNode::isInnerNode() const
}
#ifdef QDOC_QML
-bool QDeclarativeClassNode::qmlOnly = false;
-QMultiMap<QString,Node*> QDeclarativeClassNode::inheritedBy;
+bool QmlClassNode::qmlOnly = false;
+QMultiMap<QString,QString> QmlClassNode::inheritedBy;
/*!
Constructs a Qml class node (i.e. a Fake node with the
- subtype QDeclarativeClass. The new node has the given \a parent
+ subtype QmlClass. The new node has the given \a parent
and \a name and is associated with the C++ class node
specified by \a cn which may be null if the the Qml
class node is not associated with a C++ class node.
*/
-QDeclarativeClassNode::QDeclarativeClassNode(InnerNode *parent,
+QmlClassNode::QmlClassNode(InnerNode *parent,
const QString& name,
const ClassNode* cn)
- : FakeNode(parent, name, QDeclarativeClass), cnode(cn)
+ : FakeNode(parent, name, QmlClass), cnode(cn)
{
setTitle((qmlOnly ? "" : "QML ") + name + " Element Reference");
}
@@ -1280,7 +1280,7 @@ QDeclarativeClassNode::QDeclarativeClassNode(InnerNode *parent,
But not yet. Still testing.
*/
-QString QDeclarativeClassNode::fileBase() const
+QString QmlClassNode::fileBase() const
{
#if 0
if (Node::fileBase() == "item")
@@ -1294,15 +1294,15 @@ QString QDeclarativeClassNode::fileBase() const
Record the fact that QML class \a base is inherited by
QML class \a sub.
*/
-void QDeclarativeClassNode::addInheritedBy(const QString& base, Node* sub)
+void QmlClassNode::addInheritedBy(const QString& base, const QString& sub)
{
inheritedBy.insert(base,sub);
}
/*!
- Loads the list \a subs with the nodes of all the subclasses of \a base.
+ Loads the list \a subs with the names of all the subclasses of \a base.
*/
-void QDeclarativeClassNode::subclasses(const QString& base, NodeList& subs)
+void QmlClassNode::subclasses(const QString& base, QStringList& subs)
{
subs.clear();
if (inheritedBy.contains(base))
@@ -1311,24 +1311,24 @@ void QDeclarativeClassNode::subclasses(const QString& base, NodeList& subs)
/*!
Constructs a Qml basic type node (i.e. a Fake node with
- the subtype QDeclarativeBasicType. The new node has the given
+ the subtype QmlBasicType. The new node has the given
\a parent and \a name.
*/
-QDeclarativeBasicTypeNode::QDeclarativeBasicTypeNode(InnerNode *parent,
+QmlBasicTypeNode::QmlBasicTypeNode(InnerNode *parent,
const QString& name)
- : FakeNode(parent, name, QDeclarativeBasicType)
+ : FakeNode(parent, name, QmlBasicType)
{
setTitle(name);
}
/*!
Constructor for the Qml property group node. \a parent is
- always a QDeclarativeClassNode.
+ always a QmlClassNode.
*/
-QDeclarativePropGroupNode::QDeclarativePropGroupNode(QDeclarativeClassNode* parent,
+QmlPropGroupNode::QmlPropGroupNode(QmlClassNode* parent,
const QString& name,
bool attached)
- : FakeNode(parent, name, QDeclarativePropertyGroup),
+ : FakeNode(parent, name, QmlPropertyGroup),
isdefault(false),
att(attached)
{
@@ -1338,11 +1338,11 @@ QDeclarativePropGroupNode::QDeclarativePropGroupNode(QDeclarativeClassNode* pare
/*!
Constructor for the QML property node.
*/
-QDeclarativePropertyNode::QDeclarativePropertyNode(QDeclarativePropGroupNode *parent,
+QmlPropertyNode::QmlPropertyNode(QmlPropGroupNode *parent,
const QString& name,
const QString& type,
bool attached)
- : LeafNode(QDeclarativeProperty, parent, name),
+ : LeafNode(QmlProperty, parent, name),
dt(type),
sto(Trool_Default),
des(Trool_Default),
@@ -1354,7 +1354,7 @@ QDeclarativePropertyNode::QDeclarativePropertyNode(QDeclarativePropGroupNode *pa
/*!
I don't know what this is.
*/
-QDeclarativePropertyNode::Trool QDeclarativePropertyNode::toTrool(bool boolean)
+QmlPropertyNode::Trool QmlPropertyNode::toTrool(bool boolean)
{
return boolean ? Trool_True : Trool_False;
}
@@ -1362,7 +1362,7 @@ QDeclarativePropertyNode::Trool QDeclarativePropertyNode::toTrool(bool boolean)
/*!
I don't know what this is either.
*/
-bool QDeclarativePropertyNode::fromTrool(Trool troolean, bool defaultValue)
+bool QmlPropertyNode::fromTrool(Trool troolean, bool defaultValue)
{
switch (troolean) {
case Trool_True:
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 5300efc..de26025 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -74,9 +74,9 @@ class Node
Variable,
#ifdef QDOC_QML
Target,
- QDeclarativeProperty,
- QDeclarativeSignal,
- QDeclarativeMethod,
+ QmlProperty,
+ QmlSignal,
+ QmlMethod,
LastType
#else
Target,
@@ -95,9 +95,9 @@ class Node
Page,
#ifdef QDOC_QML
ExternalPage,
- QDeclarativeClass,
- QDeclarativePropertyGroup,
- QDeclarativeBasicType
+ QmlClass,
+ QmlPropertyGroup,
+ QmlBasicType
#else
ExternalPage
#endif
@@ -373,42 +373,42 @@ class FakeNode : public InnerNode
};
#ifdef QDOC_QML
-class QDeclarativeClassNode : public FakeNode
+class QmlClassNode : public FakeNode
{
public:
- QDeclarativeClassNode(InnerNode *parent,
+ QmlClassNode(InnerNode *parent,
const QString& name,
const ClassNode* cn);
- virtual ~QDeclarativeClassNode() { }
+ virtual ~QmlClassNode() { }
const ClassNode* classNode() const { return cnode; }
virtual QString fileBase() const;
- static void addInheritedBy(const QString& base, Node* sub);
- static void subclasses(const QString& base, NodeList& subs);
+ static void addInheritedBy(const QString& base, const QString& sub);
+ static void subclasses(const QString& base, QStringList& subs);
public:
static bool qmlOnly;
- static QMultiMap<QString,Node*> inheritedBy;
+ static QMultiMap<QString,QString> inheritedBy;
private:
const ClassNode* cnode;
};
-class QDeclarativeBasicTypeNode : public FakeNode
+class QmlBasicTypeNode : public FakeNode
{
public:
- QDeclarativeBasicTypeNode(InnerNode *parent,
+ QmlBasicTypeNode(InnerNode *parent,
const QString& name);
- virtual ~QDeclarativeBasicTypeNode() { }
+ virtual ~QmlBasicTypeNode() { }
};
-class QDeclarativePropGroupNode : public FakeNode
+class QmlPropGroupNode : public FakeNode
{
public:
- QDeclarativePropGroupNode(QDeclarativeClassNode* parent,
+ QmlPropGroupNode(QmlClassNode* parent,
const QString& name,
bool attached);
- virtual ~QDeclarativePropGroupNode() { }
+ virtual ~QmlPropGroupNode() { }
const QString& element() const { return parent()->name(); }
void setDefault() { isdefault = true; }
@@ -420,14 +420,14 @@ class QDeclarativePropGroupNode : public FakeNode
bool att;
};
-class QDeclarativePropertyNode : public LeafNode
+class QmlPropertyNode : public LeafNode
{
public:
- QDeclarativePropertyNode(QDeclarativePropGroupNode* parent,
+ QmlPropertyNode(QmlPropGroupNode* parent,
const QString& name,
const QString& type,
bool attached);
- virtual ~QDeclarativePropertyNode() { }
+ virtual ~QmlPropertyNode() { }
void setDataType(const QString& dataType) { dt = dataType; }
void setStored(bool stored) { sto = toTrool(stored); }
@@ -441,7 +441,7 @@ class QDeclarativePropertyNode : public LeafNode
bool isWritable() const { return fromTrool(wri,true); }
bool isAttached() const { return att; }
- const QString& element() const { return static_cast<QDeclarativePropGroupNode*>(parent())->element(); }
+ const QString& element() const { return static_cast<QmlPropGroupNode*>(parent())->element(); }
private:
enum Trool { Trool_True, Trool_False, Trool_Default };
diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp
index f129d3a..2cad9ed 100644
--- a/tools/qdoc3/pagegenerator.cpp
+++ b/tools/qdoc3/pagegenerator.cpp
@@ -84,7 +84,7 @@ QString PageGenerator::fileBase(const Node *node) const
else if (!node->isInnerNode())
node = node->parent();
#ifdef QDOC_QML
- if (node->subType() == Node::QDeclarativePropertyGroup) {
+ if (node->subType() == Node::QmlPropertyGroup) {
node = node->parent();
}
#endif
@@ -104,8 +104,8 @@ QString PageGenerator::fileBase(const Node *node) const
we prepend "qml-" to the file name of QML element doc
files.
*/
- if ((p->subType() == Node::QDeclarativeClass) ||
- (p->subType() == Node::QDeclarativeBasicType)) {
+ if ((p->subType() == Node::QmlClass) ||
+ (p->subType() == Node::QmlBasicType)) {
base.prepend("qml-");
}
#endif
@@ -207,7 +207,7 @@ void PageGenerator::generateInnerNode(const InnerNode *node,
if (fakeNode->subType() == Node::ExternalPage)
return;
#ifdef QDOC_QML
- if (fakeNode->subType() == Node::QDeclarativePropertyGroup)
+ if (fakeNode->subType() == Node::QmlPropertyGroup)
return;
#endif
if (fakeNode->subType() == Node::Page) {
diff --git a/tools/qdoc3/test/qt_zh_CN.qdocconf b/tools/qdoc3/test/qt_zh_CN.qdocconf
new file mode 100644
index 0000000..8c7e64a
--- /dev/null
+++ b/tools/qdoc3/test/qt_zh_CN.qdocconf
@@ -0,0 +1,86 @@
+include(compat.qdocconf)
+include(macros.qdocconf)
+include(qt-cpp-ignore.qdocconf)
+include(qt-html-templates_zh_CN.qdocconf)
+include(qt-defines.qdocconf)
+
+project = Qt
+versionsym =
+version = %VERSION%
+description = Qt Reference Documentation
+url = http://qt.nokia.com/doc/zh_CN/4.7
+
+sourceencoding = UTF-8
+outputencoding = UTF-8
+naturallanguage = zh-Hans
+
+indexes = $QTDIR/doc/html/qt.index
+
+qhp.projects = Qt
+
+qhp.Qt.file = qt.qhp
+qhp.Qt.namespace = com.trolltech.qt.470
+qhp.Qt.virtualFolder = qdoc
+qhp.Qt.title = 教程
+qhp.Qt.indexTitle = 教程
+qhp.Qt.selectors = fake:example
+
+qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc zh_CN
+qhp.Qt.customFilters.Qt.name = Qt 4.7.0
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = classic.css \
+ images/qt-logo.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ images/stylesheet-coffee-plastique.png
+
+language = Cpp
+
+sourcedirs = $QTDIR/doc/src/zh_CN
+
+excludedirs = $QTDIR/src/3rdparty/clucene \
+ $QTDIR/src/3rdparty/des \
+ $QTDIR/src/3rdparty/freetype \
+ $QTDIR/src/3rdparty/harfbuzz \
+ $QTDIR/src/3rdparty/kdebase \
+ $QTDIR/src/3rdparty/libjpeg \
+ $QTDIR/src/3rdparty/libmng \
+ $QTDIR/src/3rdparty/libpng \
+ $QTDIR/src/3rdparty/libtiff \
+ $QTDIR/src/3rdparty/md4 \
+ $QTDIR/src/3rdparty/md5 \
+ $QTDIR/src/3rdparty/patches \
+ $QTDIR/src/3rdparty/sha1 \
+ $QTDIR/src/3rdparty/sqlite \
+ $QTDIR/src/3rdparty/webkit/JavaScriptCore \
+ $QTDIR/src/3rdparty/webkit/WebCore \
+ $QTDIR/src/3rdparty/wintab \
+ $QTDIR/src/3rdparty/zlib \
+ $QTDIR/doc/src/snippets \
+ $QTDIR/src/3rdparty/phonon/gstreamer \
+ $QTDIR/src/3rdparty/phonon/ds9 \
+ $QTDIR/src/3rdparty/phonon/qt7 \
+ $QTDIR/src/3rdparty/phonon/mmf \
+ $QTDIR/src/3rdparty/phonon/waveout
+
+sources.fileextensions = "*.cpp *.qdoc *.mm"
+examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp"
+examples.imageextensions = "*.png"
+
+exampledirs = $QTDIR/doc/src \
+ $QTDIR/examples \
+ $QTDIR/examples/tutorials \
+ $QTDIR \
+ $QTDIR/qmake/examples \
+ $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
+imagedirs = $QTDIR/doc/src/images \
+ $QTDIR/examples
+outputdir = $QTDIR/doc/html_zh_CN
+tagfile = $QTDIR/doc/html_zh_CN/qt.tags
+base = file:$QTDIR/doc/html_zh_CN
+
+HTML.generatemacrefs = "true"
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 96af8d6..6c2502d 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -1914,8 +1914,8 @@ QString Tree::fullDocumentLocation(const Node *node) const
}
else if (node->type() == Node::Fake) {
#ifdef QDOC_QML
- if ((node->subType() == Node::QDeclarativeClass) ||
- (node->subType() == Node::QDeclarativeBasicType))
+ if ((node->subType() == Node::QmlClass) ||
+ (node->subType() == Node::QmlBasicType))
return "qml-" + node->fileBase() + ".html";
else
#endif
diff --git a/util/unicode/data/DerivedNormalizationProps.txt b/util/unicode/data/DerivedNormalizationProps.txt
new file mode 100644
index 0000000..fba1fd1
--- /dev/null
+++ b/util/unicode/data/DerivedNormalizationProps.txt
@@ -0,0 +1,2650 @@
+# DerivedNormalizationProps-5.0.0.txt
+# Date: 2006-06-07, 17:42:44 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Derived Property: FC_NFKC_Closure
+# Generated from computing: b = NFKC(Fold(a)); c = NFKC(Fold(b));
+# Then if (c != b) add the mapping from a to c to the set of
+# mappings that constitute the FC_NFKC_Closure list
+# Uses the full case folding from CaseFolding.txt, without the T option.
+
+037A ; FC_NFKC; 0020 03B9 # Lm GREEK YPOGEGRAMMENI
+03D2 ; FC_NFKC; 03C5 # L& GREEK UPSILON WITH HOOK SYMBOL
+03D3 ; FC_NFKC; 03CD # L& GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4 ; FC_NFKC; 03CB # L& GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03F2 ; FC_NFKC; 03C3 # L& GREEK LUNATE SIGMA SYMBOL
+03F9 ; FC_NFKC; 03C3 # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+1D2C ; FC_NFKC; 0061 # Lm MODIFIER LETTER CAPITAL A
+1D2D ; FC_NFKC; 00E6 # Lm MODIFIER LETTER CAPITAL AE
+1D2E ; FC_NFKC; 0062 # Lm MODIFIER LETTER CAPITAL B
+1D30 ; FC_NFKC; 0064 # Lm MODIFIER LETTER CAPITAL D
+1D31 ; FC_NFKC; 0065 # Lm MODIFIER LETTER CAPITAL E
+1D32 ; FC_NFKC; 01DD # Lm MODIFIER LETTER CAPITAL REVERSED E
+1D33 ; FC_NFKC; 0067 # Lm MODIFIER LETTER CAPITAL G
+1D34 ; FC_NFKC; 0068 # Lm MODIFIER LETTER CAPITAL H
+1D35 ; FC_NFKC; 0069 # Lm MODIFIER LETTER CAPITAL I
+1D36 ; FC_NFKC; 006A # Lm MODIFIER LETTER CAPITAL J
+1D37 ; FC_NFKC; 006B # Lm MODIFIER LETTER CAPITAL K
+1D38 ; FC_NFKC; 006C # Lm MODIFIER LETTER CAPITAL L
+1D39 ; FC_NFKC; 006D # Lm MODIFIER LETTER CAPITAL M
+1D3A ; FC_NFKC; 006E # Lm MODIFIER LETTER CAPITAL N
+1D3C ; FC_NFKC; 006F # Lm MODIFIER LETTER CAPITAL O
+1D3D ; FC_NFKC; 0223 # Lm MODIFIER LETTER CAPITAL OU
+1D3E ; FC_NFKC; 0070 # Lm MODIFIER LETTER CAPITAL P
+1D3F ; FC_NFKC; 0072 # Lm MODIFIER LETTER CAPITAL R
+1D40 ; FC_NFKC; 0074 # Lm MODIFIER LETTER CAPITAL T
+1D41 ; FC_NFKC; 0075 # Lm MODIFIER LETTER CAPITAL U
+1D42 ; FC_NFKC; 0077 # Lm MODIFIER LETTER CAPITAL W
+20A8 ; FC_NFKC; 0072 0073 # Sc RUPEE SIGN
+2102 ; FC_NFKC; 0063 # L& DOUBLE-STRUCK CAPITAL C
+2103 ; FC_NFKC; 00B0 0063 # So DEGREE CELSIUS
+2107 ; FC_NFKC; 025B # L& EULER CONSTANT
+2109 ; FC_NFKC; 00B0 0066 # So DEGREE FAHRENHEIT
+210B ; FC_NFKC; 0068 # L& SCRIPT CAPITAL H
+210C ; FC_NFKC; 0068 # L& BLACK-LETTER CAPITAL H
+210D ; FC_NFKC; 0068 # L& DOUBLE-STRUCK CAPITAL H
+2110 ; FC_NFKC; 0069 # L& SCRIPT CAPITAL I
+2111 ; FC_NFKC; 0069 # L& BLACK-LETTER CAPITAL I
+2112 ; FC_NFKC; 006C # L& SCRIPT CAPITAL L
+2115 ; FC_NFKC; 006E # L& DOUBLE-STRUCK CAPITAL N
+2116 ; FC_NFKC; 006E 006F # So NUMERO SIGN
+2119 ; FC_NFKC; 0070 # L& DOUBLE-STRUCK CAPITAL P
+211A ; FC_NFKC; 0071 # L& DOUBLE-STRUCK CAPITAL Q
+211B ; FC_NFKC; 0072 # L& SCRIPT CAPITAL R
+211C ; FC_NFKC; 0072 # L& BLACK-LETTER CAPITAL R
+211D ; FC_NFKC; 0072 # L& DOUBLE-STRUCK CAPITAL R
+2120 ; FC_NFKC; 0073 006D # So SERVICE MARK
+2121 ; FC_NFKC; 0074 0065 006C # So TELEPHONE SIGN
+2122 ; FC_NFKC; 0074 006D # So TRADE MARK SIGN
+2124 ; FC_NFKC; 007A # L& DOUBLE-STRUCK CAPITAL Z
+2128 ; FC_NFKC; 007A # L& BLACK-LETTER CAPITAL Z
+212C ; FC_NFKC; 0062 # L& SCRIPT CAPITAL B
+212D ; FC_NFKC; 0063 # L& BLACK-LETTER CAPITAL C
+2130 ; FC_NFKC; 0065 # L& SCRIPT CAPITAL E
+2131 ; FC_NFKC; 0066 # L& SCRIPT CAPITAL F
+2133 ; FC_NFKC; 006D # L& SCRIPT CAPITAL M
+213B ; FC_NFKC; 0066 0061 0078 # So FACSIMILE SIGN
+213E ; FC_NFKC; 03B3 # L& DOUBLE-STRUCK CAPITAL GAMMA
+213F ; FC_NFKC; 03C0 # L& DOUBLE-STRUCK CAPITAL PI
+2145 ; FC_NFKC; 0064 # L& DOUBLE-STRUCK ITALIC CAPITAL D
+3250 ; FC_NFKC; 0070 0074 0065 # So PARTNERSHIP SIGN
+32CC ; FC_NFKC; 0068 0067 # So SQUARE HG
+32CE ; FC_NFKC; 0065 0076 # So SQUARE EV
+32CF ; FC_NFKC; 006C 0074 0064 # So LIMITED LIABILITY SIGN
+3371 ; FC_NFKC; 0068 0070 0061 # So SQUARE HPA
+3373 ; FC_NFKC; 0061 0075 # So SQUARE AU
+3375 ; FC_NFKC; 006F 0076 # So SQUARE OV
+337A ; FC_NFKC; 0069 0075 # So SQUARE IU
+3380 ; FC_NFKC; 0070 0061 # So SQUARE PA AMPS
+3381 ; FC_NFKC; 006E 0061 # So SQUARE NA
+3382 ; FC_NFKC; 03BC 0061 # So SQUARE MU A
+3383 ; FC_NFKC; 006D 0061 # So SQUARE MA
+3384 ; FC_NFKC; 006B 0061 # So SQUARE KA
+3385 ; FC_NFKC; 006B 0062 # So SQUARE KB
+3386 ; FC_NFKC; 006D 0062 # So SQUARE MB
+3387 ; FC_NFKC; 0067 0062 # So SQUARE GB
+338A ; FC_NFKC; 0070 0066 # So SQUARE PF
+338B ; FC_NFKC; 006E 0066 # So SQUARE NF
+338C ; FC_NFKC; 03BC 0066 # So SQUARE MU F
+3390 ; FC_NFKC; 0068 007A # So SQUARE HZ
+3391 ; FC_NFKC; 006B 0068 007A # So SQUARE KHZ
+3392 ; FC_NFKC; 006D 0068 007A # So SQUARE MHZ
+3393 ; FC_NFKC; 0067 0068 007A # So SQUARE GHZ
+3394 ; FC_NFKC; 0074 0068 007A # So SQUARE THZ
+33A9 ; FC_NFKC; 0070 0061 # So SQUARE PA
+33AA ; FC_NFKC; 006B 0070 0061 # So SQUARE KPA
+33AB ; FC_NFKC; 006D 0070 0061 # So SQUARE MPA
+33AC ; FC_NFKC; 0067 0070 0061 # So SQUARE GPA
+33B4 ; FC_NFKC; 0070 0076 # So SQUARE PV
+33B5 ; FC_NFKC; 006E 0076 # So SQUARE NV
+33B6 ; FC_NFKC; 03BC 0076 # So SQUARE MU V
+33B7 ; FC_NFKC; 006D 0076 # So SQUARE MV
+33B8 ; FC_NFKC; 006B 0076 # So SQUARE KV
+33B9 ; FC_NFKC; 006D 0076 # So SQUARE MV MEGA
+33BA ; FC_NFKC; 0070 0077 # So SQUARE PW
+33BB ; FC_NFKC; 006E 0077 # So SQUARE NW
+33BC ; FC_NFKC; 03BC 0077 # So SQUARE MU W
+33BD ; FC_NFKC; 006D 0077 # So SQUARE MW
+33BE ; FC_NFKC; 006B 0077 # So SQUARE KW
+33BF ; FC_NFKC; 006D 0077 # So SQUARE MW MEGA
+33C0 ; FC_NFKC; 006B 03C9 # So SQUARE K OHM
+33C1 ; FC_NFKC; 006D 03C9 # So SQUARE M OHM
+33C3 ; FC_NFKC; 0062 0071 # So SQUARE BQ
+33C6 ; FC_NFKC; 0063 2215 006B 0067 #So SQUARE C OVER KG
+33C7 ; FC_NFKC; 0063 006F 002E # So SQUARE CO
+33C8 ; FC_NFKC; 0064 0062 # So SQUARE DB
+33C9 ; FC_NFKC; 0067 0079 # So SQUARE GY
+33CB ; FC_NFKC; 0068 0070 # So SQUARE HP
+33CD ; FC_NFKC; 006B 006B # So SQUARE KK
+33CE ; FC_NFKC; 006B 006D # So SQUARE KM CAPITAL
+33D7 ; FC_NFKC; 0070 0068 # So SQUARE PH
+33D9 ; FC_NFKC; 0070 0070 006D # So SQUARE PPM
+33DA ; FC_NFKC; 0070 0072 # So SQUARE PR
+33DC ; FC_NFKC; 0073 0076 # So SQUARE SV
+33DD ; FC_NFKC; 0077 0062 # So SQUARE WB
+33DE ; FC_NFKC; 0076 2215 006D # So SQUARE V OVER M
+33DF ; FC_NFKC; 0061 2215 006D # So SQUARE A OVER M
+1D400 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD CAPITAL A
+1D401 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD CAPITAL B
+1D402 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD CAPITAL C
+1D403 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD CAPITAL D
+1D404 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD CAPITAL E
+1D405 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD CAPITAL F
+1D406 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD CAPITAL G
+1D407 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD CAPITAL H
+1D408 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD CAPITAL I
+1D409 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD CAPITAL J
+1D40A ; FC_NFKC; 006B # L& MATHEMATICAL BOLD CAPITAL K
+1D40B ; FC_NFKC; 006C # L& MATHEMATICAL BOLD CAPITAL L
+1D40C ; FC_NFKC; 006D # L& MATHEMATICAL BOLD CAPITAL M
+1D40D ; FC_NFKC; 006E # L& MATHEMATICAL BOLD CAPITAL N
+1D40E ; FC_NFKC; 006F # L& MATHEMATICAL BOLD CAPITAL O
+1D40F ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD CAPITAL P
+1D410 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD CAPITAL Q
+1D411 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD CAPITAL R
+1D412 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD CAPITAL S
+1D413 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD CAPITAL T
+1D414 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD CAPITAL U
+1D415 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD CAPITAL V
+1D416 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD CAPITAL W
+1D417 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD CAPITAL X
+1D418 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD CAPITAL Y
+1D419 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD CAPITAL Z
+1D434 ; FC_NFKC; 0061 # L& MATHEMATICAL ITALIC CAPITAL A
+1D435 ; FC_NFKC; 0062 # L& MATHEMATICAL ITALIC CAPITAL B
+1D436 ; FC_NFKC; 0063 # L& MATHEMATICAL ITALIC CAPITAL C
+1D437 ; FC_NFKC; 0064 # L& MATHEMATICAL ITALIC CAPITAL D
+1D438 ; FC_NFKC; 0065 # L& MATHEMATICAL ITALIC CAPITAL E
+1D439 ; FC_NFKC; 0066 # L& MATHEMATICAL ITALIC CAPITAL F
+1D43A ; FC_NFKC; 0067 # L& MATHEMATICAL ITALIC CAPITAL G
+1D43B ; FC_NFKC; 0068 # L& MATHEMATICAL ITALIC CAPITAL H
+1D43C ; FC_NFKC; 0069 # L& MATHEMATICAL ITALIC CAPITAL I
+1D43D ; FC_NFKC; 006A # L& MATHEMATICAL ITALIC CAPITAL J
+1D43E ; FC_NFKC; 006B # L& MATHEMATICAL ITALIC CAPITAL K
+1D43F ; FC_NFKC; 006C # L& MATHEMATICAL ITALIC CAPITAL L
+1D440 ; FC_NFKC; 006D # L& MATHEMATICAL ITALIC CAPITAL M
+1D441 ; FC_NFKC; 006E # L& MATHEMATICAL ITALIC CAPITAL N
+1D442 ; FC_NFKC; 006F # L& MATHEMATICAL ITALIC CAPITAL O
+1D443 ; FC_NFKC; 0070 # L& MATHEMATICAL ITALIC CAPITAL P
+1D444 ; FC_NFKC; 0071 # L& MATHEMATICAL ITALIC CAPITAL Q
+1D445 ; FC_NFKC; 0072 # L& MATHEMATICAL ITALIC CAPITAL R
+1D446 ; FC_NFKC; 0073 # L& MATHEMATICAL ITALIC CAPITAL S
+1D447 ; FC_NFKC; 0074 # L& MATHEMATICAL ITALIC CAPITAL T
+1D448 ; FC_NFKC; 0075 # L& MATHEMATICAL ITALIC CAPITAL U
+1D449 ; FC_NFKC; 0076 # L& MATHEMATICAL ITALIC CAPITAL V
+1D44A ; FC_NFKC; 0077 # L& MATHEMATICAL ITALIC CAPITAL W
+1D44B ; FC_NFKC; 0078 # L& MATHEMATICAL ITALIC CAPITAL X
+1D44C ; FC_NFKC; 0079 # L& MATHEMATICAL ITALIC CAPITAL Y
+1D44D ; FC_NFKC; 007A # L& MATHEMATICAL ITALIC CAPITAL Z
+1D468 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD ITALIC CAPITAL A
+1D469 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD ITALIC CAPITAL B
+1D46A ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD ITALIC CAPITAL C
+1D46B ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD ITALIC CAPITAL D
+1D46C ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD ITALIC CAPITAL E
+1D46D ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD ITALIC CAPITAL F
+1D46E ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD ITALIC CAPITAL G
+1D46F ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD ITALIC CAPITAL H
+1D470 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD ITALIC CAPITAL I
+1D471 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD ITALIC CAPITAL J
+1D472 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD ITALIC CAPITAL K
+1D473 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD ITALIC CAPITAL L
+1D474 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD ITALIC CAPITAL M
+1D475 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD ITALIC CAPITAL N
+1D476 ; FC_NFKC; 006F # L& MATHEMATICAL BOLD ITALIC CAPITAL O
+1D477 ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD ITALIC CAPITAL P
+1D478 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D479 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD ITALIC CAPITAL R
+1D47A ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD ITALIC CAPITAL S
+1D47B ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD ITALIC CAPITAL T
+1D47C ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD ITALIC CAPITAL U
+1D47D ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD ITALIC CAPITAL V
+1D47E ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD ITALIC CAPITAL W
+1D47F ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD ITALIC CAPITAL X
+1D480 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D481 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D49C ; FC_NFKC; 0061 # L& MATHEMATICAL SCRIPT CAPITAL A
+1D49E ; FC_NFKC; 0063 # L& MATHEMATICAL SCRIPT CAPITAL C
+1D49F ; FC_NFKC; 0064 # L& MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; FC_NFKC; 0067 # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5 ; FC_NFKC; 006A # L& MATHEMATICAL SCRIPT CAPITAL J
+1D4A6 ; FC_NFKC; 006B # L& MATHEMATICAL SCRIPT CAPITAL K
+1D4A9 ; FC_NFKC; 006E # L& MATHEMATICAL SCRIPT CAPITAL N
+1D4AA ; FC_NFKC; 006F # L& MATHEMATICAL SCRIPT CAPITAL O
+1D4AB ; FC_NFKC; 0070 # L& MATHEMATICAL SCRIPT CAPITAL P
+1D4AC ; FC_NFKC; 0071 # L& MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE ; FC_NFKC; 0073 # L& MATHEMATICAL SCRIPT CAPITAL S
+1D4AF ; FC_NFKC; 0074 # L& MATHEMATICAL SCRIPT CAPITAL T
+1D4B0 ; FC_NFKC; 0075 # L& MATHEMATICAL SCRIPT CAPITAL U
+1D4B1 ; FC_NFKC; 0076 # L& MATHEMATICAL SCRIPT CAPITAL V
+1D4B2 ; FC_NFKC; 0077 # L& MATHEMATICAL SCRIPT CAPITAL W
+1D4B3 ; FC_NFKC; 0078 # L& MATHEMATICAL SCRIPT CAPITAL X
+1D4B4 ; FC_NFKC; 0079 # L& MATHEMATICAL SCRIPT CAPITAL Y
+1D4B5 ; FC_NFKC; 007A # L& MATHEMATICAL SCRIPT CAPITAL Z
+1D4D0 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D4D1 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D4D2 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D4D3 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D4D4 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D4D5 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D4D6 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D4D7 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D4D8 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D4D9 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D4DA ; FC_NFKC; 006B # L& MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D4DB ; FC_NFKC; 006C # L& MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D4DC ; FC_NFKC; 006D # L& MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D4DD ; FC_NFKC; 006E # L& MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D4DE ; FC_NFKC; 006F # L& MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D4DF ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D4E0 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D4E1 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D4E2 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D4E3 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D4E4 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D4E5 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D4E6 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D4E7 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D4E8 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D4E9 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D504 ; FC_NFKC; 0061 # L& MATHEMATICAL FRAKTUR CAPITAL A
+1D505 ; FC_NFKC; 0062 # L& MATHEMATICAL FRAKTUR CAPITAL B
+1D507 ; FC_NFKC; 0064 # L& MATHEMATICAL FRAKTUR CAPITAL D
+1D508 ; FC_NFKC; 0065 # L& MATHEMATICAL FRAKTUR CAPITAL E
+1D509 ; FC_NFKC; 0066 # L& MATHEMATICAL FRAKTUR CAPITAL F
+1D50A ; FC_NFKC; 0067 # L& MATHEMATICAL FRAKTUR CAPITAL G
+1D50D ; FC_NFKC; 006A # L& MATHEMATICAL FRAKTUR CAPITAL J
+1D50E ; FC_NFKC; 006B # L& MATHEMATICAL FRAKTUR CAPITAL K
+1D50F ; FC_NFKC; 006C # L& MATHEMATICAL FRAKTUR CAPITAL L
+1D510 ; FC_NFKC; 006D # L& MATHEMATICAL FRAKTUR CAPITAL M
+1D511 ; FC_NFKC; 006E # L& MATHEMATICAL FRAKTUR CAPITAL N
+1D512 ; FC_NFKC; 006F # L& MATHEMATICAL FRAKTUR CAPITAL O
+1D513 ; FC_NFKC; 0070 # L& MATHEMATICAL FRAKTUR CAPITAL P
+1D514 ; FC_NFKC; 0071 # L& MATHEMATICAL FRAKTUR CAPITAL Q
+1D516 ; FC_NFKC; 0073 # L& MATHEMATICAL FRAKTUR CAPITAL S
+1D517 ; FC_NFKC; 0074 # L& MATHEMATICAL FRAKTUR CAPITAL T
+1D518 ; FC_NFKC; 0075 # L& MATHEMATICAL FRAKTUR CAPITAL U
+1D519 ; FC_NFKC; 0076 # L& MATHEMATICAL FRAKTUR CAPITAL V
+1D51A ; FC_NFKC; 0077 # L& MATHEMATICAL FRAKTUR CAPITAL W
+1D51B ; FC_NFKC; 0078 # L& MATHEMATICAL FRAKTUR CAPITAL X
+1D51C ; FC_NFKC; 0079 # L& MATHEMATICAL FRAKTUR CAPITAL Y
+1D538 ; FC_NFKC; 0061 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D539 ; FC_NFKC; 0062 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B ; FC_NFKC; 0064 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D53C ; FC_NFKC; 0065 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D53D ; FC_NFKC; 0066 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D53E ; FC_NFKC; 0067 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540 ; FC_NFKC; 0069 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D541 ; FC_NFKC; 006A # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D542 ; FC_NFKC; 006B # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D543 ; FC_NFKC; 006C # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D544 ; FC_NFKC; 006D # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; FC_NFKC; 006F # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A ; FC_NFKC; 0073 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D54B ; FC_NFKC; 0074 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D54C ; FC_NFKC; 0075 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D54D ; FC_NFKC; 0076 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D54E ; FC_NFKC; 0077 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D54F ; FC_NFKC; 0078 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D550 ; FC_NFKC; 0079 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D56C ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D56D ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D56E ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D56F ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D570 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D571 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D572 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D573 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D574 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D575 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D576 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D577 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D578 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D579 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D57A ; FC_NFKC; 006F # L& MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D57B ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D57C ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D57D ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D57E ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D57F ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D580 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D581 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D582 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D583 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D584 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D585 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5A0 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF CAPITAL A
+1D5A1 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF CAPITAL B
+1D5A2 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF CAPITAL C
+1D5A3 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF CAPITAL D
+1D5A4 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF CAPITAL E
+1D5A5 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF CAPITAL F
+1D5A6 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF CAPITAL G
+1D5A7 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF CAPITAL H
+1D5A8 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF CAPITAL I
+1D5A9 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF CAPITAL J
+1D5AA ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF CAPITAL K
+1D5AB ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF CAPITAL L
+1D5AC ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF CAPITAL M
+1D5AD ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF CAPITAL N
+1D5AE ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF CAPITAL O
+1D5AF ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF CAPITAL P
+1D5B0 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5B1 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF CAPITAL R
+1D5B2 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF CAPITAL S
+1D5B3 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF CAPITAL T
+1D5B4 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF CAPITAL U
+1D5B5 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF CAPITAL V
+1D5B6 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF CAPITAL W
+1D5B7 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF CAPITAL X
+1D5B8 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5B9 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5D4 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D5D5 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D5D6 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D5D7 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D5D8 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D5D9 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D5DA ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D5DB ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D5DC ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D5DD ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D5DE ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D5DF ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D5E0 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D5E1 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D5E2 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D5E3 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D5E4 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D5E5 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D5E6 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D5E7 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D5E8 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D5E9 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D5EA ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D5EB ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D5EC ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D5ED ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D608 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D609 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D60A ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D60B ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D60C ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D60D ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D60E ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D60F ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D610 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D611 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D612 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D613 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D614 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D615 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D616 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D617 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D618 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D619 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D61A ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D61B ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D61C ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D61D ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D61E ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D61F ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D620 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D621 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D63C ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D63D ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D63E ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D63F ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D640 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D641 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D642 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D643 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D644 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D645 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D646 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D647 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D648 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D649 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D64A ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D64B ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D64C ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D64D ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D64E ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D64F ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D650 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D651 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D652 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D653 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D654 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D655 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D670 ; FC_NFKC; 0061 # L& MATHEMATICAL MONOSPACE CAPITAL A
+1D671 ; FC_NFKC; 0062 # L& MATHEMATICAL MONOSPACE CAPITAL B
+1D672 ; FC_NFKC; 0063 # L& MATHEMATICAL MONOSPACE CAPITAL C
+1D673 ; FC_NFKC; 0064 # L& MATHEMATICAL MONOSPACE CAPITAL D
+1D674 ; FC_NFKC; 0065 # L& MATHEMATICAL MONOSPACE CAPITAL E
+1D675 ; FC_NFKC; 0066 # L& MATHEMATICAL MONOSPACE CAPITAL F
+1D676 ; FC_NFKC; 0067 # L& MATHEMATICAL MONOSPACE CAPITAL G
+1D677 ; FC_NFKC; 0068 # L& MATHEMATICAL MONOSPACE CAPITAL H
+1D678 ; FC_NFKC; 0069 # L& MATHEMATICAL MONOSPACE CAPITAL I
+1D679 ; FC_NFKC; 006A # L& MATHEMATICAL MONOSPACE CAPITAL J
+1D67A ; FC_NFKC; 006B # L& MATHEMATICAL MONOSPACE CAPITAL K
+1D67B ; FC_NFKC; 006C # L& MATHEMATICAL MONOSPACE CAPITAL L
+1D67C ; FC_NFKC; 006D # L& MATHEMATICAL MONOSPACE CAPITAL M
+1D67D ; FC_NFKC; 006E # L& MATHEMATICAL MONOSPACE CAPITAL N
+1D67E ; FC_NFKC; 006F # L& MATHEMATICAL MONOSPACE CAPITAL O
+1D67F ; FC_NFKC; 0070 # L& MATHEMATICAL MONOSPACE CAPITAL P
+1D680 ; FC_NFKC; 0071 # L& MATHEMATICAL MONOSPACE CAPITAL Q
+1D681 ; FC_NFKC; 0072 # L& MATHEMATICAL MONOSPACE CAPITAL R
+1D682 ; FC_NFKC; 0073 # L& MATHEMATICAL MONOSPACE CAPITAL S
+1D683 ; FC_NFKC; 0074 # L& MATHEMATICAL MONOSPACE CAPITAL T
+1D684 ; FC_NFKC; 0075 # L& MATHEMATICAL MONOSPACE CAPITAL U
+1D685 ; FC_NFKC; 0076 # L& MATHEMATICAL MONOSPACE CAPITAL V
+1D686 ; FC_NFKC; 0077 # L& MATHEMATICAL MONOSPACE CAPITAL W
+1D687 ; FC_NFKC; 0078 # L& MATHEMATICAL MONOSPACE CAPITAL X
+1D688 ; FC_NFKC; 0079 # L& MATHEMATICAL MONOSPACE CAPITAL Y
+1D689 ; FC_NFKC; 007A # L& MATHEMATICAL MONOSPACE CAPITAL Z
+1D6A8 ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD CAPITAL ALPHA
+1D6A9 ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD CAPITAL BETA
+1D6AA ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD CAPITAL GAMMA
+1D6AB ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD CAPITAL DELTA
+1D6AC ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD CAPITAL EPSILON
+1D6AD ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD CAPITAL ZETA
+1D6AE ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD CAPITAL ETA
+1D6AF ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA
+1D6B0 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD CAPITAL IOTA
+1D6B1 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD CAPITAL KAPPA
+1D6B2 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD CAPITAL LAMDA
+1D6B3 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD CAPITAL MU
+1D6B4 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD CAPITAL NU
+1D6B5 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD CAPITAL XI
+1D6B6 ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD CAPITAL OMICRON
+1D6B7 ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD CAPITAL PI
+1D6B8 ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD CAPITAL RHO
+1D6B9 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6BA ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD CAPITAL SIGMA
+1D6BB ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD CAPITAL TAU
+1D6BC ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD CAPITAL UPSILON
+1D6BD ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD CAPITAL PHI
+1D6BE ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD CAPITAL CHI
+1D6BF ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD CAPITAL PSI
+1D6C0 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD CAPITAL OMEGA
+1D6D3 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6E2 ; FC_NFKC; 03B1 # L& MATHEMATICAL ITALIC CAPITAL ALPHA
+1D6E3 ; FC_NFKC; 03B2 # L& MATHEMATICAL ITALIC CAPITAL BETA
+1D6E4 ; FC_NFKC; 03B3 # L& MATHEMATICAL ITALIC CAPITAL GAMMA
+1D6E5 ; FC_NFKC; 03B4 # L& MATHEMATICAL ITALIC CAPITAL DELTA
+1D6E6 ; FC_NFKC; 03B5 # L& MATHEMATICAL ITALIC CAPITAL EPSILON
+1D6E7 ; FC_NFKC; 03B6 # L& MATHEMATICAL ITALIC CAPITAL ZETA
+1D6E8 ; FC_NFKC; 03B7 # L& MATHEMATICAL ITALIC CAPITAL ETA
+1D6E9 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA
+1D6EA ; FC_NFKC; 03B9 # L& MATHEMATICAL ITALIC CAPITAL IOTA
+1D6EB ; FC_NFKC; 03BA # L& MATHEMATICAL ITALIC CAPITAL KAPPA
+1D6EC ; FC_NFKC; 03BB # L& MATHEMATICAL ITALIC CAPITAL LAMDA
+1D6ED ; FC_NFKC; 03BC # L& MATHEMATICAL ITALIC CAPITAL MU
+1D6EE ; FC_NFKC; 03BD # L& MATHEMATICAL ITALIC CAPITAL NU
+1D6EF ; FC_NFKC; 03BE # L& MATHEMATICAL ITALIC CAPITAL XI
+1D6F0 ; FC_NFKC; 03BF # L& MATHEMATICAL ITALIC CAPITAL OMICRON
+1D6F1 ; FC_NFKC; 03C0 # L& MATHEMATICAL ITALIC CAPITAL PI
+1D6F2 ; FC_NFKC; 03C1 # L& MATHEMATICAL ITALIC CAPITAL RHO
+1D6F3 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D6F4 ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC CAPITAL SIGMA
+1D6F5 ; FC_NFKC; 03C4 # L& MATHEMATICAL ITALIC CAPITAL TAU
+1D6F6 ; FC_NFKC; 03C5 # L& MATHEMATICAL ITALIC CAPITAL UPSILON
+1D6F7 ; FC_NFKC; 03C6 # L& MATHEMATICAL ITALIC CAPITAL PHI
+1D6F8 ; FC_NFKC; 03C7 # L& MATHEMATICAL ITALIC CAPITAL CHI
+1D6F9 ; FC_NFKC; 03C8 # L& MATHEMATICAL ITALIC CAPITAL PSI
+1D6FA ; FC_NFKC; 03C9 # L& MATHEMATICAL ITALIC CAPITAL OMEGA
+1D70D ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D71C ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D71D ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D71E ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D71F ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D720 ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D721 ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D722 ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D723 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D724 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D725 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D726 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D727 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D728 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D729 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D72A ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D72B ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D72C ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D72D ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D72E ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D72F ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D730 ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D731 ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D732 ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D733 ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D734 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D747 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D756 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D757 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D758 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D759 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D75A ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D75B ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D75C ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D75D ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D75E ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D75F ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D760 ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D761 ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D762 ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D763 ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D764 ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D765 ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D766 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D767 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D768 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D769 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D76A ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D76B ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D76C ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D76D ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D76E ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D781 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D790 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1D791 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D792 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D793 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D794 ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1D795 ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+1D796 ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1D797 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D798 ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1D799 ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+1D79A ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D79B ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+1D79C ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+1D79D ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+1D79E ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1D79F ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D7A0 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D7A1 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1D7A2 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+1D7A3 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+1D7A4 ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1D7A5 ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D7A6 ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D7A7 ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D7A8 ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7BB ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7CA ; FC_NFKC; 03DD # L& MATHEMATICAL BOLD CAPITAL DIGAMMA
+
+# Total code points: 565
+
+# ================================================
+
+# Derived Property: Full_Composition_Exclusion
+# Generated from: Composition Exclusions + Singletons + Non-Starter Decompositions
+
+0340..0341 ; Full_Composition_Exclusion # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; Full_Composition_Exclusion # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; Full_Composition_Exclusion # Sk GREEK NUMERAL SIGN
+037E ; Full_Composition_Exclusion # Po GREEK QUESTION MARK
+0387 ; Full_Composition_Exclusion # Po GREEK ANO TELEIA
+0958..095F ; Full_Composition_Exclusion # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Full_Composition_Exclusion # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Full_Composition_Exclusion # Lo BENGALI LETTER YYA
+0A33 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER LLA
+0A36 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Full_Composition_Exclusion # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Full_Composition_Exclusion # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Full_Composition_Exclusion # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; Full_Composition_Exclusion # Lo TIBETAN LETTER GHA
+0F4D ; Full_Composition_Exclusion # Lo TIBETAN LETTER DDHA
+0F52 ; Full_Composition_Exclusion # Lo TIBETAN LETTER DHA
+0F57 ; Full_Composition_Exclusion # Lo TIBETAN LETTER BHA
+0F5C ; Full_Composition_Exclusion # Lo TIBETAN LETTER DZHA
+0F69 ; Full_Composition_Exclusion # Lo TIBETAN LETTER KSSA
+0F73 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Full_Composition_Exclusion # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER KSSA
+1F71 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBE ; Full_Composition_Exclusion # L& GREEK PROSGEGRAMMENI
+1FC9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FD3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEE..1FEF ; Full_Composition_Exclusion # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+1FF9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD ; Full_Composition_Exclusion # Sk GREEK OXIA
+2000..2001 ; Full_Composition_Exclusion # Zs [2] EN QUAD..EM QUAD
+2126 ; Full_Composition_Exclusion # L& OHM SIGN
+212A..212B ; Full_Composition_Exclusion # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2329 ; Full_Composition_Exclusion # Ps LEFT-POINTING ANGLE BRACKET
+232A ; Full_Composition_Exclusion # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; Full_Composition_Exclusion # Sm FORKING
+F900..FA0D ; Full_Composition_Exclusion # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; Full_Composition_Exclusion # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; Full_Composition_Exclusion # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; Full_Composition_Exclusion # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; Full_Composition_Exclusion # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; Full_Composition_Exclusion # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; Full_Composition_Exclusion # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Full_Composition_Exclusion # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Full_Composition_Exclusion # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Full_Composition_Exclusion # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Full_Composition_Exclusion # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Full_Composition_Exclusion # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Full_Composition_Exclusion # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Full_Composition_Exclusion # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; Full_Composition_Exclusion # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 1115
+
+# ================================================
+
+# Property: NFD_Quick_Check
+
+# All code points not explicitly listed for NFD_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFD_QC; Yes
+
+# ================================================
+
+# NFD_Quick_Check=No
+
+00C0..00C5 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; NFD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; NFD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; NFD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; NFD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; NFD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; NFD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; NFD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0134..0137 ; NFD_QC; N # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+0139..013E ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+0143..0148 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+014C..0151 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; NFD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; NFD_QC; N # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01CD..01DC ; NFD_QC; N # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F0 ; NFD_QC; N # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F4..01F5 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; NFD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; NFD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+0340..0341 ; NFD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFD_QC; N # Sk GREEK NUMERAL SIGN
+037E ; NFD_QC; N # Po GREEK QUESTION MARK
+0385 ; NFD_QC; N # Sk GREEK DIALYTIKA TONOS
+0386 ; NFD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 ; NFD_QC; N # Po GREEK ANO TELEIA
+0388..038A ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; NFD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; NFD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; NFD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; NFD_QC; N # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; NFD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; NFD_QC; N # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; NFD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; NFD_QC; N # L& CYRILLIC SMALL LETTER GJE
+0457 ; NFD_QC; N # L& CYRILLIC SMALL LETTER YI
+045C..045E ; NFD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; NFD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; NFD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0622..0626 ; NFD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+06C0 ; NFD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; NFD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; NFD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; NFD_QC; N # Lo DEVANAGARI LETTER NNNA
+0931 ; NFD_QC; N # Lo DEVANAGARI LETTER RRA
+0934 ; NFD_QC; N # Lo DEVANAGARI LETTER LLLA
+0958..095F ; NFD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; NFD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; NFD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFD_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFD_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFD_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFD_QC; N # Lo GURMUKHI LETTER FA
+0B48 ; NFD_QC; N # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; NFD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; NFD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; NFD_QC; N # Lo TAMIL LETTER AU
+0BCA..0BCC ; NFD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; NFD_QC; N # Mn TELUGU VOWEL SIGN AI
+0CC0 ; NFD_QC; N # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; NFD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; NFD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; NFD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0F43 ; NFD_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFD_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFD_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFD_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFD_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFD_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; NFD_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; NFD_QC; N # Lo MYANMAR LETTER UU
+1B06 ; NFD_QC; N # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; NFD_QC; N # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; NFD_QC; N # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; NFD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; NFD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; NFD_QC; N # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; NFD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; NFD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; NFD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; NFD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E99 ; NFD_QC; N # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+1E9B ; NFD_QC; N # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; NFD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; NFD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; NFD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; NFD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; NFD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; NFD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBE ; NFD_QC; N # L& GREEK PROSGEGRAMMENI
+1FC1 ; NFD_QC; N # Sk GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; NFD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; NFD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; NFD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; NFD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; NFD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; NFD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD ; NFD_QC; N # Sk GREEK OXIA
+2000..2001 ; NFD_QC; N # Zs [2] EN QUAD..EM QUAD
+2126 ; NFD_QC; N # L& OHM SIGN
+212A..212B ; NFD_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN
+219A..219B ; NFD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; NFD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; NFD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; NFD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; NFD_QC; N # Sm THERE DOES NOT EXIST
+2209 ; NFD_QC; N # Sm NOT AN ELEMENT OF
+220C ; NFD_QC; N # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; NFD_QC; N # Sm DOES NOT DIVIDE
+2226 ; NFD_QC; N # Sm NOT PARALLEL TO
+2241 ; NFD_QC; N # Sm NOT TILDE
+2244 ; NFD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; NFD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; NFD_QC; N # Sm NOT ALMOST EQUAL TO
+2260 ; NFD_QC; N # Sm NOT EQUAL TO
+2262 ; NFD_QC; N # Sm NOT IDENTICAL TO
+226D..2271 ; NFD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; NFD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; NFD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; NFD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; NFD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; NFD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; NFD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329 ; NFD_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; NFD_QC; N # Sm FORKING
+304C ; NFD_QC; N # Lo HIRAGANA LETTER GA
+304E ; NFD_QC; N # Lo HIRAGANA LETTER GI
+3050 ; NFD_QC; N # Lo HIRAGANA LETTER GU
+3052 ; NFD_QC; N # Lo HIRAGANA LETTER GE
+3054 ; NFD_QC; N # Lo HIRAGANA LETTER GO
+3056 ; NFD_QC; N # Lo HIRAGANA LETTER ZA
+3058 ; NFD_QC; N # Lo HIRAGANA LETTER ZI
+305A ; NFD_QC; N # Lo HIRAGANA LETTER ZU
+305C ; NFD_QC; N # Lo HIRAGANA LETTER ZE
+305E ; NFD_QC; N # Lo HIRAGANA LETTER ZO
+3060 ; NFD_QC; N # Lo HIRAGANA LETTER DA
+3062 ; NFD_QC; N # Lo HIRAGANA LETTER DI
+3065 ; NFD_QC; N # Lo HIRAGANA LETTER DU
+3067 ; NFD_QC; N # Lo HIRAGANA LETTER DE
+3069 ; NFD_QC; N # Lo HIRAGANA LETTER DO
+3070..3071 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; NFD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; NFD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; NFD_QC; N # Lo HIRAGANA LETTER VU
+309E ; NFD_QC; N # Lm HIRAGANA VOICED ITERATION MARK
+30AC ; NFD_QC; N # Lo KATAKANA LETTER GA
+30AE ; NFD_QC; N # Lo KATAKANA LETTER GI
+30B0 ; NFD_QC; N # Lo KATAKANA LETTER GU
+30B2 ; NFD_QC; N # Lo KATAKANA LETTER GE
+30B4 ; NFD_QC; N # Lo KATAKANA LETTER GO
+30B6 ; NFD_QC; N # Lo KATAKANA LETTER ZA
+30B8 ; NFD_QC; N # Lo KATAKANA LETTER ZI
+30BA ; NFD_QC; N # Lo KATAKANA LETTER ZU
+30BC ; NFD_QC; N # Lo KATAKANA LETTER ZE
+30BE ; NFD_QC; N # Lo KATAKANA LETTER ZO
+30C0 ; NFD_QC; N # Lo KATAKANA LETTER DA
+30C2 ; NFD_QC; N # Lo KATAKANA LETTER DI
+30C5 ; NFD_QC; N # Lo KATAKANA LETTER DU
+30C7 ; NFD_QC; N # Lo KATAKANA LETTER DE
+30C9 ; NFD_QC; N # Lo KATAKANA LETTER DO
+30D0..30D1 ; NFD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; NFD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; NFD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; NFD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; NFD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; NFD_QC; N # Lo KATAKANA LETTER VU
+30F7..30FA ; NFD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; NFD_QC; N # Lm KATAKANA VOICED ITERATION MARK
+AC00..D7A3 ; NFD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA0D ; NFD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; NFD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; NFD_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; NFD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; NFD_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; NFD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; NFD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 13215
+
+# ================================================
+
+# Property: NFC_Quick_Check
+
+# All code points not explicitly listed for NFC_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFC_QC; Yes
+
+# ================================================
+
+# NFC_Quick_Check=No
+
+0340..0341 ; NFC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFC_QC; N # Sk GREEK NUMERAL SIGN
+037E ; NFC_QC; N # Po GREEK QUESTION MARK
+0387 ; NFC_QC; N # Po GREEK ANO TELEIA
+0958..095F ; NFC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; NFC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFC_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFC_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFC_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFC_QC; N # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; NFC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; NFC_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFC_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFC_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFC_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFC_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFC_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; NFC_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1F71 ; NFC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; NFC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; NFC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; NFC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; NFC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; NFC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBE ; NFC_QC; N # L& GREEK PROSGEGRAMMENI
+1FC9 ; NFC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; NFC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FD3 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; NFC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE3 ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; NFC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEE..1FEF ; NFC_QC; N # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+1FF9 ; NFC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; NFC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD ; NFC_QC; N # Sk GREEK OXIA
+2000..2001 ; NFC_QC; N # Zs [2] EN QUAD..EM QUAD
+2126 ; NFC_QC; N # L& OHM SIGN
+212A..212B ; NFC_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2329 ; NFC_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; NFC_QC; N # Sm FORKING
+F900..FA0D ; NFC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; NFC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; NFC_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; NFC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; NFC_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; NFC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; NFC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 1115
+
+# ================================================
+
+# NFC_Quick_Check=Maybe
+
+0300..0304 ; NFC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+0306..030C ; NFC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON
+030F ; NFC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT
+0311 ; NFC_QC; M # Mn COMBINING INVERTED BREVE
+0313..0314 ; NFC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+031B ; NFC_QC; M # Mn COMBINING HORN
+0323..0328 ; NFC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK
+032D..032E ; NFC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+0330..0331 ; NFC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+0338 ; NFC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY
+0342 ; NFC_QC; M # Mn COMBINING GREEK PERISPOMENI
+0345 ; NFC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI
+0653..0655 ; NFC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+093C ; NFC_QC; M # Mn DEVANAGARI SIGN NUKTA
+09BE ; NFC_QC; M # Mc BENGALI VOWEL SIGN AA
+09D7 ; NFC_QC; M # Mc BENGALI AU LENGTH MARK
+0B3E ; NFC_QC; M # Mc ORIYA VOWEL SIGN AA
+0B56 ; NFC_QC; M # Mn ORIYA AI LENGTH MARK
+0B57 ; NFC_QC; M # Mc ORIYA AU LENGTH MARK
+0BBE ; NFC_QC; M # Mc TAMIL VOWEL SIGN AA
+0BD7 ; NFC_QC; M # Mc TAMIL AU LENGTH MARK
+0C56 ; NFC_QC; M # Mn TELUGU AI LENGTH MARK
+0CC2 ; NFC_QC; M # Mc KANNADA VOWEL SIGN UU
+0CD5..0CD6 ; NFC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D3E ; NFC_QC; M # Mc MALAYALAM VOWEL SIGN AA
+0D57 ; NFC_QC; M # Mc MALAYALAM AU LENGTH MARK
+0DCA ; NFC_QC; M # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; NFC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DDF ; NFC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA
+102E ; NFC_QC; M # Mn MYANMAR VOWEL SIGN II
+1161..1175 ; NFC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+11A8..11C2 ; NFC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+1B35 ; NFC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG
+3099..309A ; NFC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+
+# Total code points: 102
+
+# ================================================
+
+# Property: NFKD_Quick_Check
+
+# All code points not explicitly listed for NFKD_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFKD_QC; Yes
+
+# ================================================
+
+# NFKD_Quick_Check=No
+
+00A0 ; NFKD_QC; N # Zs NO-BREAK SPACE
+00A8 ; NFKD_QC; N # Sk DIAERESIS
+00AA ; NFKD_QC; N # L& FEMININE ORDINAL INDICATOR
+00AF ; NFKD_QC; N # Sk MACRON
+00B2..00B3 ; NFKD_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; NFKD_QC; N # Sk ACUTE ACCENT
+00B5 ; NFKD_QC; N # L& MICRO SIGN
+00B8 ; NFKD_QC; N # Sk CEDILLA
+00B9 ; NFKD_QC; N # No SUPERSCRIPT ONE
+00BA ; NFKD_QC; N # L& MASCULINE ORDINAL INDICATOR
+00BC..00BE ; NFKD_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00C0..00C5 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; NFKD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; NFKD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; NFKD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; NFKD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; NFKD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132..0137 ; NFKD_QC; N # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+0139..0140 ; NFKD_QC; N # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+0143..0149 ; NFKD_QC; N # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C..0151 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; NFKD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017F ; NFKD_QC; N # L& [24] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER LONG S
+01A0..01A1 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01C4..01DC ; NFKD_QC; N # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F5 ; NFKD_QC; N # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; NFKD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; NFKD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+02B0..02B8 ; NFKD_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02D8..02DD ; NFKD_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+02E0..02E4 ; NFKD_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340..0341 ; NFKD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFKD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFKD_QC; N # Sk GREEK NUMERAL SIGN
+037A ; NFKD_QC; N # Lm GREEK YPOGEGRAMMENI
+037E ; NFKD_QC; N # Po GREEK QUESTION MARK
+0384..0385 ; NFKD_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; NFKD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 ; NFKD_QC; N # Po GREEK ANO TELEIA
+0388..038A ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; NFKD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; NFKD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; NFKD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03D6 ; NFKD_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+03F0..03F2 ; NFKD_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+03F4..03F5 ; NFKD_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F9 ; NFKD_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+0400..0401 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; NFKD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; NFKD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER GJE
+0457 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER YI
+045C..045E ; NFKD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; NFKD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; NFKD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587 ; NFKD_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0622..0626 ; NFKD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+0675..0678 ; NFKD_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+06C0 ; NFKD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; NFKD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; NFKD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; NFKD_QC; N # Lo DEVANAGARI LETTER NNNA
+0931 ; NFKD_QC; N # Lo DEVANAGARI LETTER RRA
+0934 ; NFKD_QC; N # Lo DEVANAGARI LETTER LLLA
+0958..095F ; NFKD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; NFKD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; NFKD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFKD_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFKD_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFKD_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFKD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFKD_QC; N # Lo GURMUKHI LETTER FA
+0B48 ; NFKD_QC; N # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; NFKD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; NFKD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; NFKD_QC; N # Lo TAMIL LETTER AU
+0BCA..0BCC ; NFKD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; NFKD_QC; N # Mn TELUGU VOWEL SIGN AI
+0CC0 ; NFKD_QC; N # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; NFKD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; NFKD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; NFKD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33 ; NFKD_QC; N # Lo THAI CHARACTER SARA AM
+0EB3 ; NFKD_QC; N # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; NFKD_QC; N # Lo [2] LAO HO NO..LAO HO MO
+0F0C ; NFKD_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43 ; NFKD_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFKD_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFKD_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFKD_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFKD_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFKD_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; NFKD_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; NFKD_QC; N # Lo MYANMAR LETTER UU
+10FC ; NFKD_QC; N # Lm MODIFIER LETTER GEORGIAN NAR
+1B06 ; NFKD_QC; N # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; NFKD_QC; N # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; NFKD_QC; N # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; NFKD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; NFKD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; NFKD_QC; N # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; NFKD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; NFKD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; NFKD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; NFKD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1D2C..1D2E ; NFKD_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+1D30..1D3A ; NFKD_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+1D3C..1D4D ; NFKD_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+1D4F..1D61 ; NFKD_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI
+1D62..1D6A ; NFKD_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI
+1D78 ; NFKD_QC; N # Lm MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF ; NFKD_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E00..1E9B ; NFKD_QC; N # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; NFKD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; NFKD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; NFKD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; NFKD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; NFKD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; NFKD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; NFKD_QC; N # Sk GREEK KORONIS
+1FBE ; NFKD_QC; N # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; NFKD_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; NFKD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; NFKD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; NFKD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFKD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; NFKD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; NFKD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; NFKD_QC; N # Sk [2] GREEK OXIA..GREEK DASIA
+2000..200A ; NFKD_QC; N # Zs [11] EN QUAD..HAIR SPACE
+2011 ; NFKD_QC; N # Pd NON-BREAKING HYPHEN
+2017 ; NFKD_QC; N # Po DOUBLE LOW LINE
+2024..2026 ; NFKD_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+202F ; NFKD_QC; N # Zs NARROW NO-BREAK SPACE
+2033..2034 ; NFKD_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; NFKD_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; NFKD_QC; N # Po DOUBLE EXCLAMATION MARK
+203E ; NFKD_QC; N # Po OVERLINE
+2047..2049 ; NFKD_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; NFKD_QC; N # Po QUADRUPLE PRIME
+205F ; NFKD_QC; N # Zs MEDIUM MATHEMATICAL SPACE
+2070 ; NFKD_QC; N # No SUPERSCRIPT ZERO
+2071 ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I
+2074..2079 ; NFKD_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; NFKD_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; NFKD_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; NFKD_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS
+207F ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N
+2080..2089 ; NFKD_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; NFKD_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; NFKD_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; NFKD_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS
+2090..2094 ; NFKD_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A8 ; NFKD_QC; N # Sc RUPEE SIGN
+2100..2101 ; NFKD_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL C
+2103 ; NFKD_QC; N # So DEGREE CELSIUS
+2105..2106 ; NFKD_QC; N # So [2] CARE OF..CADA UNA
+2107 ; NFKD_QC; N # L& EULER CONSTANT
+2109 ; NFKD_QC; N # So DEGREE FAHRENHEIT
+210A..2113 ; NFKD_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL N
+2116 ; NFKD_QC; N # So NUMERO SIGN
+2119..211D ; NFKD_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2120..2122 ; NFKD_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN
+2124 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; NFKD_QC; N # L& OHM SIGN
+2128 ; NFKD_QC; N # L& BLACK-LETTER CAPITAL Z
+212A..212D ; NFKD_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2131 ; NFKD_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; NFKD_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; NFKD_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; NFKD_QC; N # L& INFORMATION SOURCE
+213B ; NFKD_QC; N # So FACSIMILE SIGN
+213C..213F ; NFKD_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140 ; NFKD_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION
+2145..2149 ; NFKD_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+2153..215F ; NFKD_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..217F ; NFKD_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+219A..219B ; NFKD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; NFKD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; NFKD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; NFKD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; NFKD_QC; N # Sm THERE DOES NOT EXIST
+2209 ; NFKD_QC; N # Sm NOT AN ELEMENT OF
+220C ; NFKD_QC; N # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; NFKD_QC; N # Sm DOES NOT DIVIDE
+2226 ; NFKD_QC; N # Sm NOT PARALLEL TO
+222C..222D ; NFKD_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; NFKD_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2241 ; NFKD_QC; N # Sm NOT TILDE
+2244 ; NFKD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; NFKD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; NFKD_QC; N # Sm NOT ALMOST EQUAL TO
+2260 ; NFKD_QC; N # Sm NOT EQUAL TO
+2262 ; NFKD_QC; N # Sm NOT IDENTICAL TO
+226D..2271 ; NFKD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; NFKD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; NFKD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; NFKD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; NFKD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; NFKD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; NFKD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329 ; NFKD_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFKD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2460..249B ; NFKD_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; NFKD_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA ; NFKD_QC; N # No CIRCLED DIGIT ZERO
+2A0C ; NFKD_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; NFKD_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; NFKD_QC; N # Sm FORKING
+2D6F ; NFKD_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F ; NFKD_QC; N # So CJK RADICAL MOTHER
+2EF3 ; NFKD_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; NFKD_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3000 ; NFKD_QC; N # Zs IDEOGRAPHIC SPACE
+3036 ; NFKD_QC; N # So CIRCLED POSTAL MARK
+3038..303A ; NFKD_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+304C ; NFKD_QC; N # Lo HIRAGANA LETTER GA
+304E ; NFKD_QC; N # Lo HIRAGANA LETTER GI
+3050 ; NFKD_QC; N # Lo HIRAGANA LETTER GU
+3052 ; NFKD_QC; N # Lo HIRAGANA LETTER GE
+3054 ; NFKD_QC; N # Lo HIRAGANA LETTER GO
+3056 ; NFKD_QC; N # Lo HIRAGANA LETTER ZA
+3058 ; NFKD_QC; N # Lo HIRAGANA LETTER ZI
+305A ; NFKD_QC; N # Lo HIRAGANA LETTER ZU
+305C ; NFKD_QC; N # Lo HIRAGANA LETTER ZE
+305E ; NFKD_QC; N # Lo HIRAGANA LETTER ZO
+3060 ; NFKD_QC; N # Lo HIRAGANA LETTER DA
+3062 ; NFKD_QC; N # Lo HIRAGANA LETTER DI
+3065 ; NFKD_QC; N # Lo HIRAGANA LETTER DU
+3067 ; NFKD_QC; N # Lo HIRAGANA LETTER DE
+3069 ; NFKD_QC; N # Lo HIRAGANA LETTER DO
+3070..3071 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; NFKD_QC; N # Lo HIRAGANA LETTER VU
+309B..309C ; NFKD_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E ; NFKD_QC; N # Lm HIRAGANA VOICED ITERATION MARK
+309F ; NFKD_QC; N # Lo HIRAGANA DIGRAPH YORI
+30AC ; NFKD_QC; N # Lo KATAKANA LETTER GA
+30AE ; NFKD_QC; N # Lo KATAKANA LETTER GI
+30B0 ; NFKD_QC; N # Lo KATAKANA LETTER GU
+30B2 ; NFKD_QC; N # Lo KATAKANA LETTER GE
+30B4 ; NFKD_QC; N # Lo KATAKANA LETTER GO
+30B6 ; NFKD_QC; N # Lo KATAKANA LETTER ZA
+30B8 ; NFKD_QC; N # Lo KATAKANA LETTER ZI
+30BA ; NFKD_QC; N # Lo KATAKANA LETTER ZU
+30BC ; NFKD_QC; N # Lo KATAKANA LETTER ZE
+30BE ; NFKD_QC; N # Lo KATAKANA LETTER ZO
+30C0 ; NFKD_QC; N # Lo KATAKANA LETTER DA
+30C2 ; NFKD_QC; N # Lo KATAKANA LETTER DI
+30C5 ; NFKD_QC; N # Lo KATAKANA LETTER DU
+30C7 ; NFKD_QC; N # Lo KATAKANA LETTER DE
+30C9 ; NFKD_QC; N # Lo KATAKANA LETTER DO
+30D0..30D1 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; NFKD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; NFKD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; NFKD_QC; N # Lo KATAKANA LETTER VU
+30F7..30FA ; NFKD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; NFKD_QC; N # Lm KATAKANA VOICED ITERATION MARK
+30FF ; NFKD_QC; N # Lo KATAKANA DIGRAPH KOTO
+3131..318E ; NFKD_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3192..3195 ; NFKD_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; NFKD_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+3200..321E ; NFKD_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; NFKD_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; NFKD_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; NFKD_QC; N # So PARTNERSHIP SIGN
+3251..325F ; NFKD_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3260..327E ; NFKD_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+3280..3289 ; NFKD_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; NFKD_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; NFKD_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; NFKD_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; NFKD_QC; N # So [256] SQUARE APAATO..SQUARE GAL
+AC00..D7A3 ; NFKD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA0D ; NFKD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFKD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFKD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFKD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFKD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFKD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00..FB06 ; NFKD_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; NFKD_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; NFKD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; NFKD_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; NFKD_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; NFKD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFKD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFKD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFKD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFKD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; NFKD_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; NFKD_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; NFKD_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; NFKD_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; NFKD_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; NFKD_QC; N # Sc RIAL SIGN
+FE10..FE16 ; NFKD_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; NFKD_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; NFKD_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; NFKD_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; NFKD_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; NFKD_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; NFKD_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; NFKD_QC; N # Pd SMALL EM DASH
+FE59 ; NFKD_QC; N # Ps SMALL LEFT PARENTHESIS
+FE5A ; NFKD_QC; N # Pe SMALL RIGHT PARENTHESIS
+FE5B ; NFKD_QC; N # Ps SMALL LEFT CURLY BRACKET
+FE5C ; NFKD_QC; N # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; NFKD_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; NFKD_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; NFKD_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; NFKD_QC; N # Sm SMALL PLUS SIGN
+FE63 ; NFKD_QC; N # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; NFKD_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; NFKD_QC; N # Po SMALL REVERSE SOLIDUS
+FE69 ; NFKD_QC; N # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; NFKD_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FE70..FE72 ; NFKD_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; NFKD_QC; N # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; NFKD_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01..FF03 ; NFKD_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; NFKD_QC; N # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; NFKD_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; NFKD_QC; N # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; NFKD_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; NFKD_QC; N # Po FULLWIDTH ASTERISK
+FF0B ; NFKD_QC; N # Sm FULLWIDTH PLUS SIGN
+FF0C ; NFKD_QC; N # Po FULLWIDTH COMMA
+FF0D ; NFKD_QC; N # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; NFKD_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; NFKD_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; NFKD_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; NFKD_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; NFKD_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF21..FF3A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B ; NFKD_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; NFKD_QC; N # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; NFKD_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; NFKD_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; NFKD_QC; N # Pc FULLWIDTH LOW LINE
+FF40 ; NFKD_QC; N # Sk FULLWIDTH GRAVE ACCENT
+FF41..FF5A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FF5B ; NFKD_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; NFKD_QC; N # Sm FULLWIDTH VERTICAL LINE
+FF5D ; NFKD_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; NFKD_QC; N # Sm FULLWIDTH TILDE
+FF5F ; NFKD_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; NFKD_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; NFKD_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; NFKD_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; NFKD_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; NFKD_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF66..FF6F ; NFKD_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; NFKD_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; NFKD_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; NFKD_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; NFKD_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; NFKD_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE1 ; NFKD_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; NFKD_QC; N # Sm FULLWIDTH NOT SIGN
+FFE3 ; NFKD_QC; N # Sk FULLWIDTH MACRON
+FFE4 ; NFKD_QC; N # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; NFKD_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; NFKD_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; NFKD_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; NFKD_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+1D15E..1D164 ; NFKD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFKD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+1D400..1D454 ; NFKD_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; NFKD_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; NFKD_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; NFKD_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; NFKD_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; NFKD_QC; N # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; NFKD_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; NFKD_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; NFKD_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; NFKD_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; NFKD_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; NFKD_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; NFKD_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; NFKD_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; NFKD_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; NFKD_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; NFKD_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; NFKD_QC; N # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; NFKD_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; NFKD_QC; N # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; NFKD_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; NFKD_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; NFKD_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; NFKD_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; NFKD_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; NFKD_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+2F800..2FA1D ; NFKD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 16574
+
+# ================================================
+
+# Property: NFKC_Quick_Check
+
+# All code points not explicitly listed for NFKC_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFKC_QC; Yes
+
+# ================================================
+
+# NFKC_Quick_Check=No
+
+00A0 ; NFKC_QC; N # Zs NO-BREAK SPACE
+00A8 ; NFKC_QC; N # Sk DIAERESIS
+00AA ; NFKC_QC; N # L& FEMININE ORDINAL INDICATOR
+00AF ; NFKC_QC; N # Sk MACRON
+00B2..00B3 ; NFKC_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; NFKC_QC; N # Sk ACUTE ACCENT
+00B5 ; NFKC_QC; N # L& MICRO SIGN
+00B8 ; NFKC_QC; N # Sk CEDILLA
+00B9 ; NFKC_QC; N # No SUPERSCRIPT ONE
+00BA ; NFKC_QC; N # L& MASCULINE ORDINAL INDICATOR
+00BC..00BE ; NFKC_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+0132..0133 ; NFKC_QC; N # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+013F..0140 ; NFKC_QC; N # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+0149 ; NFKC_QC; N # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+017F ; NFKC_QC; N # L& LATIN SMALL LETTER LONG S
+01C4..01CC ; NFKC_QC; N # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+01F1..01F3 ; NFKC_QC; N # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+02B0..02B8 ; NFKC_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02D8..02DD ; NFKC_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+02E0..02E4 ; NFKC_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340..0341 ; NFKC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFKC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFKC_QC; N # Sk GREEK NUMERAL SIGN
+037A ; NFKC_QC; N # Lm GREEK YPOGEGRAMMENI
+037E ; NFKC_QC; N # Po GREEK QUESTION MARK
+0384..0385 ; NFKC_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0387 ; NFKC_QC; N # Po GREEK ANO TELEIA
+03D0..03D6 ; NFKC_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+03F0..03F2 ; NFKC_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+03F4..03F5 ; NFKC_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F9 ; NFKC_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+0587 ; NFKC_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0675..0678 ; NFKC_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+0958..095F ; NFKC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; NFKC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFKC_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFKC_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFKC_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFKC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFKC_QC; N # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; NFKC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0E33 ; NFKC_QC; N # Lo THAI CHARACTER SARA AM
+0EB3 ; NFKC_QC; N # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; NFKC_QC; N # Lo [2] LAO HO NO..LAO HO MO
+0F0C ; NFKC_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43 ; NFKC_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFKC_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFKC_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFKC_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFKC_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFKC_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; NFKC_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+10FC ; NFKC_QC; N # Lm MODIFIER LETTER GEORGIAN NAR
+1D2C..1D2E ; NFKC_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+1D30..1D3A ; NFKC_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+1D3C..1D4D ; NFKC_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+1D4F..1D61 ; NFKC_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI
+1D62..1D6A ; NFKC_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI
+1D78 ; NFKC_QC; N # Lm MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF ; NFKC_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E9A..1E9B ; NFKC_QC; N # L& [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1F71 ; NFKC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; NFKC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; NFKC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; NFKC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; NFKC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBD ; NFKC_QC; N # Sk GREEK KORONIS
+1FBE ; NFKC_QC; N # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; NFKC_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FCD..1FCF ; NFKC_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD3 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; NFKC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFKC_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE3 ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; NFKC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FED..1FEF ; NFKC_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD..1FFE ; NFKC_QC; N # Sk [2] GREEK OXIA..GREEK DASIA
+2000..200A ; NFKC_QC; N # Zs [11] EN QUAD..HAIR SPACE
+2011 ; NFKC_QC; N # Pd NON-BREAKING HYPHEN
+2017 ; NFKC_QC; N # Po DOUBLE LOW LINE
+2024..2026 ; NFKC_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+202F ; NFKC_QC; N # Zs NARROW NO-BREAK SPACE
+2033..2034 ; NFKC_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; NFKC_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; NFKC_QC; N # Po DOUBLE EXCLAMATION MARK
+203E ; NFKC_QC; N # Po OVERLINE
+2047..2049 ; NFKC_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; NFKC_QC; N # Po QUADRUPLE PRIME
+205F ; NFKC_QC; N # Zs MEDIUM MATHEMATICAL SPACE
+2070 ; NFKC_QC; N # No SUPERSCRIPT ZERO
+2071 ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I
+2074..2079 ; NFKC_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; NFKC_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; NFKC_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; NFKC_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS
+207F ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N
+2080..2089 ; NFKC_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; NFKC_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; NFKC_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; NFKC_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS
+2090..2094 ; NFKC_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A8 ; NFKC_QC; N # Sc RUPEE SIGN
+2100..2101 ; NFKC_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL C
+2103 ; NFKC_QC; N # So DEGREE CELSIUS
+2105..2106 ; NFKC_QC; N # So [2] CARE OF..CADA UNA
+2107 ; NFKC_QC; N # L& EULER CONSTANT
+2109 ; NFKC_QC; N # So DEGREE FAHRENHEIT
+210A..2113 ; NFKC_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL N
+2116 ; NFKC_QC; N # So NUMERO SIGN
+2119..211D ; NFKC_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2120..2122 ; NFKC_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN
+2124 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; NFKC_QC; N # L& OHM SIGN
+2128 ; NFKC_QC; N # L& BLACK-LETTER CAPITAL Z
+212A..212D ; NFKC_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2131 ; NFKC_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; NFKC_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; NFKC_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; NFKC_QC; N # L& INFORMATION SOURCE
+213B ; NFKC_QC; N # So FACSIMILE SIGN
+213C..213F ; NFKC_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140 ; NFKC_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION
+2145..2149 ; NFKC_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+2153..215F ; NFKC_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..217F ; NFKC_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+222C..222D ; NFKC_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; NFKC_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2329 ; NFKC_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFKC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2460..249B ; NFKC_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; NFKC_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA ; NFKC_QC; N # No CIRCLED DIGIT ZERO
+2A0C ; NFKC_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; NFKC_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; NFKC_QC; N # Sm FORKING
+2D6F ; NFKC_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F ; NFKC_QC; N # So CJK RADICAL MOTHER
+2EF3 ; NFKC_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; NFKC_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3000 ; NFKC_QC; N # Zs IDEOGRAPHIC SPACE
+3036 ; NFKC_QC; N # So CIRCLED POSTAL MARK
+3038..303A ; NFKC_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+309B..309C ; NFKC_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309F ; NFKC_QC; N # Lo HIRAGANA DIGRAPH YORI
+30FF ; NFKC_QC; N # Lo KATAKANA DIGRAPH KOTO
+3131..318E ; NFKC_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3192..3195 ; NFKC_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; NFKC_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+3200..321E ; NFKC_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; NFKC_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; NFKC_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; NFKC_QC; N # So PARTNERSHIP SIGN
+3251..325F ; NFKC_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3260..327E ; NFKC_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+3280..3289 ; NFKC_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; NFKC_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; NFKC_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; NFKC_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; NFKC_QC; N # So [256] SQUARE APAATO..SQUARE GAL
+F900..FA0D ; NFKC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFKC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFKC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFKC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFKC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFKC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00..FB06 ; NFKC_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; NFKC_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; NFKC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; NFKC_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; NFKC_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; NFKC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFKC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFKC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFKC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFKC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; NFKC_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; NFKC_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; NFKC_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; NFKC_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; NFKC_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; NFKC_QC; N # Sc RIAL SIGN
+FE10..FE16 ; NFKC_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; NFKC_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; NFKC_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; NFKC_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; NFKC_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; NFKC_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; NFKC_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; NFKC_QC; N # Pd SMALL EM DASH
+FE59 ; NFKC_QC; N # Ps SMALL LEFT PARENTHESIS
+FE5A ; NFKC_QC; N # Pe SMALL RIGHT PARENTHESIS
+FE5B ; NFKC_QC; N # Ps SMALL LEFT CURLY BRACKET
+FE5C ; NFKC_QC; N # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; NFKC_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; NFKC_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; NFKC_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; NFKC_QC; N # Sm SMALL PLUS SIGN
+FE63 ; NFKC_QC; N # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; NFKC_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; NFKC_QC; N # Po SMALL REVERSE SOLIDUS
+FE69 ; NFKC_QC; N # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; NFKC_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FE70..FE72 ; NFKC_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; NFKC_QC; N # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; NFKC_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01..FF03 ; NFKC_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; NFKC_QC; N # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; NFKC_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; NFKC_QC; N # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; NFKC_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; NFKC_QC; N # Po FULLWIDTH ASTERISK
+FF0B ; NFKC_QC; N # Sm FULLWIDTH PLUS SIGN
+FF0C ; NFKC_QC; N # Po FULLWIDTH COMMA
+FF0D ; NFKC_QC; N # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; NFKC_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; NFKC_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; NFKC_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; NFKC_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; NFKC_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF21..FF3A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B ; NFKC_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; NFKC_QC; N # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; NFKC_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; NFKC_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; NFKC_QC; N # Pc FULLWIDTH LOW LINE
+FF40 ; NFKC_QC; N # Sk FULLWIDTH GRAVE ACCENT
+FF41..FF5A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FF5B ; NFKC_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; NFKC_QC; N # Sm FULLWIDTH VERTICAL LINE
+FF5D ; NFKC_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; NFKC_QC; N # Sm FULLWIDTH TILDE
+FF5F ; NFKC_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; NFKC_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; NFKC_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; NFKC_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; NFKC_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; NFKC_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF66..FF6F ; NFKC_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; NFKC_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; NFKC_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; NFKC_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; NFKC_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; NFKC_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE1 ; NFKC_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; NFKC_QC; N # Sm FULLWIDTH NOT SIGN
+FFE3 ; NFKC_QC; N # Sk FULLWIDTH MACRON
+FFE4 ; NFKC_QC; N # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; NFKC_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; NFKC_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; NFKC_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; NFKC_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+1D15E..1D164 ; NFKC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFKC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+1D400..1D454 ; NFKC_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; NFKC_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; NFKC_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; NFKC_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; NFKC_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; NFKC_QC; N # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; NFKC_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; NFKC_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; NFKC_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; NFKC_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; NFKC_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; NFKC_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; NFKC_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; NFKC_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; NFKC_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; NFKC_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; NFKC_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; NFKC_QC; N # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; NFKC_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; NFKC_QC; N # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; NFKC_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; NFKC_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; NFKC_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; NFKC_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; NFKC_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; NFKC_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+2F800..2FA1D ; NFKC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 4486
+
+# ================================================
+
+# NFKC_Quick_Check=Maybe
+
+0300..0304 ; NFKC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+0306..030C ; NFKC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON
+030F ; NFKC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT
+0311 ; NFKC_QC; M # Mn COMBINING INVERTED BREVE
+0313..0314 ; NFKC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+031B ; NFKC_QC; M # Mn COMBINING HORN
+0323..0328 ; NFKC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK
+032D..032E ; NFKC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+0330..0331 ; NFKC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+0338 ; NFKC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY
+0342 ; NFKC_QC; M # Mn COMBINING GREEK PERISPOMENI
+0345 ; NFKC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI
+0653..0655 ; NFKC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+093C ; NFKC_QC; M # Mn DEVANAGARI SIGN NUKTA
+09BE ; NFKC_QC; M # Mc BENGALI VOWEL SIGN AA
+09D7 ; NFKC_QC; M # Mc BENGALI AU LENGTH MARK
+0B3E ; NFKC_QC; M # Mc ORIYA VOWEL SIGN AA
+0B56 ; NFKC_QC; M # Mn ORIYA AI LENGTH MARK
+0B57 ; NFKC_QC; M # Mc ORIYA AU LENGTH MARK
+0BBE ; NFKC_QC; M # Mc TAMIL VOWEL SIGN AA
+0BD7 ; NFKC_QC; M # Mc TAMIL AU LENGTH MARK
+0C56 ; NFKC_QC; M # Mn TELUGU AI LENGTH MARK
+0CC2 ; NFKC_QC; M # Mc KANNADA VOWEL SIGN UU
+0CD5..0CD6 ; NFKC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D3E ; NFKC_QC; M # Mc MALAYALAM VOWEL SIGN AA
+0D57 ; NFKC_QC; M # Mc MALAYALAM AU LENGTH MARK
+0DCA ; NFKC_QC; M # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DDF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA
+102E ; NFKC_QC; M # Mn MYANMAR VOWEL SIGN II
+1161..1175 ; NFKC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+11A8..11C2 ; NFKC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+1B35 ; NFKC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG
+3099..309A ; NFKC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+
+# Total code points: 102
+
+# ================================================
+
+# Derived Property: Expands_On_NFD
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00C0..00C5 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; Expands_On_NFD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; Expands_On_NFD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; Expands_On_NFD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; Expands_On_NFD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; Expands_On_NFD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0134..0137 ; Expands_On_NFD # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+0139..013E ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+0143..0148 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+014C..0151 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; Expands_On_NFD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; Expands_On_NFD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01CD..01DC ; Expands_On_NFD # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F0 ; Expands_On_NFD # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F4..01F5 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; Expands_On_NFD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; Expands_On_NFD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+0344 ; Expands_On_NFD # Mn COMBINING GREEK DIALYTIKA TONOS
+0385 ; Expands_On_NFD # Sk GREEK DIALYTIKA TONOS
+0386 ; Expands_On_NFD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Expands_On_NFD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; Expands_On_NFD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; Expands_On_NFD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; Expands_On_NFD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; Expands_On_NFD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; Expands_On_NFD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER GJE
+0457 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER YI
+045C..045E ; Expands_On_NFD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; Expands_On_NFD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; Expands_On_NFD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0622..0626 ; Expands_On_NFD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+06C0 ; Expands_On_NFD # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; Expands_On_NFD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; Expands_On_NFD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; Expands_On_NFD # Lo DEVANAGARI LETTER NNNA
+0931 ; Expands_On_NFD # Lo DEVANAGARI LETTER RRA
+0934 ; Expands_On_NFD # Lo DEVANAGARI LETTER LLLA
+0958..095F ; Expands_On_NFD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; Expands_On_NFD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; Expands_On_NFD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFD # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFD # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFD # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFD # Lo GURMUKHI LETTER FA
+0B48 ; Expands_On_NFD # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Expands_On_NFD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; Expands_On_NFD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; Expands_On_NFD # Lo TAMIL LETTER AU
+0BCA..0BCC ; Expands_On_NFD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; Expands_On_NFD # Mn TELUGU VOWEL SIGN AI
+0CC0 ; Expands_On_NFD # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; Expands_On_NFD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; Expands_On_NFD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; Expands_On_NFD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0F43 ; Expands_On_NFD # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFD # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFD # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFD # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFD # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFD # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Expands_On_NFD # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; Expands_On_NFD # Lo MYANMAR LETTER UU
+1B06 ; Expands_On_NFD # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; Expands_On_NFD # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; Expands_On_NFD # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; Expands_On_NFD # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; Expands_On_NFD # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; Expands_On_NFD # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; Expands_On_NFD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; Expands_On_NFD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; Expands_On_NFD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; Expands_On_NFD # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E99 ; Expands_On_NFD # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+1E9B ; Expands_On_NFD # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; Expands_On_NFD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; Expands_On_NFD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Expands_On_NFD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Expands_On_NFD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Expands_On_NFD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Expands_On_NFD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC1 ; Expands_On_NFD # Sk GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Expands_On_NFD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Expands_On_NFD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Expands_On_NFD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Expands_On_NFD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Expands_On_NFD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEE ; Expands_On_NFD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FF2..1FF4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+212B ; Expands_On_NFD # L& ANGSTROM SIGN
+219A..219B ; Expands_On_NFD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; Expands_On_NFD # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; Expands_On_NFD # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Expands_On_NFD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; Expands_On_NFD # Sm THERE DOES NOT EXIST
+2209 ; Expands_On_NFD # Sm NOT AN ELEMENT OF
+220C ; Expands_On_NFD # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; Expands_On_NFD # Sm DOES NOT DIVIDE
+2226 ; Expands_On_NFD # Sm NOT PARALLEL TO
+2241 ; Expands_On_NFD # Sm NOT TILDE
+2244 ; Expands_On_NFD # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; Expands_On_NFD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; Expands_On_NFD # Sm NOT ALMOST EQUAL TO
+2260 ; Expands_On_NFD # Sm NOT EQUAL TO
+2262 ; Expands_On_NFD # Sm NOT IDENTICAL TO
+226D..2271 ; Expands_On_NFD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; Expands_On_NFD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; Expands_On_NFD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; Expands_On_NFD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; Expands_On_NFD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; Expands_On_NFD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; Expands_On_NFD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2ADC ; Expands_On_NFD # Sm FORKING
+304C ; Expands_On_NFD # Lo HIRAGANA LETTER GA
+304E ; Expands_On_NFD # Lo HIRAGANA LETTER GI
+3050 ; Expands_On_NFD # Lo HIRAGANA LETTER GU
+3052 ; Expands_On_NFD # Lo HIRAGANA LETTER GE
+3054 ; Expands_On_NFD # Lo HIRAGANA LETTER GO
+3056 ; Expands_On_NFD # Lo HIRAGANA LETTER ZA
+3058 ; Expands_On_NFD # Lo HIRAGANA LETTER ZI
+305A ; Expands_On_NFD # Lo HIRAGANA LETTER ZU
+305C ; Expands_On_NFD # Lo HIRAGANA LETTER ZE
+305E ; Expands_On_NFD # Lo HIRAGANA LETTER ZO
+3060 ; Expands_On_NFD # Lo HIRAGANA LETTER DA
+3062 ; Expands_On_NFD # Lo HIRAGANA LETTER DI
+3065 ; Expands_On_NFD # Lo HIRAGANA LETTER DU
+3067 ; Expands_On_NFD # Lo HIRAGANA LETTER DE
+3069 ; Expands_On_NFD # Lo HIRAGANA LETTER DO
+3070..3071 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; Expands_On_NFD # Lo HIRAGANA LETTER VU
+309E ; Expands_On_NFD # Lm HIRAGANA VOICED ITERATION MARK
+30AC ; Expands_On_NFD # Lo KATAKANA LETTER GA
+30AE ; Expands_On_NFD # Lo KATAKANA LETTER GI
+30B0 ; Expands_On_NFD # Lo KATAKANA LETTER GU
+30B2 ; Expands_On_NFD # Lo KATAKANA LETTER GE
+30B4 ; Expands_On_NFD # Lo KATAKANA LETTER GO
+30B6 ; Expands_On_NFD # Lo KATAKANA LETTER ZA
+30B8 ; Expands_On_NFD # Lo KATAKANA LETTER ZI
+30BA ; Expands_On_NFD # Lo KATAKANA LETTER ZU
+30BC ; Expands_On_NFD # Lo KATAKANA LETTER ZE
+30BE ; Expands_On_NFD # Lo KATAKANA LETTER ZO
+30C0 ; Expands_On_NFD # Lo KATAKANA LETTER DA
+30C2 ; Expands_On_NFD # Lo KATAKANA LETTER DI
+30C5 ; Expands_On_NFD # Lo KATAKANA LETTER DU
+30C7 ; Expands_On_NFD # Lo KATAKANA LETTER DE
+30C9 ; Expands_On_NFD # Lo KATAKANA LETTER DO
+30D0..30D1 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; Expands_On_NFD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; Expands_On_NFD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; Expands_On_NFD # Lo KATAKANA LETTER VU
+30F7..30FA ; Expands_On_NFD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; Expands_On_NFD # Lm KATAKANA VOICED ITERATION MARK
+AC00..D7A3 ; Expands_On_NFD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FB1D ; Expands_On_NFD # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFD # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Expands_On_NFD # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Expands_On_NFD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 12203
+
+# ================================================
+
+# Derived Property: Expands_On_NFC
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+0344 ; Expands_On_NFC # Mn COMBINING GREEK DIALYTIKA TONOS
+0958..095F ; Expands_On_NFC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Expands_On_NFC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFC # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFC # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFC # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFC # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Expands_On_NFC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; Expands_On_NFC # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFC # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFC # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFC # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFC # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFC # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Expands_On_NFC # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER KSSA
+2ADC ; Expands_On_NFC # Sm FORKING
+FB1D ; Expands_On_NFC # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFC # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Expands_On_NFC # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Expands_On_NFC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 85
+
+# ================================================
+
+# Derived Property: Expands_On_NFKD
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00A8 ; Expands_On_NFKD # Sk DIAERESIS
+00AF ; Expands_On_NFKD # Sk MACRON
+00B4 ; Expands_On_NFKD # Sk ACUTE ACCENT
+00B8 ; Expands_On_NFKD # Sk CEDILLA
+00BC..00BE ; Expands_On_NFKD # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00C0..00C5 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; Expands_On_NFKD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; Expands_On_NFKD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; Expands_On_NFKD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; Expands_On_NFKD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; Expands_On_NFKD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132..0137 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+0139..0140 ; Expands_On_NFKD # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+0143..0149 ; Expands_On_NFKD # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C..0151 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; Expands_On_NFKD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; Expands_On_NFKD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01C4..01DC ; Expands_On_NFKD # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F5 ; Expands_On_NFKD # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; Expands_On_NFKD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; Expands_On_NFKD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+02D8..02DD ; Expands_On_NFKD # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+0344 ; Expands_On_NFKD # Mn COMBINING GREEK DIALYTIKA TONOS
+037A ; Expands_On_NFKD # Lm GREEK YPOGEGRAMMENI
+0384..0385 ; Expands_On_NFKD # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Expands_On_NFKD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; Expands_On_NFKD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; Expands_On_NFKD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; Expands_On_NFKD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; Expands_On_NFKD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; Expands_On_NFKD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER GJE
+0457 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER YI
+045C..045E ; Expands_On_NFKD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; Expands_On_NFKD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; Expands_On_NFKD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587 ; Expands_On_NFKD # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0622..0626 ; Expands_On_NFKD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+0675..0678 ; Expands_On_NFKD # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+06C0 ; Expands_On_NFKD # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; Expands_On_NFKD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; Expands_On_NFKD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; Expands_On_NFKD # Lo DEVANAGARI LETTER NNNA
+0931 ; Expands_On_NFKD # Lo DEVANAGARI LETTER RRA
+0934 ; Expands_On_NFKD # Lo DEVANAGARI LETTER LLLA
+0958..095F ; Expands_On_NFKD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; Expands_On_NFKD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; Expands_On_NFKD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFKD # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFKD # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFKD # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFKD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFKD # Lo GURMUKHI LETTER FA
+0B48 ; Expands_On_NFKD # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Expands_On_NFKD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; Expands_On_NFKD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; Expands_On_NFKD # Lo TAMIL LETTER AU
+0BCA..0BCC ; Expands_On_NFKD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; Expands_On_NFKD # Mn TELUGU VOWEL SIGN AI
+0CC0 ; Expands_On_NFKD # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; Expands_On_NFKD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; Expands_On_NFKD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; Expands_On_NFKD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33 ; Expands_On_NFKD # Lo THAI CHARACTER SARA AM
+0EB3 ; Expands_On_NFKD # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; Expands_On_NFKD # Lo [2] LAO HO NO..LAO HO MO
+0F43 ; Expands_On_NFKD # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFKD # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFKD # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFKD # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFKD # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFKD # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; Expands_On_NFKD # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; Expands_On_NFKD # Lo MYANMAR LETTER UU
+1B06 ; Expands_On_NFKD # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; Expands_On_NFKD # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; Expands_On_NFKD # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; Expands_On_NFKD # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; Expands_On_NFKD # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; Expands_On_NFKD # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; Expands_On_NFKD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E9B ; Expands_On_NFKD # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; Expands_On_NFKD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; Expands_On_NFKD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Expands_On_NFKD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Expands_On_NFKD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Expands_On_NFKD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Expands_On_NFKD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; Expands_On_NFKD # Sk GREEK KORONIS
+1FBF..1FC1 ; Expands_On_NFKD # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Expands_On_NFKD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Expands_On_NFKD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Expands_On_NFKD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Expands_On_NFKD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Expands_On_NFKD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEE ; Expands_On_NFKD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FF2..1FF4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; Expands_On_NFKD # Sk [2] GREEK OXIA..GREEK DASIA
+2017 ; Expands_On_NFKD # Po DOUBLE LOW LINE
+2025..2026 ; Expands_On_NFKD # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+2033..2034 ; Expands_On_NFKD # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; Expands_On_NFKD # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; Expands_On_NFKD # Po DOUBLE EXCLAMATION MARK
+203E ; Expands_On_NFKD # Po OVERLINE
+2047..2049 ; Expands_On_NFKD # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; Expands_On_NFKD # Po QUADRUPLE PRIME
+20A8 ; Expands_On_NFKD # Sc RUPEE SIGN
+2100..2101 ; Expands_On_NFKD # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103 ; Expands_On_NFKD # So DEGREE CELSIUS
+2105..2106 ; Expands_On_NFKD # So [2] CARE OF..CADA UNA
+2109 ; Expands_On_NFKD # So DEGREE FAHRENHEIT
+2116 ; Expands_On_NFKD # So NUMERO SIGN
+2120..2122 ; Expands_On_NFKD # So [3] SERVICE MARK..TRADE MARK SIGN
+212B ; Expands_On_NFKD # L& ANGSTROM SIGN
+213B ; Expands_On_NFKD # So FACSIMILE SIGN
+2153..215F ; Expands_On_NFKD # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2161..2163 ; Expands_On_NFKD # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+2165..2168 ; Expands_On_NFKD # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+216A..216B ; Expands_On_NFKD # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+2171..2173 ; Expands_On_NFKD # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+2175..2178 ; Expands_On_NFKD # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+217A..217B ; Expands_On_NFKD # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+219A..219B ; Expands_On_NFKD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; Expands_On_NFKD # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; Expands_On_NFKD # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Expands_On_NFKD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; Expands_On_NFKD # Sm THERE DOES NOT EXIST
+2209 ; Expands_On_NFKD # Sm NOT AN ELEMENT OF
+220C ; Expands_On_NFKD # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; Expands_On_NFKD # Sm DOES NOT DIVIDE
+2226 ; Expands_On_NFKD # Sm NOT PARALLEL TO
+222C..222D ; Expands_On_NFKD # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; Expands_On_NFKD # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2241 ; Expands_On_NFKD # Sm NOT TILDE
+2244 ; Expands_On_NFKD # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; Expands_On_NFKD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; Expands_On_NFKD # Sm NOT ALMOST EQUAL TO
+2260 ; Expands_On_NFKD # Sm NOT EQUAL TO
+2262 ; Expands_On_NFKD # Sm NOT IDENTICAL TO
+226D..2271 ; Expands_On_NFKD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; Expands_On_NFKD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; Expands_On_NFKD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; Expands_On_NFKD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; Expands_On_NFKD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; Expands_On_NFKD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; Expands_On_NFKD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2469..249B ; Expands_On_NFKD # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+249C..24B5 ; Expands_On_NFKD # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+2A0C ; Expands_On_NFKD # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; Expands_On_NFKD # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; Expands_On_NFKD # Sm FORKING
+304C ; Expands_On_NFKD # Lo HIRAGANA LETTER GA
+304E ; Expands_On_NFKD # Lo HIRAGANA LETTER GI
+3050 ; Expands_On_NFKD # Lo HIRAGANA LETTER GU
+3052 ; Expands_On_NFKD # Lo HIRAGANA LETTER GE
+3054 ; Expands_On_NFKD # Lo HIRAGANA LETTER GO
+3056 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZA
+3058 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZI
+305A ; Expands_On_NFKD # Lo HIRAGANA LETTER ZU
+305C ; Expands_On_NFKD # Lo HIRAGANA LETTER ZE
+305E ; Expands_On_NFKD # Lo HIRAGANA LETTER ZO
+3060 ; Expands_On_NFKD # Lo HIRAGANA LETTER DA
+3062 ; Expands_On_NFKD # Lo HIRAGANA LETTER DI
+3065 ; Expands_On_NFKD # Lo HIRAGANA LETTER DU
+3067 ; Expands_On_NFKD # Lo HIRAGANA LETTER DE
+3069 ; Expands_On_NFKD # Lo HIRAGANA LETTER DO
+3070..3071 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; Expands_On_NFKD # Lo HIRAGANA LETTER VU
+309B..309C ; Expands_On_NFKD # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E ; Expands_On_NFKD # Lm HIRAGANA VOICED ITERATION MARK
+309F ; Expands_On_NFKD # Lo HIRAGANA DIGRAPH YORI
+30AC ; Expands_On_NFKD # Lo KATAKANA LETTER GA
+30AE ; Expands_On_NFKD # Lo KATAKANA LETTER GI
+30B0 ; Expands_On_NFKD # Lo KATAKANA LETTER GU
+30B2 ; Expands_On_NFKD # Lo KATAKANA LETTER GE
+30B4 ; Expands_On_NFKD # Lo KATAKANA LETTER GO
+30B6 ; Expands_On_NFKD # Lo KATAKANA LETTER ZA
+30B8 ; Expands_On_NFKD # Lo KATAKANA LETTER ZI
+30BA ; Expands_On_NFKD # Lo KATAKANA LETTER ZU
+30BC ; Expands_On_NFKD # Lo KATAKANA LETTER ZE
+30BE ; Expands_On_NFKD # Lo KATAKANA LETTER ZO
+30C0 ; Expands_On_NFKD # Lo KATAKANA LETTER DA
+30C2 ; Expands_On_NFKD # Lo KATAKANA LETTER DI
+30C5 ; Expands_On_NFKD # Lo KATAKANA LETTER DU
+30C7 ; Expands_On_NFKD # Lo KATAKANA LETTER DE
+30C9 ; Expands_On_NFKD # Lo KATAKANA LETTER DO
+30D0..30D1 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; Expands_On_NFKD # Lo KATAKANA LETTER VU
+30F7..30FA ; Expands_On_NFKD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; Expands_On_NFKD # Lm KATAKANA VOICED ITERATION MARK
+30FF ; Expands_On_NFKD # Lo KATAKANA DIGRAPH KOTO
+3200..321E ; Expands_On_NFKD # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; Expands_On_NFKD # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Expands_On_NFKD # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Expands_On_NFKD # So PARTNERSHIP SIGN
+3251..325F ; Expands_On_NFKD # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+326E..327E ; Expands_On_NFKD # So [17] CIRCLED HANGUL KIYEOK A..CIRCLED HANGUL IEUNG U
+32B1..32BF ; Expands_On_NFKD # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32CF ; Expands_On_NFKD # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+3300..33FF ; Expands_On_NFKD # So [256] SQUARE APAATO..SQUARE GAL
+AC00..D7A3 ; Expands_On_NFKD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FB00..FB06 ; Expands_On_NFKD # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Expands_On_NFKD # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; Expands_On_NFKD # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFKD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFKD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFKD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFKD # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFKD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFKD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Expands_On_NFKD # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+FBA4..FBA5 ; Expands_On_NFKD # Lo [2] ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBB0..FBB1 ; Expands_On_NFKD # Lo [2] ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBDD ; Expands_On_NFKD # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBEA..FBFB ; Expands_On_NFKD # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FC00..FD3D ; Expands_On_NFKD # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Expands_On_NFKD # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Expands_On_NFKD # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Expands_On_NFKD # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Expands_On_NFKD # Sc RIAL SIGN
+FE19 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE49..FE4C ; Expands_On_NFKD # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE70..FE72 ; Expands_On_NFKD # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; Expands_On_NFKD # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FE7F ; Expands_On_NFKD # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+FE81..FE8C ; Expands_On_NFKD # Lo [12] ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FEF5..FEFC ; Expands_On_NFKD # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FFE3 ; Expands_On_NFKD # Sk FULLWIDTH MACRON
+1D15E..1D164 ; Expands_On_NFKD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFKD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 13310
+
+# ================================================
+
+# Derived Property: Expands_On_NFKC
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00A8 ; Expands_On_NFKC # Sk DIAERESIS
+00AF ; Expands_On_NFKC # Sk MACRON
+00B4 ; Expands_On_NFKC # Sk ACUTE ACCENT
+00B8 ; Expands_On_NFKC # Sk CEDILLA
+00BC..00BE ; Expands_On_NFKC # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+0132..0133 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+013F..0140 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+0149 ; Expands_On_NFKC # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+01C4..01CC ; Expands_On_NFKC # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+01F1..01F3 ; Expands_On_NFKC # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+02D8..02DD ; Expands_On_NFKC # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+0344 ; Expands_On_NFKC # Mn COMBINING GREEK DIALYTIKA TONOS
+037A ; Expands_On_NFKC # Lm GREEK YPOGEGRAMMENI
+0384..0385 ; Expands_On_NFKC # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0587 ; Expands_On_NFKC # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0675..0678 ; Expands_On_NFKC # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+0958..095F ; Expands_On_NFKC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Expands_On_NFKC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFKC # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFKC # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFKC # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFKC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFKC # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Expands_On_NFKC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0E33 ; Expands_On_NFKC # Lo THAI CHARACTER SARA AM
+0EB3 ; Expands_On_NFKC # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; Expands_On_NFKC # Lo [2] LAO HO NO..LAO HO MO
+0F43 ; Expands_On_NFKC # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFKC # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFKC # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFKC # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFKC # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFKC # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; Expands_On_NFKC # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER KSSA
+1E9A ; Expands_On_NFKC # L& LATIN SMALL LETTER A WITH RIGHT HALF RING
+1FBD ; Expands_On_NFKC # Sk GREEK KORONIS
+1FBF..1FC1 ; Expands_On_NFKC # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FCD..1FCF ; Expands_On_NFKC # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FDD..1FDF ; Expands_On_NFKC # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FED..1FEE ; Expands_On_NFKC # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FFD..1FFE ; Expands_On_NFKC # Sk [2] GREEK OXIA..GREEK DASIA
+2017 ; Expands_On_NFKC # Po DOUBLE LOW LINE
+2025..2026 ; Expands_On_NFKC # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+2033..2034 ; Expands_On_NFKC # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; Expands_On_NFKC # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; Expands_On_NFKC # Po DOUBLE EXCLAMATION MARK
+203E ; Expands_On_NFKC # Po OVERLINE
+2047..2049 ; Expands_On_NFKC # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; Expands_On_NFKC # Po QUADRUPLE PRIME
+20A8 ; Expands_On_NFKC # Sc RUPEE SIGN
+2100..2101 ; Expands_On_NFKC # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103 ; Expands_On_NFKC # So DEGREE CELSIUS
+2105..2106 ; Expands_On_NFKC # So [2] CARE OF..CADA UNA
+2109 ; Expands_On_NFKC # So DEGREE FAHRENHEIT
+2116 ; Expands_On_NFKC # So NUMERO SIGN
+2120..2122 ; Expands_On_NFKC # So [3] SERVICE MARK..TRADE MARK SIGN
+213B ; Expands_On_NFKC # So FACSIMILE SIGN
+2153..215F ; Expands_On_NFKC # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2161..2163 ; Expands_On_NFKC # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+2165..2168 ; Expands_On_NFKC # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+216A..216B ; Expands_On_NFKC # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+2171..2173 ; Expands_On_NFKC # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+2175..2178 ; Expands_On_NFKC # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+217A..217B ; Expands_On_NFKC # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+222C..222D ; Expands_On_NFKC # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; Expands_On_NFKC # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2469..249B ; Expands_On_NFKC # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+249C..24B5 ; Expands_On_NFKC # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+2A0C ; Expands_On_NFKC # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; Expands_On_NFKC # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; Expands_On_NFKC # Sm FORKING
+309B..309C ; Expands_On_NFKC # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309F ; Expands_On_NFKC # Lo HIRAGANA DIGRAPH YORI
+30FF ; Expands_On_NFKC # Lo KATAKANA DIGRAPH KOTO
+3200..321E ; Expands_On_NFKC # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; Expands_On_NFKC # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Expands_On_NFKC # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Expands_On_NFKC # So PARTNERSHIP SIGN
+3251..325F ; Expands_On_NFKC # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+327C..327D ; Expands_On_NFKC # So [2] CIRCLED KOREAN CHARACTER CHAMKO..CIRCLED KOREAN CHARACTER JUEUI
+32B1..32BF ; Expands_On_NFKC # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32CF ; Expands_On_NFKC # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+3300..33FF ; Expands_On_NFKC # So [256] SQUARE APAATO..SQUARE GAL
+FB00..FB06 ; Expands_On_NFKC # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Expands_On_NFKC # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; Expands_On_NFKC # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFKC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFKC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFKC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFKC # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFKC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFKC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Expands_On_NFKC # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+FBDD ; Expands_On_NFKC # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBEA..FBFB ; Expands_On_NFKC # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FC00..FD3D ; Expands_On_NFKC # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Expands_On_NFKC # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Expands_On_NFKC # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Expands_On_NFKC # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Expands_On_NFKC # Sc RIAL SIGN
+FE19 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE49..FE4C ; Expands_On_NFKC # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE70..FE72 ; Expands_On_NFKC # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; Expands_On_NFKC # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FE7F ; Expands_On_NFKC # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+FEF5..FEFC ; Expands_On_NFKC # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FFE3 ; Expands_On_NFKC # Sk FULLWIDTH MACRON
+1D15E..1D164 ; Expands_On_NFKC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFKC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 1171
+
+# EOF