From 526c6fd4686a8e87e5087ebcac941405f742304a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Mon, 15 Feb 2010 13:33:07 +0100 Subject: Prevent stale QWidget pointers in QCocoaView QCocoaView has two "back" pointers ot its owning QWidget and the corresponding QWidgetPrivate. The lifetime of the QCocoaView might be longer and that of the QWidget if Cocoa itself holds references to it. In addition accessing a QWidget that is being destroyed is not safe. Set both pack pointers to NULL in ~QWidget. This prevents following stale pointers in the QCocoaView callbacks. This also means that we'll see the NULL pointers, add gurads for that. --- src/gui/kernel/qcocoaview_mac.mm | 52 ++++++++++++++++++++++++++++++++-- src/gui/kernel/qcocoaview_mac_p.h | 1 + src/gui/kernel/qt_cocoa_helpers_mac.mm | 10 +++++++ src/gui/kernel/qwidget.cpp | 9 ++++++ 4 files changed, 69 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index 455176e..4977042 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 @@ -551,12 +556,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]; @@ -564,6 +575,9 @@ extern "C" { - (void)updateTrackingAreas { + if (!qwidget) + return; + // [NSView addTrackingArea] is slow, so bail out early if we can: if (NSIsEmptyRect([self visibleRect])) return; @@ -597,6 +611,9 @@ extern "C" { - (void)mouseEntered:(NSEvent *)event { + if (!qwidget) + return; + if (qwidgetprivate->data.in_destructor) return; QEvent enterEvent(QEvent::Enter); @@ -619,6 +636,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)) { @@ -637,6 +657,9 @@ extern "C" { - (void)flagsChanged:(NSEvent *)theEvent { + if (!qwidget) + return; + QWidget *widgetToGetKey = qwidget; QWidget *popup = qAppInstance()->activePopupWidget(); @@ -648,6 +671,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 @@ -938,6 +964,8 @@ extern "C" { - (void)frameDidChange:(NSNotification *)note { Q_UNUSED(note); + if (!qwidget) + return; if (qwidget->isWindow()) return; NSRect newFrame = [self frame]; @@ -961,7 +989,7 @@ extern "C" { { QMacCocoaAutoReleasePool pool; [super setEnabled:flag]; - if (qwidget->isEnabled() != flag) + if (qwidget && qwidget->isEnabled() != flag) qwidget->setEnabled(flag); } @@ -972,6 +1000,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; @@ -979,6 +1009,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()) @@ -1014,6 +1046,12 @@ extern "C" { return qwidget; } +- (void) qt_clearQWidget +{ + qwidget = 0; + qwidgetprivate = 0; +} + - (BOOL)qt_leftButtonIsRightButton { return leftButtonIsRightButton; @@ -1067,9 +1105,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); } @@ -1077,6 +1117,9 @@ extern "C" { - (void)viewDidMoveToWindow { + if (qwidget == 0) + return; + if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) { // call update paint event qwidgetprivate->needWindowChange = true; @@ -1272,6 +1315,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/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(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(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(); -- cgit v0.12 From 69abc957bca39bce4ed954b0469eb6abce8173fa Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 23 Feb 2010 11:32:43 +0100 Subject: Move the SIMD detection from QtGui to QtCore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The SIMD instructions are useful outside painting code, the common functions are moved to QtCore Reviewed-by: Samuel Rødal --- src/corelib/corelib.pro | 22 ++++ src/corelib/tools/qsimd.cpp | 227 +++++++++++++++++++++++++++++++++++++++ src/corelib/tools/qsimd_p.h | 122 +++++++++++++++++++++ src/corelib/tools/tools.pri | 2 + src/gui/painting/qdrawhelper.cpp | 196 +-------------------------------- src/gui/painting/qdrawhelper_p.h | 9 -- 6 files changed, 375 insertions(+), 203 deletions(-) create mode 100644 src/corelib/tools/qsimd.cpp create mode 100644 src/corelib/tools/qsimd_p.h diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro index 7f33791..4bffd0f 100644 --- a/src/corelib/corelib.pro +++ b/src/corelib/corelib.pro @@ -38,3 +38,25 @@ symbian: { # Timezone server LIBS += -ltzclient } + +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/qsimd.cpp b/src/corelib/tools/qsimd.cpp new file mode 100644 index 0000000..331a699 --- /dev/null +++ b/src/corelib/tools/qsimd.cpp @@ -0,0 +1,227 @@ +/**************************************************************************** +** +** 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 + +QT_BEGIN_NAMESPACE + +uint qDetectCPUFeatures() +{ +#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 +} + +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..d535762 --- /dev/null +++ b/src/corelib/tools/qsimd_p.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** 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 + + +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(QT_HAVE_SSE2) || defined(QT_HAVE_SSE) || defined(QT_HAVE_MMX) +#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 +# undef posix_memalign +#else +# include +#endif +#endif + +// NEON intrinsics +#if defined(QT_HAVE_NEON) +#include +#endif + + +// IWMMXT intrinsics +#if defined(QT_HAVE_IWMMXT) +#include +#if defined(Q_OS_WINCE) +# include "qplatformdefs.h" +#endif +#endif + +#if !defined(__IWMMXT__) && !defined(Q_OS_WINCE) +# include +#elif defined(Q_OS_WINCE_STD) && defined(_X86_) +# pragma warning(disable: 4391) +# include +#endif + +// 3D now intrinsics +#if defined(QT_HAVE_3DNOW) +#include +#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/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/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 194dda3..b9aa9ce 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include 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. @@ -8008,7 +7816,7 @@ void qInitDrawhelperAsm() static uint features = 0xffffffff; if (features != 0xffffffff) return; - features = detectCPUFeatures(); + features = qDetectCPUFeatures(); qt_memfill32 = qt_memfill_template; qt_memfill16 = qt_memfill_quint16; //qt_memfill_template; diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index 6c47aac..474ebcf 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) -- cgit v0.12 From d7181ae996f9add10bf4e956ddbedff99cb19378 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 23 Feb 2010 16:05:38 +0100 Subject: Cache the result of qDetectCPUFeatures() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the caching of the result from drawhelper to qsimd.cpp. Avoid getting the environment variables when not necessary Reviewed-by: Samuel Rødal --- src/corelib/tools/qsimd.cpp | 33 ++++++++++++++++++++++++++------- src/gui/painting/qdrawhelper.cpp | 5 +---- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index 331a699..4ba8901 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -46,12 +46,18 @@ 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)) - return IWMMXT; + if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX)) { + features = IWMMXT; + return features; + } #elif defined(_X86_) - uint features = 0; + features = 0; #if defined QT_HAVE_MMX if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE)) features |= MMX; @@ -62,16 +68,19 @@ uint qDetectCPUFeatures() #endif return features; #endif - return 0; + 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(); - return doIWMMXT ? IWMMXT : 0; + features = doIWMMXT ? IWMMXT : 0 + return features; #elif defined(QT_HAVE_NEON) static const bool doNEON = !qgetenv("QT_NO_NEON").toInt(); - return doNEON ? NEON : 0; + features = doNEON ? NEON : 0 + return features; #else - uint features = 0; + features = 0; #if defined(__x86_64__) || defined(Q_OS_WIN64) features = MMX|SSE|SSE2|CMOV; #elif defined(__ia64__) @@ -207,18 +216,28 @@ uint qDetectCPUFeatures() 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 diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index b9aa9ce..40fe499 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7813,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 = qDetectCPUFeatures(); + const uint features = qDetectCPUFeatures(); qt_memfill32 = qt_memfill_template; qt_memfill16 = qt_memfill_quint16; //qt_memfill_template; -- cgit v0.12 From 60fd302e8d88b92ade59d68872c99310128c3a6c Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 23 Feb 2010 17:06:41 +0100 Subject: Implement QString::fromLatin1_helper() with SSE2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When there is at least 16 characters, use SSE2 to convert from 8bits to 16 bits. Reviewed-by: Samuel Rødal Reveiwed-by: Thiago Macieira --- src/corelib/tools/qsimd_p.h | 9 +++++++++ src/corelib/tools/qstring.cpp | 24 ++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index d535762..d0a057e 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -60,6 +60,15 @@ QT_MODULE(Core) #undef QT_HAVE_MMX #endif + +#if defined(__x86_64__) || defined(Q_OS_WIN64) || defined(__ia64__) || defined(__SSE2__) +#if defined(QT_HAVE_SSE2) +// Defined for small fast functions that can take advantages of SSE2 intrinsics +#define QT_ALWAYS_HAVE_SSE2 +#endif +#endif + + // SSE intrinsics #if defined(QT_HAVE_SSE2) || defined(QT_HAVE_SSE) || defined(QT_HAVE_MMX) #if defined(QT_LINUXBASE) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index dec59b7..571a015 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -46,6 +46,7 @@ #include #endif #include +#include "qsimd_p.h" #include #include #include "qlocale.h" @@ -3612,10 +3613,29 @@ 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; +#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); + str += 16; + + const __m128i firstHalf = _mm_unpacklo_epi8(chunk, nullMask); + _mm_storeu_si128((__m128i*)dst, firstHalf); + dst += 8; + + const __m128i secondHalf = _mm_unpackhi_epi8 (chunk, nullMask); + _mm_storeu_si128((__m128i*)dst, secondHalf); + dst += 8; + } + size = size % 16; + } +#endif while (size--) - *i++ = (uchar)*str++; + *dst++ = (uchar)*str++; } return d; } -- cgit v0.12 From 7fb1434479001890b073405d53c7814143e9929a Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 23 Feb 2010 22:04:09 +0100 Subject: Build fixes for the SIMD functions Two semicolons were missing for arm. The MMX header was included for all non-x86 platforms. --- src/corelib/tools/qsimd.cpp | 4 ++-- src/corelib/tools/qsimd_p.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index 4ba8901..52d2cea 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -73,11 +73,11 @@ uint qDetectCPUFeatures() #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 + features = doIWMMXT ? IWMMXT : 0; return features; #elif defined(QT_HAVE_NEON) static const bool doNEON = !qgetenv("QT_NO_NEON").toInt(); - features = doNEON ? NEON : 0 + features = doNEON ? NEON : 0; return features; #else features = 0; diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index d0a057e..07fae97 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -96,12 +96,14 @@ QT_MODULE(Core) #endif #endif +#if defined(QT_HAVE_IWMMXT) #if !defined(__IWMMXT__) && !defined(Q_OS_WINCE) # include #elif defined(Q_OS_WINCE_STD) && defined(_X86_) # pragma warning(disable: 4391) # include #endif +#endif // 3D now intrinsics #if defined(QT_HAVE_3DNOW) -- cgit v0.12 From 5d6d552c4c01c1e8884d7641c81671e808eed55d Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 24 Feb 2010 11:29:52 +0100 Subject: Comments the SSE implementation of fromLatin1_helper() Add comments to explain the intrinsics. Comment on the general method. Share the information that it is not worth it to do the same on with Neon. --- src/corelib/tools/qstring.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 9431ef4..f8303bd 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3650,20 +3650,26 @@ QString::Data *QString::fromLatin1_helper(const char *str, int size) d->data = d->array; 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); + 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); + _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); + _mm_storeu_si128((__m128i*)dst, secondHalf); // store dst += 8; } size = size % 16; -- cgit v0.12 From 5a3a5cd17496bc49c005df8f92ec2ffb56187281 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 11:01:32 +0100 Subject: Fix compilation on x86 with gcc if SSE2 is not enabled Reviewed-By: Benjamin Poulain --- src/corelib/tools/qsimd_p.h | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 07fae97..556db14 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -60,17 +60,8 @@ QT_MODULE(Core) #undef QT_HAVE_MMX #endif - -#if defined(__x86_64__) || defined(Q_OS_WIN64) || defined(__ia64__) || defined(__SSE2__) -#if defined(QT_HAVE_SSE2) -// Defined for small fast functions that can take advantages of SSE2 intrinsics -#define QT_ALWAYS_HAVE_SSE2 -#endif -#endif - - // SSE intrinsics -#if defined(QT_HAVE_SSE2) || defined(QT_HAVE_SSE) || defined(QT_HAVE_MMX) +#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 @@ -80,6 +71,8 @@ QT_MODULE(Core) #else # include #endif + +#define QT_ALWAYS_HAVE_SSE2 #endif // NEON intrinsics -- cgit v0.12 From 5d98d7fb3e961d32819ae9831b715780487612e0 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 12:33:04 +0100 Subject: Add an extra operator delete() to QSharedPointer's internals. Maybe this fixes a warning that MSVC produces. But no guarantees. Task-number: QTBUG-8462 Reviewed-by: Trust Me --- src/corelib/tools/qsharedpointer_impl.h | 1 + 1 file changed, 1 insertion(+) 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) -- cgit v0.12 From b35d2d4717f71b4e519d33160dfce8b23607f9c8 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Thu, 18 Feb 2010 11:21:48 +0100 Subject: Cache scene coordinates of a hotspot in a QGesture. Reviewed-by: trustme --- src/gui/graphicsview/qgraphicsscene.cpp | 27 ++++++++++++++++++--------- src/gui/graphicsview/qgraphicsscene_p.h | 4 ++-- src/gui/kernel/qgesture_p.h | 2 +- src/gui/kernel/qgesturerecognizer.cpp | 1 + 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index aaae88e..34543e3 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -5901,7 +5901,6 @@ void QGraphicsScenePrivate::leaveModal(QGraphicsItem *panel) } void QGraphicsScenePrivate::getGestureTargets(const QSet &gestures, - QWidget *viewport, QMap *conflictedGestures, QList > *conflictedItems, QHash *normalGestures) @@ -5909,8 +5908,7 @@ void QGraphicsScenePrivate::getGestureTargets(const QSet &gestures, foreach (QGesture *gesture, gestures) { Qt::GestureType gestureType = gesture->gestureType(); if (gesture->hasHotSpot()) { - QPoint screenPos = gesture->hotSpot().toPoint(); - QList items = itemsAtPosition(screenPos, QPointF(), viewport); + QList items = itemsAtPosition(QPoint(), gesture->d_func()->sceneHotSpot, 0); QList result; for (int j = 0; j < items.size(); ++j) { QGraphicsItem *item = items.at(j); @@ -5946,6 +5944,10 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) QWidget *viewport = event->widget(); if (!viewport) return; + QGraphicsView *graphicsView = qobject_cast(viewport->parent()); + if (!graphicsView) + return; + QList allGestures = event->gestures(); DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:" << "Delivering gestures:" << allGestures; @@ -5958,6 +5960,14 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) QSet startedGestures; foreach (QGesture *gesture, allGestures) { + // cache scene coordinates of the hot spot + if (gesture->hasHotSpot()) { + gesture->d_func()->sceneHotSpot = graphicsView->mapToScene( + graphicsView->mapFromGlobal(gesture->hotSpot().toPoint())); + } 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 @@ -5976,7 +5986,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) QMap conflictedGestures; QList > conflictedItems; QHash normalGestures; - getGestureTargets(startedGestures, viewport, &conflictedGestures, &conflictedItems, + getGestureTargets(startedGestures, &conflictedGestures, &conflictedItems, &normalGestures); DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:" << "Conflicting gestures:" << conflictedGestures.values() << conflictedItems; @@ -6186,7 +6196,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) QMap conflictedGestures; QList > itemsForConflictedGestures; QHash normalGestures; - getGestureTargets(ignoredGestures, viewport, + getGestureTargets(ignoredGestures, &conflictedGestures, &itemsForConflictedGestures, &normalGestures); for (int k = 0; k < itemsForConflictedGestures.size(); ++k) @@ -6205,7 +6215,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) 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); } } @@ -6222,7 +6232,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) } } -void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidget *viewport) +void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original) { Q_ASSERT(original); QGraphicsItem *originalItem = gestureTargets.value(original); @@ -6278,8 +6288,7 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidge if (!g->hasHotSpot()) continue; - QPoint screenPos = g->hotSpot().toPoint(); - QList items = itemsAtPosition(screenPos, QPointF(), viewport); + QList 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..2e19a89 100644 --- a/src/gui/graphicsview/qgraphicsscene_p.h +++ b/src/gui/graphicsview/qgraphicsscene_p.h @@ -296,11 +296,11 @@ public: QHash gestureTargets; void gestureEventHandler(QGestureEvent *event); - void getGestureTargets(const QSet &gestures, QWidget *viewport, + void getGestureTargets(const QSet &gestures, QMap *conflictedGestures, QList > *conflictedItems, QHash *normalGestures); - void cancelGesturesForChildren(QGesture *original, QWidget *viewport); + void cancelGesturesForChildren(QGesture *original); void updateInputMethodSensitivityInViews(); 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; } } -- cgit v0.12 From 97b7a880cf97c166600df097ee178b8dec8cf3ce Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Mon, 22 Feb 2010 18:39:50 +0100 Subject: Fixed a gesture autotest. Reviewed-by: trustme --- tests/auto/gestures/tst_gestures.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp index 24391c0..1765a30 100644 --- a/tests/auto/gestures/tst_gestures.cpp +++ b/tests/auto/gestures/tst_gestures.cpp @@ -1549,7 +1549,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); -- cgit v0.12 From 734ba1f540aaedc4a3558268bd7350c0b15325a4 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Tue, 23 Feb 2010 13:24:42 +0100 Subject: Improved gesture event delivery in graphicsview. Made it possible to delete a gesture target from a gesture event handler. It is still not possible to delete some items (like an item that originated the gesture, i.e. that that the event that triggered the gesture to start), and in that case deleteLater() should be used. Reviewed-by: Andreas Aardal Hanssen --- src/gui/graphicsview/qgraphicsscene.cpp | 435 +++++++++++++++----------------- src/gui/graphicsview/qgraphicsscene_p.h | 13 +- tests/auto/gestures/tst_gestures.cpp | 139 +++++++++- 3 files changed, 343 insertions(+), 244 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 34543e3..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::iterator it; + for (it = gestureTargets.begin(); it != gestureTargets.end();) { + if (it.value() == item) + it = gestureTargets.erase(it); + else + ++it; + } + QGraphicsObject *dummy = static_cast(item); + cachedTargetItems.removeOne(dummy); + cachedItemGestures.remove(dummy); + cachedAlreadyDeliveredGestures.remove(dummy); } /*! @@ -5900,43 +5912,51 @@ void QGraphicsScenePrivate::leaveModal(QGraphicsItem *panel) dispatchHoverEvent(&hoverEvent); } -void QGraphicsScenePrivate::getGestureTargets(const QSet &gestures, - QMap *conflictedGestures, - QList > *conflictedItems, - QHash *normalGestures) +void QGraphicsScenePrivate::gestureTargetsAtHotSpots(const QSet &gestures, + Qt::GestureFlag flag, + QHash > *targets, + QSet *itemsSet, + QSet *normal, + QSet *conflicts) { + QSet normalGestures; // that are not in conflicted state. foreach (QGesture *gesture, gestures) { - Qt::GestureType gestureType = gesture->gestureType(); - if (gesture->hasHotSpot()) { - QList items = itemsAtPosition(QPoint(), gesture->d_func()->sceneHotSpot, 0); - QList 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 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::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) @@ -5952,18 +5972,14 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:" << "Delivering gestures:" << allGestures; - typedef QHash > GesturesPerItem; - GesturesPerItem gesturesPerItem; - - // gestures that are only supposed to propagate to parent items. - QSet parentPropagatedGestures; - QSet 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 = graphicsView->mapToScene( - graphicsView->mapFromGlobal(gesture->hotSpot().toPoint())); + gesture->d_func()->sceneHotSpot = toScene.map(gesture->hotSpot()); } else { gesture->d_func()->sceneHotSpot = QPointF(); } @@ -5974,243 +5990,184 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) // 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 conflictedGestures; - QList > conflictedItems; - QHash normalGestures; - getGestureTargets(startedGestures, &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 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 grabbedGestures = - topmost->QGraphicsItem::d_func()->gestureContext.keys(); - QList 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 normalGestures; // that have just one target + QSet 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 item = cachedTargetItems.at(i); + + // get gestures to deliver to the current item + QSet 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 &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::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 alreadyIgnoredGestures; - QHash > itemIgnoredGestures; - QList targetItems = gesturesPerItem.keys(); - qSort(targetItems.begin(), targetItems.end(), qt_closestItemFirst); - for (int i = 0; i < targetItems.size(); ++i) { - QGraphicsObject *item = targetItems.at(i); - QList 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::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 undeliveredGestures; + QSet 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 receiver = cachedTargetItems.at(i); + QSet 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 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 parentGestures; - for (QSet::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; + + // 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 targetsSet = cachedTargetItems.toSet(); + + if (receiver) { + // first if the gesture should be propagated to parents only + for (QSet::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(); + } - QSet 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); + it = ignoredGestures.erase(it); + continue; } - if (item->isPanel()) - break; - } while ((item = item->parentItem())); + ++it; + } } - QMap conflictedGestures; - QList > itemsForConflictedGestures; - QHash normalGestures; - getGestureTargets(ignoredGestures, - &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"; @@ -6230,6 +6187,10 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) break; } } + + cachedTargetItems.clear(); + cachedItemGestures.clear(); + cachedAlreadyDeliveredGestures.clear(); } void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original) diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h index 2e19a89..ca8b829 100644 --- a/src/gui/graphicsview/qgraphicsscene_p.h +++ b/src/gui/graphicsview/qgraphicsscene_p.h @@ -294,12 +294,17 @@ public: bool allItemsIgnoreTouchEvents; void enableTouchEventsOnViews(); + QList cachedTargetItems; + QHash > cachedItemGestures; + QHash > cachedAlreadyDeliveredGestures; QHash gestureTargets; void gestureEventHandler(QGestureEvent *event); - void getGestureTargets(const QSet &gestures, - QMap *conflictedGestures, - QList > *conflictedItems, - QHash *normalGestures); + void gestureTargetsAtHotSpots(const QSet &gestures, + Qt::GestureFlag flag, + QHash > *targets, + QSet *itemsSet = 0, + QSet *normal = 0, + QSet *conflicts = 0); void cancelGesturesForChildren(QGesture *original); void updateInputMethodSensitivityInViews(); diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp index 1765a30..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 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(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; @@ -1724,5 +1769,93 @@ void tst_Gestures::panelStacksBehindParent() QCOMPARE(panel->gestureOverrideEventsReceived, 0); } +void tst_Gestures::deleteGestureTargetWidget() +{ + +} + +void tst_Gestures::deleteGestureTargetItem_data() +{ + QTest::addColumn("propagateUpdateGesture"); + QTest::addColumn("emitter"); + QTest::addColumn("receiver"); + QTest::addColumn("signalName"); + QTest::addColumn("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 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" -- cgit v0.12 From 513395fa2e4ee8564a202a38584e1887c08f91db Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 13:18:28 +0100 Subject: Compile on Linux: close(2) is defined in #include Reviewed-by: Trust Me --- src/plugins/bearer/generic/qgenericengine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index a95b14b..e96b80c 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -60,6 +60,7 @@ #include #include #include +#include #endif -- cgit v0.12 From b960edf4ba6eafb8d3b51aca2d7d11080b7f4213 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 13:21:26 +0100 Subject: Autotest: add a test to ensure that the Qt headers are clean. The test here is to compile all Qt headers with QT_NO_KEYWORDS as well as ensuring that all #includes have the module prefix. QtDeclarative is currently disabled because the headers aren't clean and I can't fix them until the renaming is done. --- tests/auto/headers/headers.pro | 2 +- tests/auto/headers/headersclean.cpp | 86 +++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 tests/auto/headers/headersclean.cpp 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 +#include +#include + +// extra +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// webkit: +#include + +// designer: +#include +#include + +// feature dependent: +#ifndef QT_NO_OPENVG +#include +#endif + +// removed in 4.7: +//#include + +// can't include this since it causes a linker error +//#include -- cgit v0.12 From 1a0697308313ff13b3b6f4712d540304b6b0e575 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Wed, 24 Feb 2010 14:21:31 +0100 Subject: Doc: add \since 4.7 to new QtMultimedia classes --- src/multimedia/base/qgraphicsvideoitem.cpp | 3 ++- src/multimedia/base/qmediacontent.cpp | 1 + src/multimedia/base/qmediacontrol.cpp | 1 + src/multimedia/base/qmediaobject.cpp | 1 + src/multimedia/base/qmediaplaylist.cpp | 1 + src/multimedia/base/qmediaplaylistcontrol.cpp | 1 + src/multimedia/base/qmediaplaylistioplugin.cpp | 3 +++ src/multimedia/base/qmediaplaylistnavigator.cpp | 1 + src/multimedia/base/qmediaplaylistprovider.cpp | 1 + src/multimedia/base/qmediaresource.cpp | 1 + src/multimedia/base/qmediaservice.cpp | 1 + src/multimedia/base/qmediaserviceprovider.cpp | 6 ++++++ src/multimedia/base/qmediatimerange.cpp | 2 ++ src/multimedia/base/qmetadatacontrol.cpp | 2 +- src/multimedia/base/qvideodevicecontrol.cpp | 1 + src/multimedia/base/qvideooutputcontrol.cpp | 2 +- src/multimedia/base/qvideorenderercontrol.cpp | 2 +- src/multimedia/base/qvideowidget.cpp | 2 +- src/multimedia/base/qvideowidgetcontrol.cpp | 2 +- src/multimedia/base/qvideowindowcontrol.cpp | 1 + src/multimedia/playback/qmediaplayer.cpp | 2 +- src/multimedia/playback/qmediaplayercontrol.cpp | 2 +- 22 files changed, 31 insertions(+), 8 deletions(-) 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 3e32af0..109a0f0 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 76377d9..37f0fce 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. */ @@ -599,6 +601,7 @@ QT_END_NAMESPACE /*! \class QMediaServiceProviderPlugin \preliminary + \since 4.7 \brief The QMediaServiceProviderPlugin class interface provides an interface for QMediaService plug-ins. @@ -632,6 +635,7 @@ QT_END_NAMESPACE \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. */ @@ -658,6 +662,7 @@ QT_END_NAMESPACE \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. */ @@ -684,6 +689,7 @@ QT_END_NAMESPACE \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. -- cgit v0.12 From 3d25c963adadc5b0f8ae6282790aef11b5f6a9cc Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 24 Feb 2010 14:22:37 +0100 Subject: Implement toLatin1_helper with SSE2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Encoding to latin1 can be done 8 characters at a time with SSE2. The speed difference on a current CPU : -<16 characters: no change: 100% -16 characters string: 120% -1000 characters: 230% -10000 characters: 322% Reviewed-by: Samuel Rødal --- src/corelib/tools/qstring.cpp | 54 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index f8303bd..995e4cf 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3480,12 +3480,54 @@ static QByteArray toLatin1_helper(const QChar *data, int length) QByteArray ba; if (length) { ba.resize(length); - const ushort *i = reinterpret_cast(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(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('?'); + const __m128i thresholdMask = _mm_set1_epi16(0xff); + 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 offLimitMask = _mm_cmpgt_epi16(chunk1, 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 offLimitMask = _mm_cmpgt_epi16(chunk2, 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_packs_epi16(chunk1, chunk2); + + _mm_storeu_si128((__m128i*)dst, result); // store + dst += 16; + } + length = length % 16; + } +#endif + while (length--) { + *dst++ = (*src>0xff) ? '?' : (uchar) *src; + ++src; } } return ba; -- cgit v0.12 From 61f81db089f45fe56419bc4b695bdbb475b0684a Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Wed, 24 Feb 2010 15:46:10 +0200 Subject: QScriptValue::isQMetaObject crash fix. QScriptValue::isQMetaObject shouldn't crash for a value that internally is represented as a non JSObjects values. Additional check was added to QScriptEnginePrivate::isQMetaObject. Reviewed-by: Kent Hansen --- src/script/api/qscriptengine_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 -- cgit v0.12 From 90e2ad422e55307bbab57dc1f4d627d6ae592489 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Wed, 24 Feb 2010 16:03:44 +0200 Subject: Fix license template. Fix license template inside the qscriptvalue autotest generator. Reviewed-by: TrustMe --- tests/auto/qscriptvalue/testgen/gen.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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. -- cgit v0.12 From 94ba971e824d697277b11c5c766325bce9980bbe Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Wed, 24 Feb 2010 16:22:06 +0200 Subject: QScriptValue autotest generator templates change. Each generated test case should check if a result is deterministic. The future generation of QScriptValue will be based on a state machine. The state might be changed after each function call, so it is worth of testing if result is always the same. Reviewed-by: Kent Hansen --- tests/auto/qscriptvalue/testgen/testgenerator.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) 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& 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(const QString& name, const QList >& 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(const QList >& 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"; -- cgit v0.12 From 508d0d0f7089c6b737ee10b1245ef9e1fc4240a6 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Wed, 24 Feb 2010 16:35:38 +0200 Subject: New autotests cases for QScriptValue autotests generator. Few test cases were added. They test values returned from QScriptEngine functions; evaluate(), newDate(), newObject() and newArray(). Reviewed-by: Kent Hansen --- tests/auto/qscriptvalue/testgen/data.txt | 37 +++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tests/auto/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvalue/testgen/data.txt index a041c9b..2ab2fc9 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,40 @@ 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()) -- cgit v0.12 From 2de691f9505cba2fd20b91d7cc7ea7e90bac71a0 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Wed, 24 Feb 2010 16:48:03 +0200 Subject: Update of the QScriptValue autotest suite. tst_qscriptvalue_generated.cpp was updated after last few autotest generator modifications. Reviewed-by: Kent Hansen --- .../qscriptvalue/tst_qscriptvalue_generated.cpp | 3114 ++++++++++++++++++++ 1 file changed, 3114 insertions(+) diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp index 4e621b3..1f68cb5 100644 --- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp +++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp @@ -152,8 +152,39 @@ 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())); } @@ -269,8 +300,39 @@ 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())" ; } newRow(expr) << isValid.contains(expr); @@ -280,6 +342,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 +364,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 +375,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 +397,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 +408,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 +466,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 +489,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) @@ -439,6 +523,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,6 +542,7 @@ 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()" ; } @@ -467,6 +553,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 +599,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 +613,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 +633,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,6 +644,7 @@ 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) @@ -585,6 +680,14 @@ 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())" ; } newRow(expr) << isObject.contains(expr); @@ -594,6 +697,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 +714,7 @@ void tst_QScriptValue::isDate_makeData(const char* expr) static QSet isDate; if (isDate.isEmpty()) { isDate << "engine->evaluate(\"Date.prototype\")" + << "engine->newDate(QDateTime())" ; } newRow(expr) << isDate.contains(expr); @@ -619,6 +724,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 +750,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 +769,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 +780,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 +798,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 +811,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 +931,39 @@ 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"); } newRow(expr) << toString.value(expr); } @@ -826,6 +972,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 +1091,39 @@ 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()); } newRow(expr) << toNumber.value(expr); } @@ -959,9 +1137,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 +1260,39 @@ 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); } newRow(expr) << toBool.value(expr); } @@ -1090,6 +1301,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 +1420,39 @@ 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); } newRow(expr) << toBoolean.value(expr); } @@ -1218,6 +1461,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 +1580,39 @@ 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); } newRow(expr) << toInteger.value(expr); } @@ -1347,9 +1622,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 +1745,39 @@ 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); } newRow(expr) << toInt32.value(expr); } @@ -1478,6 +1786,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 +1905,39 @@ 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); } newRow(expr) << toUInt32.value(expr); } @@ -1606,6 +1946,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 +2065,39 @@ 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); } newRow(expr) << toUInt16.value(expr); } @@ -1734,6 +2106,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,6 +2131,8 @@ 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::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)"); @@ -1767,11 +2142,14 @@ 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(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 +2171,20 @@ 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(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 +2206,12 @@ 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.0) <=> QScriptValue(false)"); equals.insert("QScriptValue(0.0) <=> QScriptValue(0)"); equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)"); @@ -1841,39 +2233,54 @@ 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(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(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 +2290,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 +2330,11 @@ 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()) <=> QScriptValue(false)"); equals.insert("QScriptValue(QString()) <=> QScriptValue(0)"); equals.insert("QScriptValue(QString()) <=> QScriptValue(0.0)"); @@ -1937,6 +2353,11 @@ 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(\"0\")) <=> QScriptValue(false)"); equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0)"); equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)"); @@ -1949,13 +2370,20 @@ 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(\"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(\"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,6 +2391,8 @@ 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::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)"); @@ -1972,11 +2402,14 @@ 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, 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 +2431,20 @@ 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, 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 +2466,12 @@ 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.0) <=> QScriptValue(false)"); equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)"); equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)"); @@ -2046,39 +2493,54 @@ 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, 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, 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 +2550,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 +2590,11 @@ 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()) <=> QScriptValue(false)"); equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0)"); equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0.0)"); @@ -2142,6 +2613,11 @@ 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(\"0\")) <=> QScriptValue(false)"); equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)"); equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)"); @@ -2154,12 +2630,18 @@ 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(\"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(\"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,6 +2650,8 @@ 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::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)"); @@ -2177,11 +2661,14 @@ 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, 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 +2690,20 @@ 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, 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 +2725,12 @@ 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.0) <=> QScriptValue(false)"); equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)"); equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)"); @@ -2251,39 +2752,54 @@ 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, 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, 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 +2809,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 +2849,11 @@ 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()) <=> QScriptValue(false)"); equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0)"); equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0.0)"); @@ -2347,6 +2872,11 @@ 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(\"0\")) <=> QScriptValue(false)"); equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)"); equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)"); @@ -2359,12 +2889,18 @@ 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(\"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(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))"); equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(false)"); equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0)"); @@ -2382,6 +2918,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,6 +2929,8 @@ 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(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")"); @@ -2409,6 +2951,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 +2982,229 @@ 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(\"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(\"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(\"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.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(\"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(\"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(\"'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(\"'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(\"'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,6 +3212,8 @@ 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->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)"); @@ -2453,8 +3223,33 @@ 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->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())"); } QHash::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -2489,59 +3284,77 @@ 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(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 +3370,113 @@ 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, 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 +3492,112 @@ 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, 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 +3613,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 +3667,125 @@ 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(\"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->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())"); } QHash::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -2872,6 +3851,18 @@ 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(true) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(true) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(true) <=> QScriptValue(123.0)"); @@ -2902,6 +3893,16 @@ 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(false) <=> QScriptValue(true)"); equals.insert("QScriptValue(false) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(false) <=> QScriptValue(uint(124))"); @@ -2938,6 +3939,18 @@ 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(int(122)) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(int(122)) <=> QScriptValue(123.0)"); equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x43211234)"); @@ -2962,6 +3975,13 @@ 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(uint(124)) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10000)"); equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10001)"); @@ -2977,6 +3997,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 +4037,18 @@ 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.0) <=> QScriptValue(true)"); equals.insert("QScriptValue(0.0) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(0.0) <=> QScriptValue(uint(124))"); @@ -3049,6 +4085,18 @@ 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(123.0) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(123.0) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10000)"); @@ -3067,6 +4115,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 +4153,17 @@ 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) <=> QScriptValue(QScriptValue::NullValue)"); equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(true)"); equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(false)"); @@ -3160,13 +4224,33 @@ 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(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 +4263,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 +4275,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 +4340,27 @@ 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(\"NaN\") <=> QScriptValue(\"ciao\")"); equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")"); @@ -3268,6 +4377,12 @@ 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(\"Infinity\") <=> QScriptValue(\"NaN\")"); equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")"); equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); @@ -3287,6 +4402,12 @@ 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\") <=> QScriptValue(QScriptValue::NullValue)"); equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(true)"); equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(false)"); @@ -3363,7 +4484,31 @@ 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(\"ciao\") <=> engine->evaluate(\"Function.prototype\")"); equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")"); equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")"); @@ -3444,6 +4589,26 @@ 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()) <=> QScriptValue(true)"); equals.insert("QScriptValue(QString()) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(QString()) <=> QScriptValue(uint(124))"); @@ -3508,6 +4673,26 @@ 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(\"0\")) <=> QScriptValue(true)"); equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))"); @@ -3565,6 +4750,24 @@ 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(\"123\")) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)"); @@ -3604,6 +4807,17 @@ 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(\"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 +4866,21 @@ 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(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 +4917,18 @@ 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, true) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(0, true) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(0, true) <=> QScriptValue(123.0)"); @@ -3718,6 +4959,16 @@ 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, false) <=> QScriptValue(true)"); equals.insert("QScriptValue(0, false) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(0, false) <=> QScriptValue(uint(124))"); @@ -3754,6 +5005,18 @@ 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, int(122)) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(123.0)"); equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)"); @@ -3778,6 +5041,13 @@ 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, uint(124)) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)"); equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)"); @@ -3793,6 +5063,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 +5103,18 @@ 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.0) <=> QScriptValue(true)"); equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(uint(124))"); @@ -3865,6 +5151,18 @@ 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, 123.0) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10000)"); @@ -3883,6 +5181,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 +5219,17 @@ 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) <=> QScriptValue(QScriptValue::NullValue)"); equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(true)"); equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(false)"); @@ -3976,13 +5290,33 @@ 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, 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 +5329,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 +5341,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 +5406,27 @@ 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, \"NaN\") <=> QScriptValue(\"ciao\")"); equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")"); @@ -4084,6 +5443,12 @@ 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, \"Infinity\") <=> QScriptValue(\"NaN\")"); equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")"); equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); @@ -4103,6 +5468,12 @@ 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\") <=> QScriptValue(QScriptValue::NullValue)"); equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)"); equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)"); @@ -4179,7 +5550,31 @@ 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, \"ciao\") <=> engine->evaluate(\"Function.prototype\")"); equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")"); equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")"); @@ -4260,6 +5655,26 @@ 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()) <=> QScriptValue(true)"); equals.insert("QScriptValue(0, QString()) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(0, QString()) <=> QScriptValue(uint(124))"); @@ -4324,6 +5739,26 @@ 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(\"0\")) <=> QScriptValue(true)"); equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))"); @@ -4381,6 +5816,24 @@ 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(\"123\")) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)"); @@ -4420,6 +5873,17 @@ 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(\"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 +5933,22 @@ 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(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 +5985,18 @@ 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, true) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(engine, true) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(engine, true) <=> QScriptValue(123.0)"); @@ -4535,6 +6027,16 @@ 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, false) <=> QScriptValue(true)"); equals.insert("QScriptValue(engine, false) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(engine, false) <=> QScriptValue(uint(124))"); @@ -4571,6 +6073,18 @@ 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, int(122)) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(123.0)"); equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)"); @@ -4595,6 +6109,13 @@ 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, uint(124)) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)"); equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)"); @@ -4610,6 +6131,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 +6171,18 @@ 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.0) <=> QScriptValue(true)"); equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))"); @@ -4682,6 +6219,18 @@ 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, 123.0) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)"); @@ -4700,6 +6249,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 +6287,17 @@ 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) <=> QScriptValue(QScriptValue::NullValue)"); equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)"); equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)"); @@ -4793,13 +6358,33 @@ 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, 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 +6397,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 +6409,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 +6474,27 @@ 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, \"NaN\") <=> QScriptValue(\"ciao\")"); equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")"); @@ -4901,6 +6511,12 @@ 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, \"Infinity\") <=> QScriptValue(\"NaN\")"); equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")"); equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); @@ -4920,6 +6536,12 @@ 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\") <=> QScriptValue(QScriptValue::NullValue)"); equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)"); equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)"); @@ -4996,7 +6618,31 @@ 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, \"ciao\") <=> engine->evaluate(\"Function.prototype\")"); equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")"); equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")"); @@ -5077,6 +6723,26 @@ 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()) <=> QScriptValue(true)"); equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(uint(124))"); @@ -5141,6 +6807,26 @@ 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(\"0\")) <=> QScriptValue(true)"); equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))"); equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))"); @@ -5198,6 +6884,24 @@ 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(\"123\")) <=> QScriptValue(uint(124))"); equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)"); equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)"); @@ -5237,6 +6941,17 @@ 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(\"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 +7002,22 @@ 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("engine->evaluate(\"[]\") <=> QScriptValue(true)"); equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(int(122))"); equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(uint(124))"); @@ -5351,6 +7082,26 @@ 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(\"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 +7116,7 @@ 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(\"Array.prototype\") <=> QScriptValue(true)"); equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))"); equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))"); @@ -5429,6 +7181,26 @@ 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(\"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 +7230,12 @@ 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(\"Array\") <=> engine->evaluate(\"Object\")"); equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")"); equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")"); @@ -5512,6 +7290,15 @@ 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(\"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 +7313,7 @@ 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 Array()\") <=> QScriptValue(true)"); equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))"); equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))"); @@ -5590,6 +7378,26 @@ 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 Error()\") <=> QScriptValue(\"NaN\")"); equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")"); equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")"); @@ -5612,6 +7420,951 @@ 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(\"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(\"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(\"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(\"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(\"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(\"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(\"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(\"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(\"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(\"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.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(\"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\") <=> 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(\"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(\"'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(\"'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(\"'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(\"'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->nullValue() <=> QScriptValue(true)"); equals.insert("engine->nullValue() <=> QScriptValue(int(122))"); equals.insert("engine->nullValue() <=> QScriptValue(uint(124))"); @@ -5648,6 +8401,163 @@ 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->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->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(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()"); } QHash::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -5702,6 +8612,16 @@ 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\")"); } QHash::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -5833,8 +8753,39 @@ 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"); } newRow(expr) << value.value(expr); } @@ -5843,6 +8794,7 @@ void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptV { QFETCH(QString, expected); QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); } DEFINE_TEST_FUNCTION(qscriptvalue_castQString) @@ -5961,8 +8913,39 @@ 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()); } newRow(expr) << value.value(expr); } @@ -5972,13 +8955,16 @@ void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptVa QFETCH(qsreal, expected); if (qIsNaN(expected)) { QVERIFY(qIsNaN(qscriptvalue_cast(value))); + QVERIFY(qIsNaN(qscriptvalue_cast(value))); return; } if (qIsInf(expected)) { QVERIFY(qIsInf(qscriptvalue_cast(value))); + QVERIFY(qIsInf(qscriptvalue_cast(value))); return; } QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); } DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal) @@ -6097,8 +9083,39 @@ 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); } newRow(expr) << value.value(expr); } @@ -6107,6 +9124,7 @@ void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValu { QFETCH(bool, expected); QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); } DEFINE_TEST_FUNCTION(qscriptvalue_castbool) @@ -6225,8 +9243,39 @@ 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); } newRow(expr) << value.value(expr); } @@ -6235,6 +9284,7 @@ void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptVa { QFETCH(qint32, expected); QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); } DEFINE_TEST_FUNCTION(qscriptvalue_castqint32) @@ -6353,8 +9403,39 @@ 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); } newRow(expr) << value.value(expr); } @@ -6363,6 +9444,7 @@ void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptV { QFETCH(quint32, expected); QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); } DEFINE_TEST_FUNCTION(qscriptvalue_castquint32) @@ -6481,8 +9563,39 @@ 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); } newRow(expr) << value.value(expr); } @@ -6491,6 +9604,7 @@ void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptV { QFETCH(quint16, expected); QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); } DEFINE_TEST_FUNCTION(qscriptvalue_castquint16) -- cgit v0.12 From 9c64752863ad70f0183260198fdc598bbdf8c58f Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Wed, 24 Feb 2010 17:43:33 +0100 Subject: doc: mark as reimplemented. --- src/gui/painting/qpaintengine_raster.cpp | 3 +++ 1 file changed, 3 insertions(+) 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(); -- cgit v0.12 From 43a80c98d4eb281594da14160683b73470574b7e Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Wed, 24 Feb 2010 18:47:41 +0100 Subject: Doc: placeholders for new feature highlights. --- doc/src/qt4-intro.qdoc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index 91593d3..7bfc689 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -471,6 +471,12 @@ \tableofcontents + \section1 Declarative UI development with Qt Quick + + \section1 Network Bearer Management + + \section1 Multimedia - playback and playlist management + \section1 New Classes, Functions, Macros, etc. Links to new classes, functions, macros, and other items -- cgit v0.12 From bf5e8a646071abae8bd2111ff75b1eae52874fed Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 20:04:23 +0100 Subject: Autotest: add a test for QDBusPendingCallWatcher use in threads I'm satisfied that the finished() signal won't be emitted until the event loop is run, or waitForFinished() is called. However, I'm not fully convinced that there isn't a race condition if you try to waitForFinished() right away. Needs more investigation. --- .../auto/qdbuspendingcall/tst_qdbuspendingcall.cpp | 57 +++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) 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 #include #include +#include #include #include #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(); -- cgit v0.12 From a498d551c701edb619de3639eda30e96b4da6afc Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 20:11:07 +0100 Subject: Add the Unicode normalisation properties. Source: http://unicode.org/Public/5.0.0/ucd/DerivedNormalizationProps.txt Reviewed-by: Trust Me --- util/unicode/data/DerivedNormalizationProps.txt | 2650 +++++++++++++++++++++++ 1 file changed, 2650 insertions(+) create mode 100644 util/unicode/data/DerivedNormalizationProps.txt 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 -- cgit v0.12 From ad833a3bf8fe6415659c1f7b37b0cc4e3e7c8c4f Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Thu, 25 Feb 2010 09:26:52 +0100 Subject: Revert "qdoc: List new QML elements in \sincelist for What's New page." This reverts commit d1b4e4666e4fe1a5fae0571c37535159c097f485. Reviewed-By: Martin Smith --- .../mediaservices/gstreamer/qgstreamermessage.cpp | 2 +- tools/qdoc3/htmlgenerator.cpp | 28 ++-------------------- tools/qdoc3/htmlgenerator.h | 2 -- 3 files changed, 3 insertions(+), 29 deletions(-) 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(); /*! - \class QGstreamerMessage + \class gstreamer::QGstreamerMessage \internal */ diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 0477ebb..c20f745 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
sections; QList
::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::QmlClass) - sections[QmlClass].appendMember((Node*)node); - break; case Node::Namespace: sections[Namespace].appendMember((Node*)node); break; @@ -789,8 +782,6 @@ int HtmlGenerator::generateAtom(const Atom *atom, out() << "

" << protectEnc((*s).name) << "

\n"; if (idx == Class) generateCompactList(0, marker, ncmap.value(), QString("Q")); - else if (idx == QmlClass) - generateCompactList(0, marker, nqcmap.value(), QString("Q")); else if (idx == MemberFunction) { ParentMaps parentmaps; ParentMaps::iterator pmap; @@ -2341,11 +2332,7 @@ void HtmlGenerator::generateCompactList(const Node *relative, out() << ""; - QStringList pieces; - if (it.value()->subType() == Node::QmlClass) - 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() << ""; if (pieces.size() > 1) { @@ -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(*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::QmlClass) { - 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(); @@ -4344,6 +4319,7 @@ void HtmlGenerator::generateQmlInheritedBy(const QmlClassNode* cn, NodeList subs; QmlClassNode::subclasses(cn->name(),subs); if (!subs.isEmpty()) { + //subs.sort(); Text text; text << Atom::ParaLeft << "Inherited by "; appendSortedNames(text,cn,subs,marker); diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h index 8fe0331..551bead 100644 --- a/tools/qdoc3/htmlgenerator.h +++ b/tools/qdoc3/htmlgenerator.h @@ -90,7 +90,6 @@ class HtmlGenerator : public PageGenerator Typedef, Property, Variable, - QmlClass, QmlProperty, QmlSignal, QmlMethod, @@ -327,7 +326,6 @@ class HtmlGenerator : public PageGenerator NewSinceMaps newSinceMaps; static QString sinceTitles[]; NewClassMaps newClassMaps; - NewClassMaps newQmlClassMaps; static int id; }; -- cgit v0.12 From 977d88856d8bbe199e293a677a7fe3d401aad4b8 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Thu, 25 Feb 2010 09:27:21 +0100 Subject: Revert "qdoc: Finished "Inherited by" list for QML elements." This reverts commit 83d7242271cf8196a8133de0406788135e16abbb. Reviewed-by: Martin Smith --- tools/qdoc3/cppcodeparser.cpp | 2 +- tools/qdoc3/generator.cpp | 26 -------------------------- tools/qdoc3/generator.h | 7 ------- tools/qdoc3/htmlgenerator.cpp | 30 +++++++++++++++++++++++++++--- tools/qdoc3/node.cpp | 8 ++++---- tools/qdoc3/node.h | 6 +++--- 6 files changed, 35 insertions(+), 44 deletions(-) diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index d9e9c3b..021d64a 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -1034,7 +1034,7 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc, else if (command == COMMAND_QMLINHERITS) { setLink(node, Node::InheritsLink, arg); if (node->subType() == Node::QmlClass) { - QmlClassNode::addInheritedBy(arg,node); + QmlClassNode::addInheritedBy(arg,node->name()); } } else if (command == COMMAND_QMLDEFAULT) { diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp index a7ab453..6a8899a 100644 --- a/tools/qdoc3/generator.cpp +++ b/tools/qdoc3/generator.cpp @@ -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 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 50ffb0a..44f56e2 100644 --- a/tools/qdoc3/generator.h +++ b/tools/qdoc3/generator.h @@ -169,13 +169,6 @@ class Generator const QList &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/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index c20f745..e767460 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -4316,16 +4316,40 @@ void HtmlGenerator::generateQmlInheritedBy(const QmlClassNode* cn, CodeMarker* marker) { if (cn) { - NodeList subs; + QStringList subs; QmlClassNode::subclasses(cn->name(),subs); if (!subs.isEmpty()) { - //subs.sort(); + 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 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(n); + out() << "

"; + 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() << "

"; + } + } +#endif } } diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 5357597..4ddcfb1 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -1257,7 +1257,7 @@ bool TargetNode::isInnerNode() const #ifdef QDOC_QML bool QmlClassNode::qmlOnly = false; -QMultiMap QmlClassNode::inheritedBy; +QMultiMap QmlClassNode::inheritedBy; /*! Constructs a Qml class node (i.e. a Fake node with the @@ -1294,15 +1294,15 @@ QString QmlClassNode::fileBase() const Record the fact that QML class \a base is inherited by QML class \a sub. */ -void QmlClassNode::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 QmlClassNode::subclasses(const QString& base, NodeList& subs) +void QmlClassNode::subclasses(const QString& base, QStringList& subs) { subs.clear(); if (inheritedBy.contains(base)) diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index 3798e4e..de26025 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -383,12 +383,12 @@ class QmlClassNode : public FakeNode 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 inheritedBy; + static QMultiMap inheritedBy; private: const ClassNode* cnode; -- cgit v0.12 From dadb99ea2c59d7d0f7a83134b7df5aaaaf80a995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Mon, 25 Jan 2010 18:27:47 +0100 Subject: QRegExp::pos() should return -1 for empty/non-matching captures Instead, we were returning 0, even if this index did not belong to the match. Task-number: QTBUG-7049 Reviewed-by: Volker Hilsheimer Reviewed-by: Olivier Goffart --- src/corelib/tools/qregexp.cpp | 11 +++-- tests/auto/qregexp/tst_qregexp.cpp | 93 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 3 deletions(-) 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/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("reStr"); + QTest::addColumn("text"); + QTest::addColumn("matchIndex"); + + QTest::addColumn("pos0"); + QTest::addColumn("pos1"); + QTest::addColumn("pos2"); + + QTest::addColumn("cap0"); + QTest::addColumn("cap1"); + QTest::addColumn("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" -- cgit v0.12 From 107a7aed0d64971136637e8ac26bf112108ec3bf Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Thu, 25 Feb 2010 12:33:53 +0100 Subject: Implement toLatin1_helper with Neon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement toLatin1 with neon to process 8 characters at a time. Using Neon improve the speed it there is at least 16 characters, there is no improvement when using it for 8 characters. Speed difference on a N900: -8 characters: no change 100% -16 characters: 126% -1000 characters: 361% -10000 characters: 423% Reviewed-by: Samuel Rødal --- src/corelib/tools/qstring.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 995e4cf..cce25f4 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3524,6 +3524,28 @@ static QByteArray toLatin1_helper(const QChar *data, int length) } length = length % 16; } +#elif QT_HAVE_NEON + // this use eactly the same method as for SSE except the packing + // which is done to 64 bits (8 x 8bits component). + // Refer to the documentation of the SSE2 implementation + 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 = vcgeq_u16(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; -- cgit v0.12 From d2ddf724b5d16e88efe6f0a8c362c7ad3888f412 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 25 Feb 2010 13:52:52 +0100 Subject: Autotest: add a test for roundtrips through toLatin1/fromLatin1 --- tests/auto/qstring/tst_qstring.cpp | 107 +++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) 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("latin1"); + QTest::addColumn("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("latin1"); + QTest::addColumn("unicodesrc"); + QTest::addColumn("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; -- cgit v0.12 From 40e6d23243acbed2705bd53cd1e634697ba99ac2 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 20:21:46 +0100 Subject: Autotest: make tst_qchar run out-of-source too --- tests/auto/qchar/qchar.pro | 1 + tests/auto/qchar/tst_qchar.cpp | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) 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; -- cgit v0.12 From 0e9c766829b9271c4f226b99b1484be944ffe493 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Thu, 25 Feb 2010 12:36:59 +0200 Subject: New data set for QScriptValue autotest generator. New tests data was added. The tests cover a qscriptvalue created by QScriptEngine newQMetaObject(), newVariant() and newQObject() functions. Reviewed-by: Kent Hansen --- tests/auto/qscriptvalue/testgen/data.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/auto/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvalue/testgen/data.txt index 2ab2fc9..73677ec 100644 --- a/tests/auto/qscriptvalue/testgen/data.txt +++ b/tests/auto/qscriptvalue/testgen/data.txt @@ -153,3 +153,9 @@ 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 -- cgit v0.12 From 8d583adf2373736ca8bb5dd465e17a53b776d85a Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Thu, 25 Feb 2010 12:42:31 +0200 Subject: Update of the QScriptValue autotest suite. The test suite was updated after changes in dataset of autotest generator. New test were added: isVariant, isQMetaObject and isQObject. Reviewed-by: Kent Hansen --- tests/auto/qscriptvalue/tst_qscriptvalue.h | 12 +- .../qscriptvalue/tst_qscriptvalue_generated.cpp | 611 +++++++++++++++++++++ 2 files changed, 617 insertions(+), 6 deletions(-) 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 1f68cb5..a07ff4b 100644 --- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp +++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp @@ -185,6 +185,12 @@ void tst_QScriptValue::initScriptValues() 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)); } @@ -333,6 +339,12 @@ void tst_QScriptValue::isValid_makeData(const char* expr) << "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); @@ -514,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); @@ -544,6 +557,7 @@ void tst_QScriptValue::isNull_makeData(const char* expr) << "QScriptValue(engine, QScriptValue::NullValue)" << "engine->evaluate(\"null\")" << "engine->nullValue()" + << "engine->newQObject(0)" ; } newRow(expr) << isNull.contains(expr); @@ -650,7 +664,84 @@ void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value) DEFINE_TEST_FUNCTION(isUndefined) +void tst_QScriptValue::isVariant_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +void tst_QScriptValue::isVariant_makeData(const char* expr) +{ + static QSet 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("expected"); + initScriptValues(); +} + +void tst_QScriptValue::isQObject_makeData(const char* expr) +{ + static QSet 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("expected"); + initScriptValues(); +} + +void tst_QScriptValue::isQMetaObject_makeData(const char* expr) +{ + static QSet 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() @@ -688,6 +779,11 @@ void tst_QScriptValue::isObject_makeData(const char* expr) << "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); @@ -964,6 +1060,12 @@ void tst_QScriptValue::toString_makeData(const char* expr) 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); } @@ -1124,6 +1226,12 @@ void tst_QScriptValue::toNumber_makeData(const char* expr) 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); } @@ -1293,6 +1401,12 @@ void tst_QScriptValue::toBool_makeData(const char* expr) 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); } @@ -1453,6 +1567,12 @@ void tst_QScriptValue::toBoolean_makeData(const char* expr) 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); } @@ -1613,6 +1733,12 @@ void tst_QScriptValue::toInteger_makeData(const char* expr) 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); } @@ -1778,6 +1904,12 @@ void tst_QScriptValue::toInt32_makeData(const char* expr) 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); } @@ -1938,6 +2070,12 @@ void tst_QScriptValue::toUInt32_makeData(const char* expr) 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); } @@ -2098,6 +2236,12 @@ void tst_QScriptValue::toUInt16_makeData(const char* expr) 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); } @@ -2135,6 +2279,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2146,6 +2291,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2177,6 +2323,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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))"); @@ -2212,6 +2359,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2239,6 +2387,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2247,6 +2396,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2335,6 +2485,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2358,6 +2509,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2374,6 +2526,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2382,6 +2535,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2395,6 +2549,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2406,6 +2561,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2437,6 +2593,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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))"); @@ -2472,6 +2629,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2499,6 +2657,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2507,6 +2666,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2595,6 +2755,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2618,6 +2779,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2634,6 +2796,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2642,6 +2805,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2654,6 +2818,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2665,6 +2830,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2696,6 +2862,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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))"); @@ -2731,6 +2898,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2758,6 +2926,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2766,6 +2935,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2854,6 +3024,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2877,6 +3048,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2893,6 +3065,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2901,6 +3074,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -2933,6 +3107,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3003,6 +3178,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3014,6 +3190,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3045,6 +3222,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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))"); @@ -3080,6 +3258,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3107,6 +3286,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3115,6 +3295,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3179,6 +3360,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3195,6 +3377,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3203,6 +3386,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3216,6 +3400,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3227,6 +3412,7 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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)"); @@ -3250,6 +3436,54 @@ void tst_QScriptValue::equals_makeData(const char *expr) 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::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -3291,6 +3525,7 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr) 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)"); @@ -3413,6 +3648,7 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr) 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)"); @@ -3534,6 +3770,7 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr) 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)"); @@ -3683,6 +3920,7 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr) 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)"); @@ -3776,6 +4014,7 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr) 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)"); @@ -3786,6 +4025,17 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr) 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::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -3863,6 +4113,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -3903,6 +4154,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -3951,6 +4203,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -3982,6 +4235,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -4049,6 +4303,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -4097,6 +4352,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -4164,6 +4420,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -4244,6 +4501,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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())"); @@ -4361,6 +4621,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -4383,6 +4646,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\"))"); @@ -4408,6 +4673,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -4509,6 +4776,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -4609,6 +4881,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -4693,6 +4968,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -4768,6 +5046,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -4818,6 +5099,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -4881,6 +5164,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -4929,6 +5215,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -4969,6 +5256,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -5017,6 +5305,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -5048,6 +5337,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -5115,6 +5405,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -5163,6 +5454,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -5230,6 +5522,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -5310,6 +5603,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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())"); @@ -5427,6 +5723,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -5449,6 +5748,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\"))"); @@ -5474,6 +5775,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -5575,6 +5878,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -5675,6 +5983,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -5759,6 +6070,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -5834,6 +6148,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -5884,6 +6201,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -5949,6 +6268,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -5997,6 +6319,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -6037,6 +6360,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -6085,6 +6409,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -6116,6 +6441,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -6183,6 +6509,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -6231,6 +6558,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -6298,6 +6626,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -6378,6 +6707,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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())"); @@ -6495,6 +6827,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -6517,6 +6852,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\"))"); @@ -6542,6 +6879,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -6643,6 +6982,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -6743,6 +7087,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -6827,6 +7174,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -6902,6 +7252,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -6952,6 +7305,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -7018,6 +7373,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -7102,6 +7460,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7117,6 +7478,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -7201,6 +7563,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7236,6 +7601,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7299,6 +7666,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7314,6 +7683,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -7398,6 +7768,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7426,6 +7799,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -7461,6 +7836,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7479,6 +7855,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7499,6 +7876,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7518,6 +7896,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -7539,6 +7918,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -7587,6 +7967,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -7627,6 +8008,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -7675,6 +8057,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -7706,6 +8089,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -7773,6 +8157,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -7821,6 +8206,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -7888,6 +8274,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -7968,6 +8355,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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())"); @@ -8085,6 +8475,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -8177,6 +8570,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -8252,6 +8648,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -8302,6 +8701,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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)"); @@ -8365,6 +8766,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -8413,6 +8817,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -8428,6 +8833,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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))"); @@ -8512,6 +8918,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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\")"); @@ -8558,6 +8967,167 @@ void tst_QScriptValue::lessThan_makeData(const char *expr) 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::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -8622,6 +9192,11 @@ void tst_QScriptValue::instanceOf_makeData(const char *expr) 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::const_iterator it; for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { @@ -8786,6 +9361,12 @@ void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr) 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); } @@ -8946,6 +9527,12 @@ void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr) 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); } @@ -9116,6 +9703,12 @@ void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr) 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); } @@ -9276,6 +9869,12 @@ void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr) 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); } @@ -9436,6 +10035,12 @@ void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr) 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); } @@ -9596,6 +10201,12 @@ void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr) 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); } -- cgit v0.12 From badfab1ed209c0f9727980addef7de9083354845 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Thu, 25 Feb 2010 15:20:22 +0100 Subject: Fix the SIMD implementations of QString::toLatin1() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The SSE implementation used signed integers. This was failing for characters with high value. The Neon implementation was using >= instead of > for creating the mask Reviewed-by: Samuel Rødal --- src/corelib/tools/qstring.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index cce25f4..e9b7b9a 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3486,13 +3486,17 @@ static QByteArray toLatin1_helper(const QChar *data, int length) if (length >= 16) { const int chunkCount = length >> 4; // divided by 16 const __m128i questionMark = _mm_set1_epi16('?'); - const __m128i thresholdMask = _mm_set1_epi16(0xff); + // 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 offLimitMask = _mm_cmpgt_epi16(chunk1, thresholdMask); + 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 @@ -3510,14 +3514,15 @@ static QByteArray toLatin1_helper(const QChar *data, int length) src += 8; { // exactly the same operations as for the previous chunk of data - const __m128i offLimitMask = _mm_cmpgt_epi16(chunk2, thresholdMask); + 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_packs_epi16(chunk1, chunk2); + const __m128i result = _mm_packus_epi16(chunk1, chunk2); _mm_storeu_si128((__m128i*)dst, result); // store dst += 16; @@ -3525,9 +3530,10 @@ static QByteArray toLatin1_helper(const QChar *data, int length) length = length % 16; } #elif QT_HAVE_NEON - // this use eactly the same method as for SSE except the packing - // which is done to 64 bits (8 x 8bits component). // 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 @@ -3536,7 +3542,7 @@ static QByteArray toLatin1_helper(const QChar *data, int length) uint16x8_t chunk = vld1q_u16((uint16_t *)src); // load src += 8; - const uint16x8_t offLimitMask = vcgeq_u16(chunk, thresholdMask); // == + 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 -- cgit v0.12 From ff8c63b4b40b26291f8847830e04f773dc1a1e71 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Thu, 25 Feb 2010 16:51:05 +0100 Subject: Doc: add a few lines about bearer managment to "What's New" page. Needs a screenshot of one of the examples. --- doc/src/qt4-intro.qdoc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index 7bfc689..a18bc13 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -475,6 +475,14 @@ \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. -- cgit v0.12 From 2d89ee9cc302f7d381275a112e1c8a5de55ec286 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 25 Feb 2010 17:56:51 +0100 Subject: Doc: Added a config file for creating Simplified Chinese docs directly. Reviewed-by: Trust Me --- tools/qdoc3/cppcodemarker.cpp | 2 +- tools/qdoc3/test/qt_zh_CN.qdocconf | 86 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 tools/qdoc3/test/qt_zh_CN.qdocconf diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp index 657cfbb..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; 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" -- cgit v0.12