diff options
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 |