Merge remote-tracking branch 'origin/5.15' into dev
Conflicts: src/corelib/text/qlocale.cpp src/network/access/qnetworkaccessmanager.cpp Regenerated tests/auto/testlib/selftests/float/CMakeLists.txt Change-Id: I5a8ae42511380ca49a38b13c6fa8a3c5df8bed01
This commit is contained in:
commit
0f7987f0c9
444
dist/changes-5.15.0
vendored
Normal file
444
dist/changes-5.15.0
vendored
Normal file
@ -0,0 +1,444 @@
|
|||||||
|
Qt 5.15 introduces many new features and improvements as well as bugfixes
|
||||||
|
over the 5.14.x series. For more details, refer to the online documentation
|
||||||
|
included in this distribution. The documentation is also available online:
|
||||||
|
|
||||||
|
https://doc.qt.io/qt-5/index.html
|
||||||
|
|
||||||
|
The Qt version 5.15 series is binary compatible with the 5.14.x series.
|
||||||
|
Applications compiled for 5.14 will continue to run with 5.15.
|
||||||
|
|
||||||
|
Some of the changes listed in this file include issue tracking numbers
|
||||||
|
corresponding to tasks in the Qt Bug Tracker:
|
||||||
|
|
||||||
|
https://bugreports.qt.io/
|
||||||
|
|
||||||
|
Each of these identifiers can be entered in the bug tracker to obtain more
|
||||||
|
information about a particular change.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Important Behavior Changes *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Calling QList::insert() or removeAt() with an out of bounds index is
|
||||||
|
deprecated and will no longer be supported in Qt 6.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Potentially Binary-Incompatible Changes *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- QHash:
|
||||||
|
QHash's iterator category was changed from bidirectional iterator to
|
||||||
|
forward iterator. This may cause trouble if a library uses the
|
||||||
|
iterator category to alter functionality through tag dispatching. This
|
||||||
|
only applies when compiling the library or application with
|
||||||
|
QT_DISABLE_DEPRECATED_BEFORE=0x050F00 and the other with a lower value.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Deprecation Notice *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- The binary JSON representation is deprecated. The CBOR format should be
|
||||||
|
used instead.
|
||||||
|
|
||||||
|
- [QTBUG-80308] QUrl::topLevelDomain() was deprecated in 5.15 and will be
|
||||||
|
removed in 6.0
|
||||||
|
|
||||||
|
- QtNetwork:
|
||||||
|
* QNetworkConfigurationManager, QNetworkConfiguration and QNetworkSession
|
||||||
|
are deprecated, to be removed in Qt 6.
|
||||||
|
|
||||||
|
- [REVERTED] [QTBUG-80369] QAbstractSocket::error() (the getter) is
|
||||||
|
deprecated; superseded by socketError().
|
||||||
|
- [REVERTED] [QTBUG-80369] QLocalSocket::error() (the getter) is
|
||||||
|
deprecated; superseded by socketError().
|
||||||
|
- [QTBUG-80369] QSslSocket::sslErrors() (the getter) was deprecated and
|
||||||
|
superseded by sslHandshakeErrors()
|
||||||
|
- [REVERTED] [QTBUG-80369] QNetworkReply::error() (the getter) was
|
||||||
|
deprecated; superseded by networkError().
|
||||||
|
- [QTBUG-81630][QTBUG-80312] QLinkedList is deprecated and will be moved
|
||||||
|
to Qt5Compat in Qt 6. It is recommended to use std::list instead.
|
||||||
|
- QLocalSocket::error() (the signal) is deprecated; superseded by
|
||||||
|
errorOccurred()
|
||||||
|
- QAbstractSocket::error() (the signal) is deprecated; superseded by
|
||||||
|
errorOccurred()
|
||||||
|
- QNetworkReply::error() (the signal) is deprecated; superseded by
|
||||||
|
errorOccurred()
|
||||||
|
|
||||||
|
See also the various sections below, which include many more deprecations.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtCore *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- QCalendar::monthsInYear(QCalendar::Unspecified) now returns
|
||||||
|
maximumMonthsInYear(). QCalendar::daysInYear() now makes clear that its
|
||||||
|
handling of unspecified year is undefined.
|
||||||
|
|
||||||
|
- Containers:
|
||||||
|
* Added operator-> to the key-value iterator for QHash/QMap.
|
||||||
|
|
||||||
|
- QAbstractItemModel:
|
||||||
|
* [QTBUG-72587] The match() method now supports the new
|
||||||
|
Qt::RegularExpression match flag value. This will allow users to use
|
||||||
|
either a string or a fully configured QRegularExpression when doing
|
||||||
|
searches. In the second case, the case sensitivity flag will be
|
||||||
|
ignored if passed.
|
||||||
|
|
||||||
|
- QByteArray:
|
||||||
|
* resize() will no longer shrink the capacity. That means resize(0) now
|
||||||
|
reliably preserves capacity().
|
||||||
|
* Added the new fromBase64Encoding function.
|
||||||
|
* Added new flags to make fromBase64 / fromBase64Encoding strictly
|
||||||
|
validate their input, instead of skipping over invalid characters.
|
||||||
|
|
||||||
|
- QCborArray:
|
||||||
|
* Fixed an infinite loop when operator[] was called with an index larger
|
||||||
|
than the array's size plus 1.
|
||||||
|
|
||||||
|
- QCborMap:
|
||||||
|
* [QTBUG-83366] Fixed some issues relating to assigning elements from a
|
||||||
|
map to itself.
|
||||||
|
|
||||||
|
- QCborValue:
|
||||||
|
* fromCbor() now limits decoding to at most 1024 nested maps, arrays,
|
||||||
|
and tags to prevent stack overflows. This should be sufficient for
|
||||||
|
most uses of CBOR. An API to limit further or to relax the limit will
|
||||||
|
be provided in 5.15. Meanwhile, if decoding more is required,
|
||||||
|
QCborStreamReader can be used (note that each level of map and array
|
||||||
|
allocates memory).
|
||||||
|
|
||||||
|
- QDate:
|
||||||
|
* QDate::toString(Qt::DateFormat, QCalendar) no longer takes calendar
|
||||||
|
into account for Qt::TextDate. There was no matching support in
|
||||||
|
QDateTime and the locale-independent formats are intended to be
|
||||||
|
standard, rather than customized to the user.
|
||||||
|
|
||||||
|
- QDateTime:
|
||||||
|
* Added some missing QCalendar variants of QDateTime::toString().
|
||||||
|
Included docs for QCalendar variants in both QDate and QDateTime.
|
||||||
|
|
||||||
|
- QFile:
|
||||||
|
* Introduce QFile::moveToTrash to allow applications to move files to
|
||||||
|
the trash.
|
||||||
|
|
||||||
|
- QFileInfo:
|
||||||
|
* [QTBUG-75869] Add QFileInfo::isJunction so that applications can
|
||||||
|
recognize NTFS file system entries as junctions
|
||||||
|
|
||||||
|
- QHash:
|
||||||
|
* Reverse iteration over QHash is now deprecated.
|
||||||
|
* insertMulti(), unite() and values(const Key &key) are now deprecated.
|
||||||
|
Please use QMultiHash instead.
|
||||||
|
|
||||||
|
- QJsonObject:
|
||||||
|
* Fixed a regression from 5.13 that incorrect results when assigning
|
||||||
|
elements from an object to itself.
|
||||||
|
|
||||||
|
- QLatin1String:
|
||||||
|
* Added compare().
|
||||||
|
|
||||||
|
- QLibrary and QPluginLoader:
|
||||||
|
* [QTBUG-39642] Fixed a deadlock that would happen if the plugin or
|
||||||
|
library being loaded has load-time initialization code (C++ global
|
||||||
|
variables) that recursed back into the same QLibrary or QPluginLoader
|
||||||
|
object.
|
||||||
|
|
||||||
|
- QLocale:
|
||||||
|
* Deprecated toTime() variants taking a calendar. The calendar is
|
||||||
|
ignored in time parsing.
|
||||||
|
* Data used for currency formats in several locales and list patterns in
|
||||||
|
some locales have changed due to now parsing the CLDR data more
|
||||||
|
faithfully.
|
||||||
|
* [QTBUG-79902] Currency formats are now based on CLDR's accounting
|
||||||
|
formats, where they were previously mostly based (more or less by
|
||||||
|
accident) on standard formats. In particular, this now means negative
|
||||||
|
currency formats are specified, where available, where they (mostly)
|
||||||
|
were not previously.
|
||||||
|
|
||||||
|
- QMap:
|
||||||
|
* [QTBUG-35544] insertMulti(), unite(), values(Key), uniqueKeys(),
|
||||||
|
count(Key) is now deprecated. Please use QMultiMap instead.
|
||||||
|
|
||||||
|
- QObject:
|
||||||
|
* [QTBUG-76375] A logging category
|
||||||
|
qt.core.qmetaobject.connectslotsbyname was added, which will report
|
||||||
|
on the connections made by QMetaObject::connectSlotsByName().
|
||||||
|
|
||||||
|
- QProcess:
|
||||||
|
* Overloads of start/execute/startDatached that parse a single command
|
||||||
|
string into program and arguments have been marked as deprecated. A
|
||||||
|
static helper splitCommand has been added to construct a QStringList
|
||||||
|
from a command string.
|
||||||
|
|
||||||
|
- QRandomGenerator:
|
||||||
|
* The system() random generator will now use the RDSEED instruction on
|
||||||
|
x86 processors whenever available as the first source of random data.
|
||||||
|
It will fall back to RDRAND and then to the system functions, in that
|
||||||
|
order.
|
||||||
|
|
||||||
|
- QRegularExpression:
|
||||||
|
* The escape(), wildcardToRegularExpression() and anchoredPattern()
|
||||||
|
functions now have overloads taking a QStringView parameter.
|
||||||
|
|
||||||
|
- QResource:
|
||||||
|
* Added uncompressedSize() and uncompressedData(), which will perform
|
||||||
|
any required decompression on the data, prior to returning (unlike
|
||||||
|
data() and size()).
|
||||||
|
|
||||||
|
- QSet:
|
||||||
|
* Reverse iteration over QSet is now deprecated.
|
||||||
|
|
||||||
|
- QStandardPaths:
|
||||||
|
* When used in a low-integrity process on Windows,
|
||||||
|
QStandardPaths::writableLocation returns respective low-integrity
|
||||||
|
paths.
|
||||||
|
|
||||||
|
- QString:
|
||||||
|
* Added QString::isValidUtf16.
|
||||||
|
|
||||||
|
- QStringView:
|
||||||
|
* Added QStringView::isValidUtf16.
|
||||||
|
* Added compare() overloads taking QLatin1String, QChar.
|
||||||
|
* Conversion from std::basic_string can now be constexpr (when
|
||||||
|
std::basic_string is).
|
||||||
|
|
||||||
|
- QTimeZone:
|
||||||
|
* The constructor can now handle general UTC-offset zone names. The
|
||||||
|
reported id() of such a zone shall be in canonical form, so might not
|
||||||
|
match the ID passed to the constructor.
|
||||||
|
|
||||||
|
- QXmlStream:
|
||||||
|
* QXmlStreamReader does now by default limit the expansion of entities
|
||||||
|
to 4096 characters. Documents where a single entity expands to more
|
||||||
|
characters than the limit are not considered well formed. The limit is
|
||||||
|
there to avoid DoS attacks through recursively expanding entities when
|
||||||
|
loading untrusted content. The limit can be changed through the
|
||||||
|
QXmlStreamReader::setEntityExpansionLimit() method.
|
||||||
|
|
||||||
|
- moc:
|
||||||
|
* Moc now correctly sets a non-null QMetaObject::superClass for
|
||||||
|
Q_GADGETs that inherit from a template which inherits another
|
||||||
|
Q_GADGET.
|
||||||
|
* [QTBUG-74521][QTBUG-76598] moc can now output a ".d" dep file that can
|
||||||
|
be consumed by other build systems.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtGui *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Extended QVulkanWindow to allow user to specify additional queues to be
|
||||||
|
created.
|
||||||
|
- Added API for starting interactive window resize and move operations
|
||||||
|
handled by the system.
|
||||||
|
|
||||||
|
- QClipboard:
|
||||||
|
* Support lazily-provided copying of data to the clipboard on macOS
|
||||||
|
|
||||||
|
- QCursor:
|
||||||
|
* [QTBUG-48701] QCursor::bitmap() and QCursor::mask() can now return
|
||||||
|
by-value instead of by-pointer.
|
||||||
|
|
||||||
|
- QFont:
|
||||||
|
* Deprecated QFont::ForceIntegerMetrics and QFont::OpenGLCompatible,
|
||||||
|
with the intention of removing them in Qt 6.0.0.
|
||||||
|
|
||||||
|
- QMarkdownWriter:
|
||||||
|
* [QTBUG-80603] Code blocks are no longer word-wrapped; the beginning
|
||||||
|
fence of a code block no longer has a space before the language string;
|
||||||
|
and the ending fence is no longer skipped in some cases where it was.
|
||||||
|
|
||||||
|
- QPdfWriter:
|
||||||
|
* New API to provide external document XMP metadata and attach files to
|
||||||
|
PDF.
|
||||||
|
|
||||||
|
- QTabletEvent:
|
||||||
|
* QTabletEvent::device() is deprecated, because the plan is to return
|
||||||
|
an object pointer in Qt 6 rather than an enum. The enum is now provided
|
||||||
|
by deviceType().
|
||||||
|
* hiResGlobalX() and hiResGlobalY() are deprecated, because globalPosF()
|
||||||
|
has the same resolution. But globalPosF() (and several others) will
|
||||||
|
probably be renamed in Qt 6. The replacements are not in place yet.
|
||||||
|
* [QTBUG-77826] Local coordinates are now correct when the event is
|
||||||
|
delivered to a nested window on X11.
|
||||||
|
|
||||||
|
- Text:
|
||||||
|
* Fixed a problem where pixel sizes would be truncated before calculating
|
||||||
|
glyph positions.
|
||||||
|
* Fixed an issue with QFont::PreferNoShaping where boxes would appear in
|
||||||
|
place of unprintable characters.
|
||||||
|
* Fixed a problem where certain bold fonts would be synthetically
|
||||||
|
emboldened by Qt when using the Freetype font engine.
|
||||||
|
|
||||||
|
- Application palettes are now resolved against the platform's theme
|
||||||
|
palette, the same way widget palettes are resolved against their parents,
|
||||||
|
and the application palette. This means the application palette reflected
|
||||||
|
through QGuiApplication::palette() may not be exactly the same palette as
|
||||||
|
set via QGuiApplication::setPalette().
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtWidgets *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Added QStyleOptionTabV4 as a subclass of QStyleOptionTab so that the
|
||||||
|
tab's index information can be obtained.
|
||||||
|
|
||||||
|
- ItemViews:
|
||||||
|
* [QTBUG-76423] The convenience views QList/Table/TreeWidgetItem now
|
||||||
|
treat a default constructed QBrush or QSize as an empty QVariant which
|
||||||
|
allows resetting of the values set to it's default values.
|
||||||
|
|
||||||
|
- QApplication:
|
||||||
|
* The globalStrut property has been deprecated and will be removed from
|
||||||
|
Qt 6.
|
||||||
|
|
||||||
|
- QButtonGroup:
|
||||||
|
* Added signals idClicked/Pressed/Released/Toggled that replace the
|
||||||
|
deprecated signal overloads.
|
||||||
|
|
||||||
|
- QComboBox:
|
||||||
|
* QComboBox got a new property 'placeholderText'
|
||||||
|
* Support checkable items in styles that use a popup for the dropdown.
|
||||||
|
* the SizeAdjustPolicy value AdjustToMinimumContentLength is deprecated,
|
||||||
|
use AdjustToContents or AdjustToContentsOnFirstShow instead.
|
||||||
|
|
||||||
|
- QGraphicsView:
|
||||||
|
* Fixed a bug where hover events would not be delivered if the item was
|
||||||
|
added while blocked by a modal panel.
|
||||||
|
|
||||||
|
- QLabel:
|
||||||
|
* [QTBUG-48701] QLabel::pixmap() and QLabel::picture() can now return
|
||||||
|
by-value instead of by-pointer.
|
||||||
|
|
||||||
|
- QLineEdit:
|
||||||
|
* Inputmask X character now requires non-blank input.
|
||||||
|
|
||||||
|
- QMenu:
|
||||||
|
* a popup menu hides when a QWidgetAction added to it fires the
|
||||||
|
triggered signal.
|
||||||
|
|
||||||
|
- QShortcut:
|
||||||
|
* QShortcut ctor has now pointer to member function overloads
|
||||||
|
|
||||||
|
- QStyle:
|
||||||
|
* You can now set the CSS property 'icon' on a QPushButton to override
|
||||||
|
which icon to draw.
|
||||||
|
|
||||||
|
- QSystemTrayIcon:
|
||||||
|
* On macOS, clicking on the message will remove the notification.
|
||||||
|
|
||||||
|
- QTabWidget/QTabBar:
|
||||||
|
* Tabs can now be hidden with setTabVisible
|
||||||
|
|
||||||
|
- QWidget:
|
||||||
|
* Fonts and palette settings are inherited by children from their
|
||||||
|
parents even if the children have application-wide platform theme
|
||||||
|
overrides.
|
||||||
|
|
||||||
|
- QWizard:
|
||||||
|
* visitedPages has been deprecated, use visitedIds instead.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtNetwork *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- A new signal introduced to report when a valid session ticket is received
|
||||||
|
(TLS 1.3)
|
||||||
|
|
||||||
|
- SSL:
|
||||||
|
* Removed OpenSSL 1.0.x support, now 1.1.x is required
|
||||||
|
* The minimum required version of OpenSSL is now 1.1.1.
|
||||||
|
|
||||||
|
- QSslCertificate:
|
||||||
|
* [QTBUG-72587] Add overload of fromPath that does not make use of
|
||||||
|
QRegExp and deprecate the QRegExp variant.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtSql *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- QMYSQL:
|
||||||
|
* Removed support for MySql < 5.0 since 5.0 was released 14 years ago.
|
||||||
|
* The QMYSQL plugin can now be build with the MariaDB C connector libs
|
||||||
|
on Windows.
|
||||||
|
|
||||||
|
- QSqlDriver:
|
||||||
|
* The one-arg version of QSqlDriver::notifcation() is now deprecated.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QTestLib *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- The formerly named 'xunitxml' test reporter has been renamed to what it
|
||||||
|
actually is: a JUnit test reporter, and is now triggered by passing -o
|
||||||
|
junitxml to the test binary.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtXml *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- [QTBUG-76177] SAX classes are now deprecated. Use QXmlStreamReader,
|
||||||
|
QXmlStreamWriter in QtCore instead.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Configure *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Add switch "-coverage source-based" to enable clang's "source-based" code
|
||||||
|
coverage feature. This can be used for code coverage analysis.
|
||||||
|
|
||||||
|
- X11:
|
||||||
|
* [QTBUG-67277][QTBUG-30939] The minimal required version of libxcb now
|
||||||
|
is 1.11.
|
||||||
|
* [QTBUG-67277][QTBUG-30939] Removed -qt-xcb, -system-xcb, -xkb,
|
||||||
|
-xcb-xinput switches.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* cmake *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Fixed an issue where some Qt location and declarative plugins whose name
|
||||||
|
did not end with "Plugin" where not imported by the corresponding Qt
|
||||||
|
component package.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Third-Party Code *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- libjpeg-turbo was updated to version 2.0.4
|
||||||
|
|
||||||
|
- X11:
|
||||||
|
* [QTBUG-67277][QTBUG-30939] Removed all bundled XCB libs, with the
|
||||||
|
exception of xcb-xinput, which is not available on systems with libxcb
|
||||||
|
1.11.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Platform Specific Changes *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Linux:
|
||||||
|
* Enable accessibility on Linux when Orca is started by hand
|
||||||
|
* [QTBUG-78754] Vulkan is now supported by eglfs (eglfs_viv backend) on
|
||||||
|
i.MX8 devices with the Vivante graphics stack. This is done via
|
||||||
|
VK_KHR_display so no windowing system is required.
|
||||||
|
|
||||||
|
- X11:
|
||||||
|
* [QTBUG-67277][QTBUG-30939] XKB and XInput2 now are mandatory
|
||||||
|
dependencies for XCB plugin. XCB-XKB is a part of libxcb 1.11
|
||||||
|
releases. XCB-XInput is not part of libxcb 1.11 releases, but Qt
|
||||||
|
builders can use the -bundled-xcb-xinput switch.
|
||||||
|
|
||||||
|
- Android:
|
||||||
|
* [REVERTED] Qt::MaximizeUsingFullscreenGeometryHint window flag is
|
||||||
|
now supported, and will make the window fullscreen, but keep the
|
||||||
|
system UI on-screen, with a translucent background color.
|
||||||
|
* [QTBUG-82120] Use native file dialog by default for open and save
|
||||||
|
operations.
|
||||||
|
|
||||||
|
- Windows:
|
||||||
|
* Fixed a bug where some fonts would not be accessible by
|
||||||
|
referencing their typographic name.
|
||||||
|
* Fixed a 2 pixel offset on glyphs when using color fonts or any
|
||||||
|
hinting preference other than the default (full) hinting.
|
||||||
|
|
||||||
|
- WebAssembly:
|
||||||
|
* Updated emscripten to version 1.39.8
|
@ -406,7 +406,7 @@ bool MainWindow::addTorrent(const QString &fileName, const QString &destinationF
|
|||||||
|
|
||||||
QString baseFileName = QFileInfo(fileName).fileName();
|
QString baseFileName = QFileInfo(fileName).fileName();
|
||||||
if (baseFileName.toLower().endsWith(".torrent"))
|
if (baseFileName.toLower().endsWith(".torrent"))
|
||||||
baseFileName.remove(baseFileName.size() - 8);
|
baseFileName.chop(8);
|
||||||
|
|
||||||
item->setText(0, baseFileName);
|
item->setText(0, baseFileName);
|
||||||
item->setToolTip(0, tr("Torrent: %1<br>Destination: %2")
|
item->setToolTip(0, tr("Torrent: %1<br>Destination: %2")
|
||||||
|
@ -279,10 +279,21 @@ contains(all_qt_module_deps, qml): \
|
|||||||
for (QMLPATH, QMLPATHS): \
|
for (QMLPATH, QMLPATHS): \
|
||||||
IMPORTPATHS += -importPath $$system_quote($$QMLPATH)
|
IMPORTPATHS += -importPath $$system_quote($$QMLPATH)
|
||||||
|
|
||||||
# add qrc files, too
|
# add resources to qmlimportscanner
|
||||||
!isEmpty(RESOURCES) {
|
for (RESOURCE, RESOURCES) {
|
||||||
|
defined($${RESOURCE}.files, var) {
|
||||||
|
# in case of a "struct", add the struct's files
|
||||||
|
base = $$RESOURCE.base
|
||||||
|
for (f, $$RESOURCE.files): SCANNERRESOURCES += "$$base/$$f"
|
||||||
|
} else {
|
||||||
|
# if the resource is a file, just add it
|
||||||
|
SCANNERRESOURCES += $$RESOURCE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
!isEmpty(SCANNERRESOURCES) {
|
||||||
IMPORTPATHS += -qrcFiles
|
IMPORTPATHS += -qrcFiles
|
||||||
for (RESOURCE, RESOURCES): \
|
for (RESOURCE, SCANNERRESOURCES)
|
||||||
IMPORTPATHS += $$absolute_path($$system_quote($$RESOURCE), $$_PRO_FILE_PWD_)
|
IMPORTPATHS += $$absolute_path($$system_quote($$RESOURCE), $$_PRO_FILE_PWD_)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@ sourcefiles += \
|
|||||||
extras = \
|
extras = \
|
||||||
$$_PRO_FILE_PWD_/README \
|
$$_PRO_FILE_PWD_/README \
|
||||||
$$_PRO_FILE_PWD_/README.TXT \
|
$$_PRO_FILE_PWD_/README.TXT \
|
||||||
|
$$_PRO_FILE_PWD_/qmldir \
|
||||||
$$files($$_PRO_FILE_PWD_/*.pri) \
|
$$files($$_PRO_FILE_PWD_/*.pri) \
|
||||||
$$replace(_PRO_FILE_, \\.pro$, .qmlproject) \
|
$$replace(_PRO_FILE_, \\.pro$, .qmlproject) \
|
||||||
$$replace(_PRO_FILE_, \\.pro$, .json) \
|
$$replace(_PRO_FILE_, \\.pro$, .json) \
|
||||||
@ -140,6 +141,9 @@ equals(TEMPLATE, app)|equals(TEMPLATE, lib) {
|
|||||||
SOURCES =
|
SOURCES =
|
||||||
OBJECTIVE_SOURCES =
|
OBJECTIVE_SOURCES =
|
||||||
INSTALLS -= target
|
INSTALLS -= target
|
||||||
|
QMAKE_SUBSTITUTES =
|
||||||
|
QMAKE_EXTRA_COMPILERS =
|
||||||
|
COPIES =
|
||||||
} else {
|
} else {
|
||||||
CONFIG += relative_qt_rpath # Examples built as part of Qt should be relocatable
|
CONFIG += relative_qt_rpath # Examples built as part of Qt should be relocatable
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ macx-xcode {
|
|||||||
warning("You need to update Xcode to version 6 or newer to fully support iPhone6/6+")
|
warning("You need to update Xcode to version 6 or newer to fully support iPhone6/6+")
|
||||||
} else {
|
} else {
|
||||||
# Set up default LaunchScreen to support iPhone6/6+
|
# Set up default LaunchScreen to support iPhone6/6+
|
||||||
qmake_launch_screen = LaunchScreen.xib
|
qmake_launch_screen = LaunchScreen.storyboard
|
||||||
qmake_copy_launch_screen.input = $$QMAKESPEC/$$qmake_launch_screen
|
qmake_copy_launch_screen.input = $$QMAKESPEC/$$qmake_launch_screen
|
||||||
qmake_copy_launch_screen.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_screen
|
qmake_copy_launch_screen.output = $$OUT_PWD/$${TARGET}.xcodeproj/$$qmake_launch_screen
|
||||||
QMAKE_SUBSTITUTES += qmake_copy_launch_screen
|
QMAKE_SUBSTITUTES += qmake_copy_launch_screen
|
||||||
|
@ -36,8 +36,9 @@
|
|||||||
VCLIBS = $${VCLIBS}.Debug
|
VCLIBS = $${VCLIBS}.Debug
|
||||||
else: \
|
else: \
|
||||||
VCLIBS = $${VCLIBS}
|
VCLIBS = $${VCLIBS}
|
||||||
# VS 2017 still uses vclibs 140
|
# VS 2017 and 2019 still use vclibs 140
|
||||||
contains(MSVC_VER, "15.0"): VCLIBS = $$replace(VCLIBS, 150, 140)
|
contains(MSVC_VER, "15.0"): VCLIBS = $$replace(VCLIBS, 150, 140)
|
||||||
|
contains(MSVC_VER, "16.0"): VCLIBS = $$replace(VCLIBS, 160, 140)
|
||||||
VCLIBS = "$${VCLIBS}\" MinVersion=\"14.0.0.0\" Publisher=\"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
|
VCLIBS = "$${VCLIBS}\" MinVersion=\"14.0.0.0\" Publisher=\"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
|
||||||
WINRT_MANIFEST.dependencies += $$VCLIBS
|
WINRT_MANIFEST.dependencies += $$VCLIBS
|
||||||
}
|
}
|
||||||
@ -68,12 +69,10 @@
|
|||||||
isEmpty(WINRT_MANIFEST.background): WINRT_MANIFEST.background = green
|
isEmpty(WINRT_MANIFEST.background): WINRT_MANIFEST.background = green
|
||||||
isEmpty(WINRT_MANIFEST.foreground): WINRT_MANIFEST.foreground = light
|
isEmpty(WINRT_MANIFEST.foreground): WINRT_MANIFEST.foreground = light
|
||||||
isEmpty(WINRT_MANIFEST.default_language): WINRT_MANIFEST.default_language = en
|
isEmpty(WINRT_MANIFEST.default_language): WINRT_MANIFEST.default_language = en
|
||||||
*-msvc2015|*-msvc2017 {
|
|
||||||
isEmpty(WINRT_MANIFEST.minVersion): \
|
isEmpty(WINRT_MANIFEST.minVersion): \
|
||||||
WINRT_MANIFEST.minVersion = $$WINDOWS_TARGET_PLATFORM_VERSION
|
WINRT_MANIFEST.minVersion = $$WINDOWS_TARGET_PLATFORM_VERSION
|
||||||
isEmpty(WINRT_MANIFEST.maxVersionTested): \
|
isEmpty(WINRT_MANIFEST.maxVersionTested): \
|
||||||
WINRT_MANIFEST.maxVersionTested = $$WINDOWS_TARGET_PLATFORM_MIN_VERSION
|
WINRT_MANIFEST.maxVersionTested = $$WINDOWS_TARGET_PLATFORM_MIN_VERSION
|
||||||
}
|
|
||||||
|
|
||||||
INDENT = "$$escape_expand(\\r\\n) "
|
INDENT = "$$escape_expand(\\r\\n) "
|
||||||
|
|
||||||
|
48
mkspecs/macx-ios-clang/LaunchScreen.storyboard
Normal file
48
mkspecs/macx-ios-clang/LaunchScreen.storyboard
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>
|
||||||
|
<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13142\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">
|
||||||
|
<dependencies>
|
||||||
|
<plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12042\"/>
|
||||||
|
<capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>
|
||||||
|
<capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>
|
||||||
|
<capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<!--View Controller-->
|
||||||
|
<scene sceneID=\"EHf-IW-A2E\">
|
||||||
|
<objects>
|
||||||
|
<viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">
|
||||||
|
<view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">
|
||||||
|
<rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>
|
||||||
|
<autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"obG-Y5-kRd\">
|
||||||
|
<rect key=\"frame\" x=\"0.0\" y=\"626.5\" width=\"375\" height=\"20.5\"/>
|
||||||
|
<fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>
|
||||||
|
<color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>
|
||||||
|
<nil key=\"highlightedColor\"/>
|
||||||
|
</label>
|
||||||
|
<label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"$$TARGET\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"GJd-Yh-RWb\">
|
||||||
|
<rect key=\"frame\" x=\"0.0\" y=\"202\" width=\"375\" height=\"43\"/>
|
||||||
|
<fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>
|
||||||
|
<color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>
|
||||||
|
<nil key=\"highlightedColor\"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem=\"Bcu-3y-fUS\" firstAttribute=\"centerX\" secondItem=\"obG-Y5-kRd\" secondAttribute=\"centerX\" id=\"5cz-MP-9tL\"/>
|
||||||
|
<constraint firstItem=\"Bcu-3y-fUS\" firstAttribute=\"centerX\" secondItem=\"GJd-Yh-RWb\" secondAttribute=\"centerX\" id=\"Q3B-4B-g5h\"/>
|
||||||
|
<constraint firstItem=\"obG-Y5-kRd\" firstAttribute=\"leading\" secondItem=\"Bcu-3y-fUS\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"SfN-ll-jLj\"/>
|
||||||
|
<constraint firstAttribute=\"bottom\" secondItem=\"obG-Y5-kRd\" secondAttribute=\"bottom\" constant=\"20\" id=\"Y44-ml-fuU\"/>
|
||||||
|
<constraint firstItem=\"GJd-Yh-RWb\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"moa-c2-u7t\"/>
|
||||||
|
<constraint firstItem=\"GJd-Yh-RWb\" firstAttribute=\"leading\" secondItem=\"Bcu-3y-fUS\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"x7j-FC-K8j\"/>
|
||||||
|
</constraints>
|
||||||
|
<viewLayoutGuide key=\"safeArea\" id=\"Bcu-3y-fUS\"/>
|
||||||
|
</view>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>
|
||||||
|
</objects>
|
||||||
|
<point key=\"canvasLocation\" x=\"53\" y=\"375\"/>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
</document>
|
@ -1,45 +0,0 @@
|
|||||||
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>
|
|
||||||
<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"6250\" systemVersion=\"14A343f\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">
|
|
||||||
<dependencies>
|
|
||||||
<plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"6244\"/>
|
|
||||||
<capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>
|
|
||||||
</dependencies>
|
|
||||||
<objects>
|
|
||||||
<placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File\'s Owner\"/>
|
|
||||||
<placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>
|
|
||||||
<view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">
|
|
||||||
<rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>
|
|
||||||
<autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" misplaced=\"YES\" text=\"\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">
|
|
||||||
<rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>
|
|
||||||
<fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>
|
|
||||||
<color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>
|
|
||||||
<nil key=\"highlightedColor\"/>
|
|
||||||
<variation key=\"widthClass=compact\">
|
|
||||||
<fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>
|
|
||||||
</variation>
|
|
||||||
</label>
|
|
||||||
<label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"$$TARGET\"
|
|
||||||
textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">
|
|
||||||
<rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>
|
|
||||||
<fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>
|
|
||||||
<color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>
|
|
||||||
<nil key=\"highlightedColor\"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"Kid-kn-2rF\"/>
|
|
||||||
<constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>
|
|
||||||
<constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>
|
|
||||||
<constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>
|
|
||||||
<constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>
|
|
||||||
<constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>
|
|
||||||
</constraints>
|
|
||||||
<nil key=\"simulatedStatusBarMetrics\"/>
|
|
||||||
<freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>
|
|
||||||
<point key=\"canvasLocation\" x=\"404\" y=\"445\"/>
|
|
||||||
</view>
|
|
||||||
</objects>
|
|
||||||
</document>
|
|
@ -1560,7 +1560,7 @@ std::pair<bool, QString> UnixMakefileGenerator::writeObjectsPart(QTextStream &t,
|
|||||||
objectsLinkLine = "$(OBJECTS)";
|
objectsLinkLine = "$(OBJECTS)";
|
||||||
} else {
|
} else {
|
||||||
QString ld_response_file = fileVar("OBJECTS_DIR");
|
QString ld_response_file = fileVar("OBJECTS_DIR");
|
||||||
ld_response_file += var("QMAKE_LINK_OBJECT_SCRIPT") + "." + var("TARGET");
|
ld_response_file += var("QMAKE_LINK_OBJECT_SCRIPT") + "." + var("QMAKE_TARGET");
|
||||||
if (!var("BUILD_NAME").isEmpty())
|
if (!var("BUILD_NAME").isEmpty())
|
||||||
ld_response_file += "." + var("BUILD_NAME");
|
ld_response_file += "." + var("BUILD_NAME");
|
||||||
if (!var("MAKEFILE").isEmpty())
|
if (!var("MAKEFILE").isEmpty())
|
||||||
|
@ -788,18 +788,35 @@ static QCborValue::Type convertToExtendedType(QCborContainerPrivate *d)
|
|||||||
// The data is supposed to be US-ASCII. If it isn't (contains UTF-8),
|
// The data is supposed to be US-ASCII. If it isn't (contains UTF-8),
|
||||||
// QDateTime::fromString will fail anyway.
|
// QDateTime::fromString will fail anyway.
|
||||||
dt = QDateTime::fromString(b->asLatin1(), Qt::ISODateWithMs);
|
dt = QDateTime::fromString(b->asLatin1(), Qt::ISODateWithMs);
|
||||||
} else if (tag == qint64(QCborKnownTags::UnixTime_t) && e.type == QCborValue::Integer) {
|
} else if (tag == qint64(QCborKnownTags::UnixTime_t)) {
|
||||||
dt = QDateTime::fromSecsSinceEpoch(e.value, Qt::UTC);
|
qint64 msecs;
|
||||||
} else if (tag == qint64(QCborKnownTags::UnixTime_t) && e.type == QCborValue::Double) {
|
bool ok = false;
|
||||||
dt = QDateTime::fromMSecsSinceEpoch(qint64(e.fpvalue() * 1000), Qt::UTC);
|
if (e.type == QCborValue::Integer) {
|
||||||
|
#if QT_POINTER_SIZE == 8
|
||||||
|
// we don't have a fast 64-bit mul_overflow implementation on
|
||||||
|
// 32-bit architectures.
|
||||||
|
ok = !mul_overflow(e.value, qint64(1000), &msecs);
|
||||||
|
#else
|
||||||
|
static const qint64 Limit = std::numeric_limits<qint64>::max() / 1000;
|
||||||
|
ok = (e.value > -Limit && e.value < Limit);
|
||||||
|
if (ok)
|
||||||
|
msecs = e.value * 1000;
|
||||||
|
#endif
|
||||||
|
} else if (e.type == QCborValue::Double) {
|
||||||
|
ok = convertDoubleTo(round(e.fpvalue() * 1000), &msecs);
|
||||||
|
}
|
||||||
|
if (ok)
|
||||||
|
dt = QDateTime::fromMSecsSinceEpoch(msecs, Qt::UTC);
|
||||||
}
|
}
|
||||||
if (dt.isValid()) {
|
if (dt.isValid()) {
|
||||||
QByteArray text = dt.toString(Qt::ISODateWithMs).toLatin1();
|
QByteArray text = dt.toString(Qt::ISODateWithMs).toLatin1();
|
||||||
|
if (!text.isEmpty()) {
|
||||||
replaceByteData(text, text.size(), Element::StringIsAscii);
|
replaceByteData(text, text.size(), Element::StringIsAscii);
|
||||||
e.type = QCborValue::String;
|
e.type = QCborValue::String;
|
||||||
d->elements[0].value = qint64(QCborKnownTags::DateTimeString);
|
d->elements[0].value = qint64(QCborKnownTags::DateTimeString);
|
||||||
return QCborValue::DateTime;
|
return QCborValue::DateTime;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -810,10 +827,12 @@ static QCborValue::Type convertToExtendedType(QCborContainerPrivate *d)
|
|||||||
// normalize to a short (decoded) form, so as to save space
|
// normalize to a short (decoded) form, so as to save space
|
||||||
QUrl url(e.flags & Element::StringIsUtf16 ?
|
QUrl url(e.flags & Element::StringIsUtf16 ?
|
||||||
b->asQStringRaw() :
|
b->asQStringRaw() :
|
||||||
b->toUtf8String());
|
b->toUtf8String(), QUrl::StrictMode);
|
||||||
|
if (url.isValid()) {
|
||||||
QByteArray encoded = url.toString(QUrl::DecodeReserved).toUtf8();
|
QByteArray encoded = url.toString(QUrl::DecodeReserved).toUtf8();
|
||||||
replaceByteData(encoded, encoded.size(), {});
|
replaceByteData(encoded, encoded.size(), {});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return QCborValue::Url;
|
return QCborValue::Url;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1561,8 +1580,6 @@ void QCborContainerPrivate::decodeStringFromCbor(QCborStreamReader &reader)
|
|||||||
if (newSize > MaxByteArraySize)
|
if (newSize > MaxByteArraySize)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
// since usedData <= data.size(), this can't overflow
|
|
||||||
usedData += increment;
|
|
||||||
data.resize(newSize);
|
data.resize(newSize);
|
||||||
return offset;
|
return offset;
|
||||||
};
|
};
|
||||||
@ -1635,7 +1652,7 @@ void QCborContainerPrivate::decodeStringFromCbor(QCborStreamReader &reader)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update size
|
// update size
|
||||||
if (e.flags & Element::HasByteData) {
|
if (r.status == QCborStreamReader::EndOfString && e.flags & Element::HasByteData) {
|
||||||
auto b = new (dataPtr() + e.value) ByteData;
|
auto b = new (dataPtr() + e.value) ByteData;
|
||||||
b->len = data.size() - e.value - int(sizeof(*b));
|
b->len = data.size() - e.value - int(sizeof(*b));
|
||||||
usedData += b->len;
|
usedData += b->len;
|
||||||
|
@ -577,7 +577,7 @@ void QJsonObject::removeImpl(T key)
|
|||||||
if (!keyExists)
|
if (!keyExists)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
removeAt(index);
|
removeAt(index / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_STRINGVIEW_LEVEL < 2
|
#if QT_STRINGVIEW_LEVEL < 2
|
||||||
@ -629,7 +629,7 @@ QJsonValue QJsonObject::takeImpl(T key)
|
|||||||
return QJsonValue(QJsonValue::Undefined);
|
return QJsonValue(QJsonValue::Undefined);
|
||||||
|
|
||||||
const QJsonValue v = QJsonPrivate::Value::fromTrustedCbor(o->extractAt(index + 1));
|
const QJsonValue v = QJsonPrivate::Value::fromTrustedCbor(o->extractAt(index + 1));
|
||||||
removeAt(index);
|
removeAt(index / 2);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1486,8 +1486,8 @@ void QJsonObject::setValueAt(int i, const QJsonValue &val)
|
|||||||
void QJsonObject::removeAt(int index)
|
void QJsonObject::removeAt(int index)
|
||||||
{
|
{
|
||||||
detach2();
|
detach2();
|
||||||
o->removeAt(index + 1);
|
o->removeAt(2 * index + 1);
|
||||||
o->removeAt(index);
|
o->removeAt(2 * index);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t qHash(const QJsonObject &object, size_t seed)
|
size_t qHash(const QJsonObject &object, size_t seed)
|
||||||
|
@ -1781,57 +1781,39 @@ const QString::Null QString::null = { };
|
|||||||
|
|
||||||
/*! \typedef QString::const_iterator
|
/*! \typedef QString::const_iterator
|
||||||
|
|
||||||
This typedef provides an STL-style const iterator for QString.
|
|
||||||
|
|
||||||
\sa QString::iterator
|
\sa QString::iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \typedef QString::iterator
|
/*! \typedef QString::iterator
|
||||||
|
|
||||||
The QString::iterator typedef provides an STL-style non-const
|
|
||||||
iterator for QString.
|
|
||||||
|
|
||||||
\sa QString::const_iterator
|
\sa QString::const_iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \typedef QString::const_reverse_iterator
|
/*! \typedef QString::const_reverse_iterator
|
||||||
\since 5.6
|
\since 5.6
|
||||||
|
|
||||||
This typedef provides an STL-style const reverse iterator for QString.
|
|
||||||
|
|
||||||
\sa QString::reverse_iterator, QString::const_iterator
|
\sa QString::reverse_iterator, QString::const_iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \typedef QString::reverse_iterator
|
/*! \typedef QString::reverse_iterator
|
||||||
\since 5.6
|
\since 5.6
|
||||||
|
|
||||||
This typedef provides an STL-style non-const reverse iterator for QString.
|
|
||||||
|
|
||||||
\sa QString::const_reverse_iterator, QString::iterator
|
\sa QString::const_reverse_iterator, QString::iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\typedef QString::size_type
|
\typedef QString::size_type
|
||||||
|
|
||||||
The QString::size_type typedef provides an STL-style type for sizes (int).
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\typedef QString::difference_type
|
\typedef QString::difference_type
|
||||||
|
|
||||||
The QString::size_type typedef provides an STL-style type for difference between pointers.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\typedef QString::const_reference
|
\typedef QString::const_reference
|
||||||
|
|
||||||
This typedef provides an STL-style const reference for a QString element (QChar).
|
|
||||||
*/
|
*/
|
||||||
/*!
|
/*!
|
||||||
\typedef QString::reference
|
\typedef QString::reference
|
||||||
|
|
||||||
This typedef provides an STL-style
|
|
||||||
reference for a QString element (QChar).
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -1849,8 +1831,6 @@ const QString::Null QString::null = { };
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\typedef QString::value_type
|
\typedef QString::value_type
|
||||||
|
|
||||||
This typedef provides an STL-style value type for QString.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \fn QString::iterator QString::begin()
|
/*! \fn QString::iterator QString::begin()
|
||||||
@ -9397,8 +9377,6 @@ QString &QString::setRawData(const QChar *unicode, int size)
|
|||||||
\typedef QLatin1String::iterator
|
\typedef QLatin1String::iterator
|
||||||
\since 5.10
|
\since 5.10
|
||||||
|
|
||||||
This typedef provides an STL-style const iterator for QLatin1String.
|
|
||||||
|
|
||||||
QLatin1String does not support mutable iterators, so this is the same
|
QLatin1String does not support mutable iterators, so this is the same
|
||||||
as const_iterator.
|
as const_iterator.
|
||||||
|
|
||||||
@ -9409,8 +9387,6 @@ QString &QString::setRawData(const QChar *unicode, int size)
|
|||||||
\typedef QLatin1String::const_iterator
|
\typedef QLatin1String::const_iterator
|
||||||
\since 5.10
|
\since 5.10
|
||||||
|
|
||||||
This typedef provides an STL-style const iterator for QLatin1String.
|
|
||||||
|
|
||||||
\sa iterator, const_reverse_iterator
|
\sa iterator, const_reverse_iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -9418,8 +9394,6 @@ QString &QString::setRawData(const QChar *unicode, int size)
|
|||||||
\typedef QLatin1String::reverse_iterator
|
\typedef QLatin1String::reverse_iterator
|
||||||
\since 5.10
|
\since 5.10
|
||||||
|
|
||||||
This typedef provides an STL-style const reverse iterator for QLatin1String.
|
|
||||||
|
|
||||||
QLatin1String does not support mutable reverse iterators, so this is the
|
QLatin1String does not support mutable reverse iterators, so this is the
|
||||||
same as const_reverse_iterator.
|
same as const_reverse_iterator.
|
||||||
|
|
||||||
@ -9430,8 +9404,6 @@ QString &QString::setRawData(const QChar *unicode, int size)
|
|||||||
\typedef QLatin1String::const_reverse_iterator
|
\typedef QLatin1String::const_reverse_iterator
|
||||||
\since 5.10
|
\since 5.10
|
||||||
|
|
||||||
This typedef provides an STL-style const reverse iterator for QLatin1String.
|
|
||||||
|
|
||||||
\sa reverse_iterator, const_iterator
|
\sa reverse_iterator, const_iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -10332,8 +10304,6 @@ QDataStream &operator>>(QDataStream &in, QString &str)
|
|||||||
\typedef QStringRef::const_iterator
|
\typedef QStringRef::const_iterator
|
||||||
\since 5.4
|
\since 5.4
|
||||||
|
|
||||||
This typedef provides an STL-style const iterator for QStringRef.
|
|
||||||
|
|
||||||
\sa QStringRef::const_reverse_iterator
|
\sa QStringRef::const_reverse_iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -10341,8 +10311,6 @@ QDataStream &operator>>(QDataStream &in, QString &str)
|
|||||||
\typedef QStringRef::const_reverse_iterator
|
\typedef QStringRef::const_reverse_iterator
|
||||||
\since 5.7
|
\since 5.7
|
||||||
|
|
||||||
This typedef provides an STL-style const reverse iterator for QStringRef.
|
|
||||||
|
|
||||||
\sa QStringRef::const_iterator
|
\sa QStringRef::const_iterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1063,18 +1063,23 @@ QString QCommandLineParser::helpText() const
|
|||||||
return d->helpText(false);
|
return d->helpText(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString wrapText(const QString &names, int longestOptionNameString, const QString &description)
|
static QString wrapText(const QString &names, int optionNameMaxWidth, const QString &description)
|
||||||
{
|
{
|
||||||
const QLatin1Char nl('\n');
|
const QLatin1Char nl('\n');
|
||||||
const QLatin1String indentation(" ");
|
const QLatin1String indentation(" ");
|
||||||
if (description.isEmpty())
|
|
||||||
return indentation + names + nl;
|
|
||||||
|
|
||||||
QString text = indentation + names.leftJustified(longestOptionNameString) + QLatin1Char(' ');
|
// In case the list of option names is very long, wrap it as well
|
||||||
const int indent = text.length();
|
int nameIndex = 0;
|
||||||
|
auto nextNameSection = [&]() {
|
||||||
|
QString section = names.mid(nameIndex, optionNameMaxWidth);
|
||||||
|
nameIndex += section.size();
|
||||||
|
return section;
|
||||||
|
};
|
||||||
|
|
||||||
|
QString text;
|
||||||
int lineStart = 0;
|
int lineStart = 0;
|
||||||
int lastBreakable = -1;
|
int lastBreakable = -1;
|
||||||
const int max = 79 - indent;
|
const int max = 79 - (indentation.size() + optionNameMaxWidth + 1);
|
||||||
int x = 0;
|
int x = 0;
|
||||||
const int len = description.length();
|
const int len = description.length();
|
||||||
|
|
||||||
@ -1103,8 +1108,7 @@ static QString wrapText(const QString &names, int longestOptionNameString, const
|
|||||||
if (breakAt != -1) {
|
if (breakAt != -1) {
|
||||||
const int numChars = breakAt - lineStart;
|
const int numChars = breakAt - lineStart;
|
||||||
//qDebug() << "breakAt=" << description.at(breakAt) << "breakAtSpace=" << breakAtSpace << lineStart << "to" << breakAt << description.mid(lineStart, numChars);
|
//qDebug() << "breakAt=" << description.at(breakAt) << "breakAtSpace=" << breakAtSpace << lineStart << "to" << breakAt << description.mid(lineStart, numChars);
|
||||||
if (lineStart > 0)
|
text += indentation + nextNameSection().leftJustified(optionNameMaxWidth) + QLatin1Char(' ');
|
||||||
text += QString(indent, QLatin1Char(' '));
|
|
||||||
text += description.midRef(lineStart, numChars) + nl;
|
text += description.midRef(lineStart, numChars) + nl;
|
||||||
x = 0;
|
x = 0;
|
||||||
lastBreakable = -1;
|
lastBreakable = -1;
|
||||||
@ -1115,6 +1119,10 @@ static QString wrapText(const QString &names, int longestOptionNameString, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (nameIndex < names.size()) {
|
||||||
|
text += indentation + nextNameSection() + nl;
|
||||||
|
}
|
||||||
|
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1158,11 +1166,12 @@ QString QCommandLineParserPrivate::helpText(bool includeQtOptions) const
|
|||||||
longestOptionNameString = qMax(longestOptionNameString, optionNamesString.length());
|
longestOptionNameString = qMax(longestOptionNameString, optionNamesString.length());
|
||||||
}
|
}
|
||||||
++longestOptionNameString;
|
++longestOptionNameString;
|
||||||
|
const int optionNameMaxWidth = qMin(50, longestOptionNameString);
|
||||||
auto optionNameIterator = optionNameList.cbegin();
|
auto optionNameIterator = optionNameList.cbegin();
|
||||||
for (const QCommandLineOption &option : qAsConst(options)) {
|
for (const QCommandLineOption &option : qAsConst(options)) {
|
||||||
if (option.flags() & QCommandLineOption::HiddenFromHelp)
|
if (option.flags() & QCommandLineOption::HiddenFromHelp)
|
||||||
continue;
|
continue;
|
||||||
text += wrapText(*optionNameIterator, longestOptionNameString, option.description());
|
text += wrapText(*optionNameIterator, optionNameMaxWidth, option.description());
|
||||||
++optionNameIterator;
|
++optionNameIterator;
|
||||||
}
|
}
|
||||||
if (!positionalArgumentDefinitions.isEmpty()) {
|
if (!positionalArgumentDefinitions.isEmpty()) {
|
||||||
@ -1170,7 +1179,7 @@ QString QCommandLineParserPrivate::helpText(bool includeQtOptions) const
|
|||||||
text += nl;
|
text += nl;
|
||||||
text += QCommandLineParser::tr("Arguments:") + nl;
|
text += QCommandLineParser::tr("Arguments:") + nl;
|
||||||
for (const PositionalArgumentDefinition &arg : positionalArgumentDefinitions)
|
for (const PositionalArgumentDefinition &arg : positionalArgumentDefinitions)
|
||||||
text += wrapText(arg.name, longestOptionNameString, arg.description);
|
text += wrapText(arg.name, optionNameMaxWidth, arg.description);
|
||||||
}
|
}
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
@ -2016,6 +2016,21 @@ static void convert_Mono_to_Indexed8(QImageData *dest, const QImageData *src, Qt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void copy_8bit_pixels(QImageData *dest, const QImageData *src)
|
||||||
|
{
|
||||||
|
if (src->bytes_per_line == dest->bytes_per_line) {
|
||||||
|
memcpy(dest->data, src->data, src->bytes_per_line * src->height);
|
||||||
|
} else {
|
||||||
|
const uchar *sdata = src->data;
|
||||||
|
uchar *ddata = dest->data;
|
||||||
|
for (int y = 0; y < src->height; ++y) {
|
||||||
|
memcpy(ddata, sdata, src->width);
|
||||||
|
sdata += src->bytes_per_line;
|
||||||
|
ddata += dest->bytes_per_line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void convert_Indexed8_to_Alpha8(QImageData *dest, const QImageData *src, Qt::ImageConversionFlags)
|
static void convert_Indexed8_to_Alpha8(QImageData *dest, const QImageData *src, Qt::ImageConversionFlags)
|
||||||
{
|
{
|
||||||
Q_ASSERT(src->format == QImage::Format_Indexed8);
|
Q_ASSERT(src->format == QImage::Format_Indexed8);
|
||||||
@ -2031,11 +2046,15 @@ static void convert_Indexed8_to_Alpha8(QImageData *dest, const QImageData *src,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (simpleCase)
|
if (simpleCase)
|
||||||
memcpy(dest->data, src->data, src->bytes_per_line * src->height);
|
copy_8bit_pixels(dest, src);
|
||||||
else {
|
else {
|
||||||
qsizetype size = src->bytes_per_line * src->height;
|
const uchar *sdata = src->data;
|
||||||
for (qsizetype i = 0; i < size; ++i) {
|
uchar *ddata = dest->data;
|
||||||
dest->data[i] = translate[src->data[i]];
|
for (int y = 0; y < src->height; ++y) {
|
||||||
|
for (int x = 0; x < src->width; ++x)
|
||||||
|
ddata[x] = translate[sdata[x]];
|
||||||
|
sdata += src->bytes_per_line;
|
||||||
|
ddata += dest->bytes_per_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2055,11 +2074,15 @@ static void convert_Indexed8_to_Grayscale8(QImageData *dest, const QImageData *s
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (simpleCase)
|
if (simpleCase)
|
||||||
memcpy(dest->data, src->data, src->bytes_per_line * src->height);
|
copy_8bit_pixels(dest, src);
|
||||||
else {
|
else {
|
||||||
qsizetype size = src->bytes_per_line * src->height;
|
const uchar *sdata = src->data;
|
||||||
for (qsizetype i = 0; i < size; ++i) {
|
uchar *ddata = dest->data;
|
||||||
dest->data[i] = translate[src->data[i]];
|
for (int y = 0; y < src->height; ++y) {
|
||||||
|
for (int x = 0; x < src->width; ++x)
|
||||||
|
ddata[x] = translate[sdata[x]];
|
||||||
|
sdata += src->bytes_per_line;
|
||||||
|
ddata += dest->bytes_per_line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2107,7 +2130,7 @@ static void convert_Alpha8_to_Indexed8(QImageData *dest, const QImageData *src,
|
|||||||
Q_ASSERT(src->format == QImage::Format_Alpha8);
|
Q_ASSERT(src->format == QImage::Format_Alpha8);
|
||||||
Q_ASSERT(dest->format == QImage::Format_Indexed8);
|
Q_ASSERT(dest->format == QImage::Format_Indexed8);
|
||||||
|
|
||||||
memcpy(dest->data, src->data, src->bytes_per_line * src->height);
|
copy_8bit_pixels(dest, src);
|
||||||
|
|
||||||
dest->colortable = defaultColorTables->alpha;
|
dest->colortable = defaultColorTables->alpha;
|
||||||
}
|
}
|
||||||
@ -2117,8 +2140,7 @@ static void convert_Grayscale8_to_Indexed8(QImageData *dest, const QImageData *s
|
|||||||
Q_ASSERT(src->format == QImage::Format_Grayscale8);
|
Q_ASSERT(src->format == QImage::Format_Grayscale8);
|
||||||
Q_ASSERT(dest->format == QImage::Format_Indexed8);
|
Q_ASSERT(dest->format == QImage::Format_Indexed8);
|
||||||
|
|
||||||
memcpy(dest->data, src->data, src->bytes_per_line * src->height);
|
copy_8bit_pixels(dest, src);
|
||||||
|
|
||||||
|
|
||||||
dest->colortable = defaultColorTables->gray;
|
dest->colortable = defaultColorTables->gray;
|
||||||
}
|
}
|
||||||
|
@ -951,6 +951,7 @@ QWheelEvent::~QWheelEvent()
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn QPoint QWheelEvent::position() const
|
\fn QPoint QWheelEvent::position() const
|
||||||
|
\since 5.14
|
||||||
|
|
||||||
Returns the position of the mouse cursor relative to the widget
|
Returns the position of the mouse cursor relative to the widget
|
||||||
that received the event.
|
that received the event.
|
||||||
|
@ -162,12 +162,12 @@ QT_END_NAMESPACE
|
|||||||
if (icon.isNull())
|
if (icon.isNull())
|
||||||
return nil;
|
return nil;
|
||||||
|
|
||||||
auto nsImage = [[NSImage alloc] initWithSize:NSZeroSize];
|
|
||||||
|
|
||||||
auto availableSizes = icon.availableSizes();
|
auto availableSizes = icon.availableSizes();
|
||||||
if (availableSizes.isEmpty() && size > 0)
|
if (availableSizes.isEmpty() && size > 0)
|
||||||
availableSizes << QSize(size, size);
|
availableSizes << QSize(size, size);
|
||||||
|
|
||||||
|
auto nsImage = [[[NSImage alloc] initWithSize:NSZeroSize] autorelease];
|
||||||
|
|
||||||
for (QSize size : qAsConst(availableSizes)) {
|
for (QSize size : qAsConst(availableSizes)) {
|
||||||
QImage image = icon.pixmap(size).toImage();
|
QImage image = icon.pixmap(size).toImage();
|
||||||
if (image.isNull())
|
if (image.isNull())
|
||||||
@ -182,12 +182,15 @@ QT_END_NAMESPACE
|
|||||||
[nsImage addRepresentation:[imageRep autorelease]];
|
[nsImage addRepresentation:[imageRep autorelease]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!nsImage.representations.count)
|
||||||
|
return nil;
|
||||||
|
|
||||||
[nsImage setTemplate:icon.isMask()];
|
[nsImage setTemplate:icon.isMask()];
|
||||||
|
|
||||||
if (size)
|
if (size)
|
||||||
nsImage.size = CGSizeMake(size, size);
|
nsImage.size = CGSizeMake(size, size);
|
||||||
|
|
||||||
return [nsImage autorelease];
|
return nsImage;
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -420,7 +420,9 @@ QFontEngineData::~QFontEngineData()
|
|||||||
be removed with removeSubstitutions(). Use substitute() to retrieve
|
be removed with removeSubstitutions(). Use substitute() to retrieve
|
||||||
a family's first substitute, or the family name itself if it has
|
a family's first substitute, or the family name itself if it has
|
||||||
no substitutes. Use substitutes() to retrieve a list of a family's
|
no substitutes. Use substitutes() to retrieve a list of a family's
|
||||||
substitutes (which may be empty).
|
substitutes (which may be empty). After substituting a font, you must
|
||||||
|
trigger the updating of the font by destroying and re-creating all
|
||||||
|
QFont objects.
|
||||||
|
|
||||||
Every QFont has a key() which you can use, for example, as the key
|
Every QFont has a key() which you can use, for example, as the key
|
||||||
in a cache or dictionary. If you want to store a user's font
|
in a cache or dictionary. If you want to store a user's font
|
||||||
@ -1864,6 +1866,9 @@ QStringList QFont::substitutes(const QString &familyName)
|
|||||||
Inserts \a substituteName into the substitution
|
Inserts \a substituteName into the substitution
|
||||||
table for the family \a familyName.
|
table for the family \a familyName.
|
||||||
|
|
||||||
|
After substituting a font, trigger the updating of the font by destroying
|
||||||
|
and re-creating all QFont objects.
|
||||||
|
|
||||||
\sa insertSubstitutions(), removeSubstitutions(), substitutions(), substitute(), substitutes()
|
\sa insertSubstitutions(), removeSubstitutions(), substitutions(), substitute(), substitutes()
|
||||||
*/
|
*/
|
||||||
void QFont::insertSubstitution(const QString &familyName,
|
void QFont::insertSubstitution(const QString &familyName,
|
||||||
@ -1882,6 +1887,10 @@ void QFont::insertSubstitution(const QString &familyName,
|
|||||||
Inserts the list of families \a substituteNames into the
|
Inserts the list of families \a substituteNames into the
|
||||||
substitution list for \a familyName.
|
substitution list for \a familyName.
|
||||||
|
|
||||||
|
After substituting a font, trigger the updating of the font by destroying
|
||||||
|
and re-creating all QFont objects.
|
||||||
|
|
||||||
|
|
||||||
\sa insertSubstitution(), removeSubstitutions(), substitutions(), substitute()
|
\sa insertSubstitution(), removeSubstitutions(), substitutions(), substitute()
|
||||||
*/
|
*/
|
||||||
void QFont::insertSubstitutions(const QString &familyName,
|
void QFont::insertSubstitutions(const QString &familyName,
|
||||||
|
@ -123,6 +123,12 @@ bool QNetworkAccessCacheBackend::sendCacheContents()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QNetworkAccessCacheBackend::start()
|
||||||
|
{
|
||||||
|
open();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void QNetworkAccessCacheBackend::closeDownstreamChannel()
|
void QNetworkAccessCacheBackend::closeDownstreamChannel()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ public:
|
|||||||
void open() override;
|
void open() override;
|
||||||
void closeDownstreamChannel() override;
|
void closeDownstreamChannel() override;
|
||||||
void closeUpstreamChannel();
|
void closeUpstreamChannel();
|
||||||
|
bool start() override;
|
||||||
|
|
||||||
void upstreamReadyRead();
|
void upstreamReadyRead();
|
||||||
void downstreamReadyWrite() override;
|
void downstreamReadyWrite() override;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2016 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the QtNetwork module of the Qt Toolkit.
|
** This file is part of the QtNetwork module of the Qt Toolkit.
|
||||||
|
@ -245,7 +245,7 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
|
|||||||
attr.password = request.url().password().toUtf8();
|
attr.password = request.url().password().toUtf8();
|
||||||
}
|
}
|
||||||
|
|
||||||
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_PERSIST_FILE | EMSCRIPTEN_FETCH_REPLACE;
|
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY;
|
||||||
|
|
||||||
QNetworkRequest::CacheLoadControl CacheLoadControlAttribute =
|
QNetworkRequest::CacheLoadControl CacheLoadControlAttribute =
|
||||||
(QNetworkRequest::CacheLoadControl)request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt();
|
(QNetworkRequest::CacheLoadControl)request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt();
|
||||||
|
@ -71,6 +71,7 @@ QT_BEGIN_NAMESPACE
|
|||||||
static QByteArray qNtlmPhase1();
|
static QByteArray qNtlmPhase1();
|
||||||
static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phase2data);
|
static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phase2data);
|
||||||
#if QT_CONFIG(sspi) // SSPI
|
#if QT_CONFIG(sspi) // SSPI
|
||||||
|
static bool q_SSPI_library_load();
|
||||||
static QByteArray qSspiStartup(QAuthenticatorPrivate *ctx, QAuthenticatorPrivate::Method method,
|
static QByteArray qSspiStartup(QAuthenticatorPrivate *ctx, QAuthenticatorPrivate::Method method,
|
||||||
const QString& host);
|
const QString& host);
|
||||||
static QByteArray qSspiContinue(QAuthenticatorPrivate *ctx, QAuthenticatorPrivate::Method method,
|
static QByteArray qSspiContinue(QAuthenticatorPrivate *ctx, QAuthenticatorPrivate::Method method,
|
||||||
@ -503,8 +504,13 @@ QByteArray QAuthenticatorPrivate::calculateResponse(const QByteArray &requestMet
|
|||||||
if (challenge.isEmpty()) {
|
if (challenge.isEmpty()) {
|
||||||
#if QT_CONFIG(sspi) // SSPI
|
#if QT_CONFIG(sspi) // SSPI
|
||||||
QByteArray phase1Token;
|
QByteArray phase1Token;
|
||||||
if (user.isEmpty()) // Only pull from system if no user was specified in authenticator
|
if (user.isEmpty()) { // Only pull from system if no user was specified in authenticator
|
||||||
phase1Token = qSspiStartup(this, method, host);
|
phase1Token = qSspiStartup(this, method, host);
|
||||||
|
} else if (!q_SSPI_library_load()) {
|
||||||
|
// Since we're not running qSspiStartup we have to make sure the library is loaded
|
||||||
|
qWarning("Failed to load the SSPI libraries");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
if (!phase1Token.isEmpty()) {
|
if (!phase1Token.isEmpty()) {
|
||||||
response = phase1Token.toBase64();
|
response = phase1Token.toBase64();
|
||||||
phase = Phase2;
|
phase = Phase2;
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include <QtCore/qvector.h>
|
#include <QtCore/qvector.h>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include <limits>
|
||||||
#include <locale>
|
#include <locale>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
@ -120,7 +121,7 @@ bool QAsn1Element::read(QDataStream &stream)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// length
|
// length
|
||||||
qint64 length = 0;
|
quint64 length = 0;
|
||||||
quint8 first;
|
quint8 first;
|
||||||
stream >> first;
|
stream >> first;
|
||||||
if (first & 0x80) {
|
if (first & 0x80) {
|
||||||
@ -139,11 +140,13 @@ bool QAsn1Element::read(QDataStream &stream)
|
|||||||
length = (first & 0x7f);
|
length = (first & 0x7f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (length > quint64(std::numeric_limits<int>::max()))
|
||||||
|
return false;
|
||||||
// value
|
// value
|
||||||
QByteArray tmpValue;
|
QByteArray tmpValue;
|
||||||
tmpValue.resize(length);
|
tmpValue.resize(length);
|
||||||
int count = stream.readRawData(tmpValue.data(), tmpValue.size());
|
int count = stream.readRawData(tmpValue.data(), tmpValue.size());
|
||||||
if (count != length)
|
if (count != int(length))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
mType = tmpType;
|
mType = tmpType;
|
||||||
|
@ -278,8 +278,6 @@
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\typedef QDtls::GeneratorParameters
|
\typedef QDtls::GeneratorParameters
|
||||||
|
|
||||||
This is a synonym for QDtlsClientVerifier::GeneratorParameters.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -481,7 +481,9 @@ QList<QCocoaWindow *> *QCocoaIntegration::popupWindowStack()
|
|||||||
|
|
||||||
void QCocoaIntegration::setApplicationIcon(const QIcon &icon) const
|
void QCocoaIntegration::setApplicationIcon(const QIcon &icon) const
|
||||||
{
|
{
|
||||||
NSApp.applicationIconImage = [NSImage imageFromQIcon:icon];
|
// Fall back to a size that looks good on the highest resolution screen available
|
||||||
|
auto fallbackSize = NSApp.dockTile.size.width * qGuiApp->devicePixelRatio();
|
||||||
|
NSApp.applicationIconImage = [NSImage imageFromQIcon:icon withSize:fallbackSize];
|
||||||
}
|
}
|
||||||
|
|
||||||
void QCocoaIntegration::beep() const
|
void QCocoaIntegration::beep() const
|
||||||
|
@ -614,8 +614,12 @@ QPixmap QCocoaScreen::grabWindow(WId view, int x, int y, int width, int height)
|
|||||||
QRect windowRect;
|
QRect windowRect;
|
||||||
for (uint i = 0; i < displayCount; ++i) {
|
for (uint i = 0; i < displayCount; ++i) {
|
||||||
QRect displayBounds = QRectF::fromCGRect(CGDisplayBounds(displays[i])).toRect();
|
QRect displayBounds = QRectF::fromCGRect(CGDisplayBounds(displays[i])).toRect();
|
||||||
|
// Only include the screen if it is positioned past the x/y position
|
||||||
|
if ((displayBounds.x() >= x || displayBounds.right() > x) &&
|
||||||
|
(displayBounds.y() >= y || displayBounds.bottom() > y)) {
|
||||||
windowRect = windowRect.united(displayBounds);
|
windowRect = windowRect.united(displayBounds);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (grabRect.width() < 0)
|
if (grabRect.width() < 0)
|
||||||
grabRect.setWidth(windowRect.width());
|
grabRect.setWidth(windowRect.width());
|
||||||
if (grabRect.height() < 0)
|
if (grabRect.height() < 0)
|
||||||
@ -631,6 +635,11 @@ QPixmap QCocoaScreen::grabWindow(WId view, int x, int y, int width, int height)
|
|||||||
auto display = displays[i];
|
auto display = displays[i];
|
||||||
QRect displayBounds = QRectF::fromCGRect(CGDisplayBounds(display)).toRect();
|
QRect displayBounds = QRectF::fromCGRect(CGDisplayBounds(display)).toRect();
|
||||||
QRect grabBounds = displayBounds.intersected(grabRect);
|
QRect grabBounds = displayBounds.intersected(grabRect);
|
||||||
|
if (grabBounds.isNull()) {
|
||||||
|
destinations.append(QRect());
|
||||||
|
images.append(QImage());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
QRect displayLocalGrabBounds = QRect(QPoint(grabBounds.topLeft() - displayBounds.topLeft()), grabBounds.size());
|
QRect displayLocalGrabBounds = QRect(QPoint(grabBounds.topLeft() - displayBounds.topLeft()), grabBounds.size());
|
||||||
QImage displayImage = qt_mac_toQImage(QCFType<CGImageRef>(CGDisplayCreateImageForRect(display, displayLocalGrabBounds.toCGRect())));
|
QImage displayImage = qt_mac_toQImage(QCFType<CGImageRef>(CGDisplayCreateImageForRect(display, displayLocalGrabBounds.toCGRect())));
|
||||||
displayImage.setDevicePixelRatio(displayImage.size().width() / displayLocalGrabBounds.size().width());
|
displayImage.setDevicePixelRatio(displayImage.size().width() / displayLocalGrabBounds.size().width());
|
||||||
|
@ -368,8 +368,18 @@ void QCocoaWindow::setVisible(bool visible)
|
|||||||
} else if (window()->modality() == Qt::ApplicationModal) {
|
} else if (window()->modality() == Qt::ApplicationModal) {
|
||||||
// Show the window as application modal
|
// Show the window as application modal
|
||||||
eventDispatcher()->beginModalSession(window());
|
eventDispatcher()->beginModalSession(window());
|
||||||
} else if (m_view.window.canBecomeKeyWindow && !eventDispatcher()->hasModalSession()) {
|
} else if (m_view.window.canBecomeKeyWindow) {
|
||||||
|
bool shouldBecomeKeyNow = !NSApp.modalWindow || m_view.window.worksWhenModal;
|
||||||
|
|
||||||
|
// Panels with becomesKeyOnlyIfNeeded set should not activate until a view
|
||||||
|
// with needsPanelToBecomeKey, for example a line edit, is clicked.
|
||||||
|
if ([m_view.window isKindOfClass:[NSPanel class]])
|
||||||
|
shouldBecomeKeyNow &= !(static_cast<NSPanel*>(m_view.window).becomesKeyOnlyIfNeeded);
|
||||||
|
|
||||||
|
if (shouldBecomeKeyNow)
|
||||||
[m_view.window makeKeyAndOrderFront:nil];
|
[m_view.window makeKeyAndOrderFront:nil];
|
||||||
|
else
|
||||||
|
[m_view.window orderFront:nil];
|
||||||
} else {
|
} else {
|
||||||
[m_view.window orderFront:nil];
|
[m_view.window orderFront:nil];
|
||||||
}
|
}
|
||||||
@ -891,10 +901,13 @@ void QCocoaWindow::setWindowIcon(const QIcon &icon)
|
|||||||
|
|
||||||
QMacAutoReleasePool pool;
|
QMacAutoReleasePool pool;
|
||||||
|
|
||||||
if (icon.isNull())
|
if (icon.isNull()) {
|
||||||
iconButton.image = [NSWorkspace.sharedWorkspace iconForFile:m_view.window.representedFilename];
|
iconButton.image = [NSWorkspace.sharedWorkspace iconForFile:m_view.window.representedFilename];
|
||||||
else
|
} else {
|
||||||
iconButton.image = [NSImage imageFromQIcon:icon];
|
// Fall back to a size that looks good on the highest resolution screen available
|
||||||
|
auto fallbackSize = iconButton.frame.size.height * qGuiApp->devicePixelRatio();
|
||||||
|
iconButton.image = [NSImage imageFromQIcon:icon withSize:fallbackSize];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QCocoaWindow::setAlertState(bool enabled)
|
void QCocoaWindow::setAlertState(bool enabled)
|
||||||
@ -1814,8 +1827,17 @@ void QCocoaWindow::updateNSToolbar()
|
|||||||
|
|
||||||
bool QCocoaWindow::testContentBorderAreaPosition(int position) const
|
bool QCocoaWindow::testContentBorderAreaPosition(int position) const
|
||||||
{
|
{
|
||||||
return isContentView() && m_drawContentBorderGradient &&
|
if (!m_drawContentBorderGradient || !isContentView())
|
||||||
0 <= position && position < [m_view.window contentBorderThicknessForEdge:NSMaxYEdge];
|
return false;
|
||||||
|
|
||||||
|
// Determine if the given y postion (relative to the content area) is inside the
|
||||||
|
// unified toolbar area. Note that the value returned by contentBorderThicknessForEdge
|
||||||
|
// includes the title bar height; subtract it.
|
||||||
|
const int contentBorderThickness = [m_view.window contentBorderThicknessForEdge:NSMaxYEdge];
|
||||||
|
const NSRect frameRect = m_view.window.frame;
|
||||||
|
const NSRect contentRect = [m_view.window contentRectForFrameRect:frameRect];
|
||||||
|
const CGFloat titlebarHeight = frameRect.size.height - contentRect.size.height;
|
||||||
|
return 0 <= position && position < (contentBorderThickness - titlebarHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal QCocoaWindow::devicePixelRatio() const
|
qreal QCocoaWindow::devicePixelRatio() const
|
||||||
|
@ -100,6 +100,18 @@ void QCocoaWindowManager::modalSessionChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Our worksWhenModal implementation is declarative and will normally be picked
|
||||||
|
// up by AppKit when needed, but to make sure AppKit also reflects the state
|
||||||
|
// in the window tag, so that the window can be ordered front by clicking it,
|
||||||
|
// we need to explicitly call setWorksWhenModal.
|
||||||
|
for (id window in NSApp.windows) {
|
||||||
|
if ([window isKindOfClass:[QNSPanel class]]) {
|
||||||
|
auto *panel = static_cast<QNSPanel *>(window);
|
||||||
|
// Call setter to tell AppKit that our state has changed
|
||||||
|
[panel setWorksWhenModal:panel.worksWhenModal];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initializeWindowManager() { Q_UNUSED(QCocoaWindowManager::instance()); }
|
static void initializeWindowManager() { Q_UNUSED(QCocoaWindowManager::instance()); }
|
||||||
|
@ -184,7 +184,10 @@ QCocoaTouch::getCurrentTouchPointList(NSEvent *event, bool acceptSingleTouch)
|
|||||||
if (_touchCount != _currentTouches.size()) {
|
if (_touchCount != _currentTouches.size()) {
|
||||||
// Remove all instances, and basically start from scratch:
|
// Remove all instances, and basically start from scratch:
|
||||||
touchPoints.clear();
|
touchPoints.clear();
|
||||||
for (QCocoaTouch *qcocoaTouch : _currentTouches) {
|
// Deleting touch points will remove them from current touches,
|
||||||
|
// so we make a copy of the touches before iterating them.
|
||||||
|
const auto currentTouchesSnapshot = _currentTouches;
|
||||||
|
for (QCocoaTouch *qcocoaTouch : currentTouchesSnapshot) {
|
||||||
if (!_updateInternalStateOnly) {
|
if (!_updateInternalStateOnly) {
|
||||||
qcocoaTouch->_touchPoint.state = Qt::TouchPointReleased;
|
qcocoaTouch->_touchPoint.state = Qt::TouchPointReleased;
|
||||||
touchPoints.insert(qcocoaTouch->_touchPoint.id, qcocoaTouch->_touchPoint);
|
touchPoints.insert(qcocoaTouch->_touchPoint.id, qcocoaTouch->_touchPoint);
|
||||||
|
@ -158,8 +158,79 @@ static bool isMouseEvent(NSEvent *ev)
|
|||||||
#define QNSWINDOW_PROTOCOL_IMPLMENTATION 1
|
#define QNSWINDOW_PROTOCOL_IMPLMENTATION 1
|
||||||
#include "qnswindow.mm"
|
#include "qnswindow.mm"
|
||||||
#undef QNSWINDOW_PROTOCOL_IMPLMENTATION
|
#undef QNSWINDOW_PROTOCOL_IMPLMENTATION
|
||||||
|
|
||||||
|
- (BOOL)worksWhenModal
|
||||||
|
{
|
||||||
|
if (!m_platformWindow)
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
// Conceptually there are two sets of windows we need consider:
|
||||||
|
//
|
||||||
|
// - windows 'lower' in the modal session stack
|
||||||
|
// - windows 'within' the current modal session
|
||||||
|
//
|
||||||
|
// The first set of windows should always be blocked by the current
|
||||||
|
// modal session, regardless of window type. The latter set may contain
|
||||||
|
// windows with a transient parent, which from Qt's point of view makes
|
||||||
|
// them 'child' windows, so we treat them as operable within the current
|
||||||
|
// modal session.
|
||||||
|
|
||||||
|
if (!NSApp.modalWindow)
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
// If the current modal window (top level modal session) is not a Qt window we
|
||||||
|
// have no way of knowing if this window is transient child of the modal window.
|
||||||
|
if (![NSApp.modalWindow conformsToProtocol:@protocol(QNSWindowProtocol)])
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
if (auto *modalWindow = static_cast<QCocoaNSWindow *>(NSApp.modalWindow).platformWindow) {
|
||||||
|
if (modalWindow->window()->isAncestorOf(m_platformWindow->window(), QWindow::IncludeTransients))
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#if !defined(QT_APPLE_NO_PRIVATE_APIS)
|
||||||
|
// When creating an NSWindow the worksWhenModal function is queried,
|
||||||
|
// and the resulting state is used to set the corresponding window tag,
|
||||||
|
// which the window server uses to determine whether or not the window
|
||||||
|
// should be allowed to activate via mouse clicks in the title-bar.
|
||||||
|
// Unfortunately, prior to macOS 10.15, this window tag was never
|
||||||
|
// updated after the initial assignment in [NSWindow _commonAwake],
|
||||||
|
// which meant that windows that dynamically change their worksWhenModal
|
||||||
|
// state will behave as if they were never allowed to work when modal.
|
||||||
|
// We work around this by manually updating the window tag when needed.
|
||||||
|
|
||||||
|
typedef uint32_t CGSConnectionID;
|
||||||
|
typedef uint32_t CGSWindowID;
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
CGSConnectionID CGSMainConnectionID() __attribute__((weak_import));
|
||||||
|
OSStatus CGSSetWindowTags(const CGSConnectionID, const CGSWindowID, int *, int) __attribute__((weak_import));
|
||||||
|
OSStatus CGSClearWindowTags(const CGSConnectionID, const CGSWindowID, int *, int) __attribute__((weak_import));
|
||||||
|
}
|
||||||
|
|
||||||
|
@interface QNSPanel (WorksWhenModalWindowTagWorkaround) @end
|
||||||
|
@implementation QNSPanel (WorksWhenModalWindowTagWorkaround)
|
||||||
|
- (void)setWorksWhenModal:(BOOL)worksWhenModal
|
||||||
|
{
|
||||||
|
[super setWorksWhenModal:worksWhenModal];
|
||||||
|
|
||||||
|
if (QOperatingSystemVersion::current() < QOperatingSystemVersion::MacOSCatalina) {
|
||||||
|
if (CGSMainConnectionID && CGSSetWindowTags && CGSClearWindowTags) {
|
||||||
|
static int kWorksWhenModalWindowTag = 0x40;
|
||||||
|
auto *function = worksWhenModal ? CGSSetWindowTags : CGSClearWindowTags;
|
||||||
|
function(CGSMainConnectionID(), self.windowNumber, &kWorksWhenModalWindowTag, 64);
|
||||||
|
} else {
|
||||||
|
qWarning() << "Missing APIs for window tag handling, can not update worksWhenModal state";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
#endif // QT_APPLE_NO_PRIVATE_APIS
|
||||||
|
|
||||||
#else // QNSWINDOW_PROTOCOL_IMPLMENTATION
|
#else // QNSWINDOW_PROTOCOL_IMPLMENTATION
|
||||||
|
|
||||||
// The following content is mixed in to the QNSWindow and QNSPanel classes via includes
|
// The following content is mixed in to the QNSWindow and QNSPanel classes via includes
|
||||||
@ -237,17 +308,6 @@ static bool isMouseEvent(NSEvent *ev)
|
|||||||
return canBecomeMain;
|
return canBecomeMain;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)worksWhenModal
|
|
||||||
{
|
|
||||||
if (m_platformWindow && [self isKindOfClass:[QNSPanel class]]) {
|
|
||||||
Qt::WindowType type = m_platformWindow->window()->type();
|
|
||||||
if (type == Qt::Popup || type == Qt::Dialog || type == Qt::Tool)
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
return [super worksWhenModal];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)isOpaque
|
- (BOOL)isOpaque
|
||||||
{
|
{
|
||||||
return m_platformWindow ? m_platformWindow->isOpaque() : [super isOpaque];
|
return m_platformWindow ? m_platformWindow->isOpaque() : [super isOpaque];
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include "qiosapplicationdelegate.h"
|
#include "qiosapplicationdelegate.h"
|
||||||
#include "qiosviewcontroller.h"
|
#include "qiosviewcontroller.h"
|
||||||
#include "quiview.h"
|
#include "quiview.h"
|
||||||
|
#include "qiostheme.h"
|
||||||
|
|
||||||
#include <QtCore/private/qcore_mac_p.h>
|
#include <QtCore/private/qcore_mac_p.h>
|
||||||
|
|
||||||
@ -208,6 +209,18 @@ static QIOSScreen* qtPlatformScreenFor(UIScreen *uiScreen)
|
|||||||
[super sendEvent:event];
|
[super sendEvent:event];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
|
||||||
|
{
|
||||||
|
[super traitCollectionDidChange:previousTraitCollection];
|
||||||
|
|
||||||
|
if (self.screen == UIScreen.mainScreen) {
|
||||||
|
if (previousTraitCollection.userInterfaceStyle != self.traitCollection.userInterfaceStyle) {
|
||||||
|
QIOSTheme::initializeSystemPalette();
|
||||||
|
QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>(nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
@ -416,6 +416,17 @@
|
|||||||
|
|
||||||
if (unknownAction)
|
if (unknownAction)
|
||||||
return [super canPerformAction:action withSender:sender];
|
return [super canPerformAction:action withSender:sender];
|
||||||
|
|
||||||
|
QObject *focusObject = QGuiApplication::focusObject();
|
||||||
|
if (focusObject && focusObject->property("qt_im_readonly").toBool()) {
|
||||||
|
// exceptional menu items for read-only views: do include Copy, do not include Paste etc.
|
||||||
|
if (action == @selector(cut:)
|
||||||
|
|| action == @selector(paste:)
|
||||||
|
|| action == @selector(delete:))
|
||||||
|
return NO;
|
||||||
|
if (action == @selector(copy:))
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
return (hasSelection && isEditAction) || (!hasSelection && isSelectAction);
|
return (hasSelection && isEditAction) || (!hasSelection && isSelectAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,9 +65,12 @@ public:
|
|||||||
|
|
||||||
static const char *name;
|
static const char *name;
|
||||||
|
|
||||||
|
static void initializeSystemPalette();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mutable QHash<QPlatformTheme::Font, QFont *> m_fonts;
|
mutable QHash<QPlatformTheme::Font, QFont *> m_fonts;
|
||||||
QPalette m_systemPalette;
|
|
||||||
|
static QPalette s_systemPalette;
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include <QtCore/private/qcore_mac_p.h>
|
#include <QtCore/private/qcore_mac_p.h>
|
||||||
|
|
||||||
#include <QtGui/QFont>
|
#include <QtGui/QFont>
|
||||||
|
#include <QtGui/private/qcoregraphics_p.h>
|
||||||
|
|
||||||
#include <QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h>
|
#include <QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h>
|
||||||
#include <QtGui/private/qguiapplication_p.h>
|
#include <QtGui/private/qguiapplication_p.h>
|
||||||
@ -63,10 +64,8 @@ QT_BEGIN_NAMESPACE
|
|||||||
const char *QIOSTheme::name = "ios";
|
const char *QIOSTheme::name = "ios";
|
||||||
|
|
||||||
QIOSTheme::QIOSTheme()
|
QIOSTheme::QIOSTheme()
|
||||||
: m_systemPalette(*QPlatformTheme::palette(QPlatformTheme::SystemPalette))
|
|
||||||
{
|
{
|
||||||
m_systemPalette.setBrush(QPalette::Highlight, QColor(204, 221, 237));
|
initializeSystemPalette();
|
||||||
m_systemPalette.setBrush(QPalette::HighlightedText, Qt::black);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QIOSTheme::~QIOSTheme()
|
QIOSTheme::~QIOSTheme()
|
||||||
@ -74,10 +73,41 @@ QIOSTheme::~QIOSTheme()
|
|||||||
qDeleteAll(m_fonts);
|
qDeleteAll(m_fonts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QPalette QIOSTheme::s_systemPalette;
|
||||||
|
|
||||||
|
void QIOSTheme::initializeSystemPalette()
|
||||||
|
{
|
||||||
|
Q_DECL_IMPORT QPalette qt_fusionPalette(void);
|
||||||
|
s_systemPalette = qt_fusionPalette();
|
||||||
|
|
||||||
|
if (@available(ios 13.0, *)) {
|
||||||
|
s_systemPalette.setBrush(QPalette::Window, qt_mac_toQBrush(UIColor.systemGroupedBackgroundColor.CGColor));
|
||||||
|
s_systemPalette.setBrush(QPalette::Active, QPalette::WindowText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||||
|
|
||||||
|
s_systemPalette.setBrush(QPalette::Base, qt_mac_toQBrush(UIColor.secondarySystemGroupedBackgroundColor.CGColor));
|
||||||
|
s_systemPalette.setBrush(QPalette::Active, QPalette::Text, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||||
|
|
||||||
|
s_systemPalette.setBrush(QPalette::Button, qt_mac_toQBrush(UIColor.secondarySystemBackgroundColor.CGColor));
|
||||||
|
s_systemPalette.setBrush(QPalette::Active, QPalette::ButtonText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||||
|
|
||||||
|
s_systemPalette.setBrush(QPalette::Active, QPalette::BrightText, qt_mac_toQBrush(UIColor.lightTextColor.CGColor));
|
||||||
|
s_systemPalette.setBrush(QPalette::Active, QPalette::PlaceholderText, qt_mac_toQBrush(UIColor.placeholderTextColor.CGColor));
|
||||||
|
|
||||||
|
s_systemPalette.setBrush(QPalette::Active, QPalette::Link, qt_mac_toQBrush(UIColor.linkColor.CGColor));
|
||||||
|
s_systemPalette.setBrush(QPalette::Active, QPalette::LinkVisited, qt_mac_toQBrush(UIColor.linkColor.CGColor));
|
||||||
|
|
||||||
|
s_systemPalette.setBrush(QPalette::Highlight, QColor(11, 70, 150, 60));
|
||||||
|
s_systemPalette.setBrush(QPalette::HighlightedText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||||
|
} else {
|
||||||
|
s_systemPalette.setBrush(QPalette::Highlight, QColor(204, 221, 237));
|
||||||
|
s_systemPalette.setBrush(QPalette::HighlightedText, Qt::black);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const QPalette *QIOSTheme::palette(QPlatformTheme::Palette type) const
|
const QPalette *QIOSTheme::palette(QPlatformTheme::Palette type) const
|
||||||
{
|
{
|
||||||
if (type == QPlatformTheme::SystemPalette)
|
if (type == QPlatformTheme::SystemPalette)
|
||||||
return &m_systemPalette;
|
return &s_systemPalette;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3964,13 +3964,19 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
|||||||
// which makes no sense on tabs.
|
// which makes no sense on tabs.
|
||||||
NSPopUpArrowPosition oldPosition = NSPopUpArrowAtCenter;
|
NSPopUpArrowPosition oldPosition = NSPopUpArrowAtCenter;
|
||||||
NSPopUpButtonCell *pbCell = nil;
|
NSPopUpButtonCell *pbCell = nil;
|
||||||
if (isPopupButton) {
|
auto rAdjusted = r;
|
||||||
|
if (isPopupButton && tp == QStyleOptionTab::OnlyOneTab) {
|
||||||
pbCell = static_cast<NSPopUpButtonCell *>(pb.cell);
|
pbCell = static_cast<NSPopUpButtonCell *>(pb.cell);
|
||||||
oldPosition = pbCell.arrowPosition;
|
oldPosition = pbCell.arrowPosition;
|
||||||
pbCell.arrowPosition = NSPopUpNoArrow;
|
pbCell.arrowPosition = NSPopUpNoArrow;
|
||||||
|
if (pb.state == NSOffState) {
|
||||||
|
// NSPopUpButton in this state is smaller.
|
||||||
|
rAdjusted.origin.x -= 3;
|
||||||
|
rAdjusted.size.width += 6;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[pb.cell drawBezelWithFrame:r inView:pb.superview];
|
[pb.cell drawBezelWithFrame:rAdjusted inView:pb.superview];
|
||||||
|
|
||||||
if (pbCell) // Restore, we may reuse it for a ComboBox.
|
if (pbCell) // Restore, we may reuse it for a ComboBox.
|
||||||
pbCell.arrowPosition = oldPosition;
|
pbCell.arrowPosition = oldPosition;
|
||||||
|
@ -84,7 +84,7 @@ class TestQString : public QObject
|
|||||||
void wrapInFunction()
|
void wrapInFunction()
|
||||||
{
|
{
|
||||||
//! [1]
|
//! [1]
|
||||||
QVERIFY2(qIsNaN(0.0 / 0.0), "Ill-defined division produced unambiguous result.");
|
QVERIFY2(QFileInfo("file.txt").exists(), "file.txt does not exist.");
|
||||||
//! [1]
|
//! [1]
|
||||||
|
|
||||||
//! [2]
|
//! [2]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Copyright (C) 2016 Intel Corporation.
|
** Copyright (C) 2016 Intel Corporation.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
@ -2541,16 +2541,21 @@ bool QTest::compare_helper(bool success, const char *failureMsg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static bool floatingCompare(const T &t1, const T &t2)
|
static bool floatingCompare(const T &actual, const T &expected)
|
||||||
{
|
{
|
||||||
switch (qFpClassify(t1))
|
switch (qFpClassify(expected))
|
||||||
{
|
{
|
||||||
case FP_INFINITE:
|
case FP_INFINITE:
|
||||||
return (t1 < 0) == (t2 < 0) && qFpClassify(t2) == FP_INFINITE;
|
return (expected < 0) == (actual < 0) && qFpClassify(actual) == FP_INFINITE;
|
||||||
case FP_NAN:
|
case FP_NAN:
|
||||||
return qFpClassify(t2) == FP_NAN;
|
return qFpClassify(actual) == FP_NAN;
|
||||||
default:
|
default:
|
||||||
return qFuzzyCompare(t1, t2);
|
if (!qFuzzyIsNull(expected))
|
||||||
|
return qFuzzyCompare(actual, expected);
|
||||||
|
Q_FALLTHROUGH();
|
||||||
|
case FP_SUBNORMAL: // subnormal is always fuzzily null
|
||||||
|
case FP_ZERO:
|
||||||
|
return qFuzzyIsNull(actual);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the documentation of the Qt Toolkit.
|
** This file is part of the documentation of the Qt Toolkit.
|
||||||
@ -109,19 +109,18 @@
|
|||||||
continues. If not, a failure is recorded in the test log and the test
|
continues. If not, a failure is recorded in the test log and the test
|
||||||
function returns without attempting any later checks.
|
function returns without attempting any later checks.
|
||||||
|
|
||||||
Always respect QCOMPARE() parameter semantics. The first parameter passed to it
|
Always respect QCOMPARE() parameter semantics. The first parameter passed to
|
||||||
should always be the actual value produced by the code-under-test, while the
|
it should always be the actual value produced by the code-under-test, while
|
||||||
second parameter should always be the expected value. When the values don't
|
the second parameter should always be the expected value. When the values
|
||||||
match, QCOMPARE() prints them with the labels \e Actual and \e Expected.
|
don't match, QCOMPARE() prints them with the labels \e Actual and \e
|
||||||
If the parameter order is swapped, debugging a failing test can be confusing.
|
Expected. If the parameter order is swapped, debugging a failing test can be
|
||||||
|
confusing and tests expecting zero may fail due to rounding errors.
|
||||||
|
|
||||||
When comparing floating-point types (\c float, \c double, and \c qfloat16),
|
When comparing floating-point types (\c float, \c double, and \c qfloat16),
|
||||||
\l qFuzzyCompare() is used for finite values. Infinities match if they have
|
\l qFuzzyCompare() is used for finite values. If qFuzzyIsNull() is true for
|
||||||
|
both values, they are also considered equal. Infinities match if they have
|
||||||
the same sign, and any NaN as actual value matches with any NaN as expected
|
the same sign, and any NaN as actual value matches with any NaN as expected
|
||||||
value (even though NaN != NaN, even when they're identical). This means that
|
value (even though NaN != NaN, even when they're identical).
|
||||||
expecting 0 can fail when the actual value may be affected by rounding errors.
|
|
||||||
One solution to this is to offset both actual and expected values by adding
|
|
||||||
some suitable constant (such as 1).
|
|
||||||
|
|
||||||
QCOMPARE() tries to output the contents of the values if the comparison fails,
|
QCOMPARE() tries to output the contents of the values if the comparison fails,
|
||||||
so it is visible from the test log why the comparison failed.
|
so it is visible from the test log why the comparison failed.
|
||||||
|
@ -1378,6 +1378,9 @@ QStringList qt_make_filter_list(const QString &filter)
|
|||||||
|
|
||||||
\snippet code/src_gui_dialogs_qfiledialog.cpp 6
|
\snippet code/src_gui_dialogs_qfiledialog.cpp 6
|
||||||
|
|
||||||
|
\note This is not supported on Android's native file dialog. Use
|
||||||
|
\l{setMimeTypeFilters()} instead.
|
||||||
|
|
||||||
\sa setMimeTypeFilters(), setNameFilters()
|
\sa setMimeTypeFilters(), setNameFilters()
|
||||||
*/
|
*/
|
||||||
void QFileDialog::setNameFilter(const QString &filter)
|
void QFileDialog::setNameFilter(const QString &filter)
|
||||||
@ -1428,6 +1431,9 @@ QStringList qt_strip_filters(const QStringList &filters)
|
|||||||
filters for each file type. For example, JPEG images have three possible
|
filters for each file type. For example, JPEG images have three possible
|
||||||
extensions; if your application can open such files, selecting the
|
extensions; if your application can open such files, selecting the
|
||||||
\c image/jpeg mime type as a filter will allow you to open all of them.
|
\c image/jpeg mime type as a filter will allow you to open all of them.
|
||||||
|
|
||||||
|
\note This is not supported on Android's native file dialog. Use
|
||||||
|
\l{setMimeTypeFilters()} instead.
|
||||||
*/
|
*/
|
||||||
void QFileDialog::setNameFilters(const QStringList &filters)
|
void QFileDialog::setNameFilters(const QStringList &filters)
|
||||||
{
|
{
|
||||||
|
@ -50,11 +50,10 @@
|
|||||||
|
|
||||||
#include <QtWidgets>
|
#include <QtWidgets>
|
||||||
|
|
||||||
#include "customviewstyle.h"
|
#include "./customstyle/customstyle.h"
|
||||||
|
|
||||||
|
void CustomStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
|
||||||
|
QPainter *painter, const QWidget *widget) const
|
||||||
void CustomViewStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
|
|
||||||
{
|
{
|
||||||
|
|
||||||
//![0]
|
//![0]
|
||||||
|
@ -49,11 +49,10 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
|
#include <QFileDialog>
|
||||||
|
|
||||||
int main(int argv, char **args)
|
int loadFileDialog()
|
||||||
{
|
{
|
||||||
QApplication app(argv, args);
|
|
||||||
|
|
||||||
//![0]
|
//![0]
|
||||||
QList<QUrl> urls;
|
QList<QUrl> urls;
|
||||||
urls << QUrl::fromLocalFile("/Users/foo/Code/qt5")
|
urls << QUrl::fromLocalFile("/Users/foo/Code/qt5")
|
||||||
@ -66,6 +65,5 @@ int main(int argv, char **args)
|
|||||||
// ...
|
// ...
|
||||||
}
|
}
|
||||||
//![0]
|
//![0]
|
||||||
|
return 1;
|
||||||
return app.exec();
|
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,9 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
|
#include <QGraphicsScene>
|
||||||
|
#include <QGraphicsEllipseItem>
|
||||||
|
#include <QStyleOptionGraphicsItem>
|
||||||
|
|
||||||
class CustomScene : public QGraphicsScene
|
class CustomScene : public QGraphicsScene
|
||||||
{
|
{
|
||||||
@ -70,21 +73,9 @@ void CustomScene::drawItems(QPainter *painter, int numItems,
|
|||||||
for (int i = 0; i < numItems; ++i) {
|
for (int i = 0; i < numItems; ++i) {
|
||||||
// Draw the item
|
// Draw the item
|
||||||
painter->save();
|
painter->save();
|
||||||
painter->setMatrix(items[i]->sceneMatrix(), true);
|
painter->setTransform(items[i]->sceneTransform(), true);
|
||||||
items[i]->paint(painter, &options[i], widget);
|
items[i]->paint(painter, &options[i], widget);
|
||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! [0]
|
//! [0]
|
||||||
|
|
||||||
int main(int argv, char **args)
|
|
||||||
{
|
|
||||||
QApplication app(argv, args);
|
|
||||||
|
|
||||||
CustomScene scene;
|
|
||||||
QGraphicsView view(&scene);
|
|
||||||
|
|
||||||
view.show();
|
|
||||||
|
|
||||||
return app.exec();
|
|
||||||
}
|
|
||||||
|
@ -47,53 +47,70 @@
|
|||||||
** $QT_END_LICENSE$
|
** $QT_END_LICENSE$
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
#include <QGraphicsView>
|
||||||
|
#include <QOpenGLWidget>
|
||||||
|
#include <QPrinter>
|
||||||
|
#include <QPrintDialog>
|
||||||
|
#include <QStandardItem>
|
||||||
|
#include <QMimeData>
|
||||||
|
#include <QDrag>
|
||||||
|
#include <QGraphicsSceneMouseEvent>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
//! [0]
|
//! [0]
|
||||||
QGraphicsScene scene;
|
QGraphicsScene scene;
|
||||||
QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
|
QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
|
||||||
|
|
||||||
QGraphicsItem *item = scene.itemAt(50, 50);
|
QGraphicsItem *item = scene.itemAt(50, 50, QTransform());
|
||||||
// item == rect
|
|
||||||
//! [0]
|
//! [0]
|
||||||
|
Q_UNUSED(rect);
|
||||||
|
Q_UNUSED(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
void myPopulateScene(QGraphicsScene *)
|
||||||
|
{
|
||||||
|
// Intentionally left empty
|
||||||
|
}
|
||||||
|
|
||||||
|
void snippetThatUsesMyPopulateScene()
|
||||||
|
{
|
||||||
//! [1]
|
//! [1]
|
||||||
QGraphicsScene scene;
|
QGraphicsScene scene;
|
||||||
myPopulateScene(&scene);
|
myPopulateScene(&scene);
|
||||||
|
|
||||||
QGraphicsView view(&scene);
|
QGraphicsView view(&scene);
|
||||||
view.show();
|
view.show();
|
||||||
//! [1]
|
//! [1]
|
||||||
|
}
|
||||||
|
|
||||||
|
class CustomItem : public QStandardItem
|
||||||
//! [2]
|
|
||||||
class View : public QGraphicsView
|
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
public:
|
||||||
...
|
using QStandardItem::QStandardItem;
|
||||||
public slots:
|
|
||||||
void zoomIn() { scale(1.2, 1.2); }
|
int type() const override { return UserType; }
|
||||||
void zoomOut() { scale(1 / 1.2, 1 / 1.2); }
|
void mousePressEvent(QGraphicsSceneMouseEvent *event);
|
||||||
void rotateLeft() { rotate(-10); }
|
QStandardItem *clone() const override { return new CustomItem; }
|
||||||
void rotateRight() { rotate(10); }
|
|
||||||
...
|
|
||||||
};
|
};
|
||||||
//! [2]
|
|
||||||
|
|
||||||
|
|
||||||
|
void printScene()
|
||||||
|
{
|
||||||
//! [3]
|
//! [3]
|
||||||
QGraphicsScene scene;
|
QGraphicsScene scene;
|
||||||
|
QPrinter printer;
|
||||||
scene.addRect(QRectF(0, 0, 100, 200), QPen(Qt::black), QBrush(Qt::green));
|
scene.addRect(QRectF(0, 0, 100, 200), QPen(Qt::black), QBrush(Qt::green));
|
||||||
|
|
||||||
QPrinter printer;
|
|
||||||
if (QPrintDialog(&printer).exec() == QDialog::Accepted) {
|
if (QPrintDialog(&printer).exec() == QDialog::Accepted) {
|
||||||
QPainter painter(&printer);
|
QPainter painter(&printer);
|
||||||
painter.setRenderHint(QPainter::Antialiasing);
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
scene.render(&painter);
|
scene.render(&painter);
|
||||||
}
|
}
|
||||||
//! [3]
|
//! [3]
|
||||||
|
}
|
||||||
|
|
||||||
|
void pixmapScene()
|
||||||
|
{
|
||||||
//! [4]
|
//! [4]
|
||||||
QGraphicsScene scene;
|
QGraphicsScene scene;
|
||||||
scene.addRect(QRectF(0, 0, 100, 200), QPen(Qt::black), QBrush(Qt::green));
|
scene.addRect(QRectF(0, 0, 100, 200), QPen(Qt::black), QBrush(Qt::green));
|
||||||
@ -106,21 +123,21 @@ painter.end();
|
|||||||
|
|
||||||
pixmap.save("scene.png");
|
pixmap.save("scene.png");
|
||||||
//! [4]
|
//! [4]
|
||||||
|
}
|
||||||
|
|
||||||
//! [5]
|
//! [5]
|
||||||
void CustomItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
void CustomItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
|
||||||
{
|
{
|
||||||
QMimeData *data = new QMimeData;
|
QMimeData *data = new QMimeData;
|
||||||
data->setColor(Qt::green);
|
|
||||||
|
|
||||||
QDrag *drag = new QDrag(event->widget());
|
QDrag *drag = new QDrag(event->widget());
|
||||||
drag->setMimeData(data);
|
drag->setMimeData(data);
|
||||||
drag->start();
|
drag->exec();
|
||||||
}
|
}
|
||||||
//! [5]
|
//! [5]
|
||||||
|
|
||||||
|
void viewScene()
|
||||||
|
{
|
||||||
|
QGraphicsScene scene;
|
||||||
//! [6]
|
//! [6]
|
||||||
QGraphicsView view(&scene);
|
QGraphicsView view(&scene);
|
||||||
QOpenGLWidget *gl = new QOpenGLWidget();
|
QOpenGLWidget *gl = new QOpenGLWidget();
|
||||||
@ -129,3 +146,4 @@ format.setSamples(4);
|
|||||||
gl->setFormat(format);
|
gl->setFormat(format);
|
||||||
view.setViewport(gl);
|
view.setViewport(gl);
|
||||||
//! [6]
|
//! [6]
|
||||||
|
}
|
||||||
|
63
src/widgets/doc/snippets/graphicsview_snippet.cpp
Normal file
63
src/widgets/doc/snippets/graphicsview_snippet.cpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of the documentation of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:BSD$
|
||||||
|
** Commercial License Usage
|
||||||
|
** Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
** accordance with the commercial license agreement provided with the
|
||||||
|
** Software or, alternatively, in accordance with the terms contained in
|
||||||
|
** a written agreement between you and The Qt Company. For licensing terms
|
||||||
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||||
|
** information use the contact form at https://www.qt.io/contact-us.
|
||||||
|
**
|
||||||
|
** BSD License Usage
|
||||||
|
** Alternatively, you may use this file under the terms of the BSD license
|
||||||
|
** as follows:
|
||||||
|
**
|
||||||
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||||
|
** contributors may be used to endorse or promote products derived
|
||||||
|
** from this software without specific prior written permission.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
//! [2]
|
||||||
|
class View : public QGraphicsView
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
...
|
||||||
|
public slots:
|
||||||
|
void zoomIn() { scale(1.2, 1.2); }
|
||||||
|
void zoomOut() { scale(1 / 1.2, 1 / 1.2); }
|
||||||
|
void rotateLeft() { rotate(-10); }
|
||||||
|
void rotateRight() { rotate(10); }
|
||||||
|
...
|
||||||
|
};
|
||||||
|
//! [2]
|
@ -85,6 +85,7 @@ void addingSubWindowsExample()
|
|||||||
mdiArea.show();
|
mdiArea.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
int main(int argv, char **args)
|
int main(int argv, char **args)
|
||||||
{
|
{
|
||||||
QApplication app(argv, args);
|
QApplication app(argv, args);
|
||||||
@ -103,5 +104,5 @@ int main(int argv, char **args)
|
|||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <QtGui>
|
#include <QtWidgets>
|
||||||
|
|
||||||
class MyScrollArea : public QAbstractScrollArea
|
class MyScrollArea : public QAbstractScrollArea
|
||||||
{
|
{
|
||||||
@ -97,8 +97,10 @@ void MyScrollArea::updateWidgetPosition()
|
|||||||
//! [0]
|
//! [0]
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyScrollArea::scrollContentsBy(int /*dx*/, int /*dy*/)
|
void MyScrollArea::scrollContentsBy(int dx, int dy)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(dx);
|
||||||
|
Q_UNUSED(dy);
|
||||||
updateWidgetPosition();
|
updateWidgetPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,21 +120,6 @@ void MyScrollArea::updateArea()
|
|||||||
|
|
||||||
void MyScrollArea::resizeEvent(QResizeEvent *event)
|
void MyScrollArea::resizeEvent(QResizeEvent *event)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(event);
|
||||||
updateArea();
|
updateArea();
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argv, char **args)
|
|
||||||
{
|
|
||||||
QApplication app(argv, args);
|
|
||||||
|
|
||||||
QPixmap pixmap("mypixmap.png");
|
|
||||||
QLabel label;
|
|
||||||
label.setPixmap(pixmap);
|
|
||||||
MyScrollArea area(&label);
|
|
||||||
area.resize(300, 300);
|
|
||||||
area.show();
|
|
||||||
|
|
||||||
area.setWidget(&label);
|
|
||||||
|
|
||||||
return app.exec();
|
|
||||||
}
|
|
||||||
|
16
src/widgets/doc/snippets/snippets.pro
Normal file
16
src/widgets/doc/snippets/snippets.pro
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
requires(qtHaveModule(widgets))
|
||||||
|
requires(qtHaveModule(printsupport))
|
||||||
|
|
||||||
|
TEMPLATE = app
|
||||||
|
|
||||||
|
TARGET = widgets_snippets
|
||||||
|
|
||||||
|
QT += widgets printsupport
|
||||||
|
|
||||||
|
SOURCES += customviewstyle.cpp \
|
||||||
|
filedialogurls.cpp \
|
||||||
|
graphicssceneadditemsnippet.cpp \
|
||||||
|
graphicsview.cpp \
|
||||||
|
mdiareasnippets.cpp \
|
||||||
|
myscrollarea.cpp
|
||||||
|
|
@ -327,7 +327,7 @@
|
|||||||
Here is an example of how to implement zoom and rotate slots in a
|
Here is an example of how to implement zoom and rotate slots in a
|
||||||
subclass of QGraphicsView:
|
subclass of QGraphicsView:
|
||||||
|
|
||||||
\snippet graphicsview.cpp 2
|
\snippet graphicsview_snippet.cpp 2
|
||||||
|
|
||||||
The slots could be connected to \l{QToolButton}{QToolButtons} with
|
The slots could be connected to \l{QToolButton}{QToolButtons} with
|
||||||
\l{QAbstractButton::autoRepeat}{autoRepeat} enabled.
|
\l{QAbstractButton::autoRepeat}{autoRepeat} enabled.
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include "qmenu.h"
|
#include "qmenu.h"
|
||||||
|
|
||||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
||||||
|
#include <QtWidgets/private/qwidgetwindow_p.h>
|
||||||
|
|
||||||
#include "qactiongroup.h"
|
#include "qactiongroup.h"
|
||||||
#include "qdebug.h"
|
#include "qdebug.h"
|
||||||
@ -2353,15 +2354,23 @@ void QMenuPrivate::popup(const QPoint &p, QAction *atAction, PositionFunction po
|
|||||||
// Use d->popupScreen to remember, because initialScreenIndex will be reset after the first showing.
|
// Use d->popupScreen to remember, because initialScreenIndex will be reset after the first showing.
|
||||||
// However if eventLoop exists, then exec() already did this by calling createWinId(); so leave it alone. (QTBUG-76162)
|
// However if eventLoop exists, then exec() already did this by calling createWinId(); so leave it alone. (QTBUG-76162)
|
||||||
if (!eventLoop) {
|
if (!eventLoop) {
|
||||||
|
bool screenSet = false;
|
||||||
const int screenIndex = topData()->initialScreenIndex;
|
const int screenIndex = topData()->initialScreenIndex;
|
||||||
if (screenIndex >= 0)
|
if (screenIndex >= 0)
|
||||||
popupScreen = screenIndex;
|
popupScreen = screenIndex;
|
||||||
if (auto s = QGuiApplication::screens().value(popupScreen)) {
|
if (auto s = QGuiApplication::screens().value(popupScreen)) {
|
||||||
if (setScreen(s))
|
if (setScreen(s))
|
||||||
itemsDirty = true;
|
itemsDirty = true;
|
||||||
} else if (setScreenForPoint(p)) {
|
screenSet = true;
|
||||||
|
} else if (QMenu *parentMenu = qobject_cast<QMenu *>(parent)) {
|
||||||
|
// a submenu is always opened from an open parent menu,
|
||||||
|
// so show it on the same screen where the parent is. (QTBUG-76162)
|
||||||
|
if (setScreen(QMenuPrivate::get(parentMenu)->windowHandle()->screen()))
|
||||||
itemsDirty = true;
|
itemsDirty = true;
|
||||||
|
screenSet = true;
|
||||||
}
|
}
|
||||||
|
if (!screenSet && setScreenForPoint(p))
|
||||||
|
itemsDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool contextMenu = isContextMenu();
|
const bool contextMenu = isContextMenu();
|
||||||
|
@ -987,9 +987,16 @@ void tst_QtJson::testObjectIteration()
|
|||||||
QCOMPARE(object, object2);
|
QCOMPARE(object, object2);
|
||||||
|
|
||||||
QJsonObject::iterator it = object2.find(QString::number(5));
|
QJsonObject::iterator it = object2.find(QString::number(5));
|
||||||
|
QJsonValue val = *it;
|
||||||
object2.erase(it);
|
object2.erase(it);
|
||||||
QCOMPARE(object.size(), 10);
|
QCOMPARE(object.size(), 10);
|
||||||
QCOMPARE(object2.size(), 9);
|
QCOMPARE(object2.size(), 9);
|
||||||
|
|
||||||
|
for (QJsonObject::const_iterator it = object2.constBegin(); it != object2.constEnd(); ++it) {
|
||||||
|
QJsonValue value = it.value();
|
||||||
|
QVERIFY(it.value() != val);
|
||||||
|
QCOMPARE((double)it.key().toInt(), value.toDouble());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -106,6 +106,8 @@ private slots:
|
|||||||
void fromCborStreamReaderIODevice();
|
void fromCborStreamReaderIODevice();
|
||||||
void validation_data();
|
void validation_data();
|
||||||
void validation();
|
void validation();
|
||||||
|
void extendedTypeValidation_data();
|
||||||
|
void extendedTypeValidation();
|
||||||
void hugeDeviceValidation_data();
|
void hugeDeviceValidation_data();
|
||||||
void hugeDeviceValidation();
|
void hugeDeviceValidation();
|
||||||
void recursionLimit_data();
|
void recursionLimit_data();
|
||||||
@ -118,6 +120,84 @@ private slots:
|
|||||||
void streamVariantSerialization();
|
void streamVariantSerialization();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace SimpleEncodeToCbor {
|
||||||
|
inline size_t lengthOf(int)
|
||||||
|
{
|
||||||
|
return 1; // encode as byte
|
||||||
|
}
|
||||||
|
|
||||||
|
template <unsigned N> inline size_t lengthOf(const char (&)[N])
|
||||||
|
{
|
||||||
|
return N - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline size_t lengthOf(const char *str)
|
||||||
|
{
|
||||||
|
return strlen(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> inline size_t lengthOf(T)
|
||||||
|
{
|
||||||
|
return sizeof(T);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void encodeOneAt(char *ptr, int v, size_t)
|
||||||
|
{
|
||||||
|
// encode as byte
|
||||||
|
*ptr = char(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void encodeOneAt(char *ptr, const char *v, size_t size)
|
||||||
|
{
|
||||||
|
memcpy(ptr, v, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
static typename std::enable_if<std::is_unsigned<T>::value>::type
|
||||||
|
encodeOneAt(char *ptr, T v, size_t)
|
||||||
|
{
|
||||||
|
qToBigEndian(v, ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
static typename std::enable_if<std::is_floating_point<T>::value ||
|
||||||
|
std::is_same<T, qfloat16>::value>::type
|
||||||
|
encodeOneAt(char *ptr, T v, size_t)
|
||||||
|
{
|
||||||
|
typename QIntegerForSizeof<T>::Unsigned u;
|
||||||
|
memcpy(&u, &v, sizeof(u));
|
||||||
|
qToBigEndian(u, ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *encodeAt(char *ptr)
|
||||||
|
{
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Arg0, typename... Args>
|
||||||
|
static char *encodeAt(char *ptr, Arg0 a0, Args... a)
|
||||||
|
{
|
||||||
|
encodeOneAt(ptr, a0, lengthOf(a0));
|
||||||
|
return encodeAt(ptr + lengthOf(a0), a...);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace SimpleEncodetoCbor
|
||||||
|
|
||||||
|
template <typename... Args>
|
||||||
|
static QByteArray encode(Args... a)
|
||||||
|
{
|
||||||
|
// this would be much easier with C++17 fold expressions...
|
||||||
|
using namespace SimpleEncodeToCbor;
|
||||||
|
using namespace std;
|
||||||
|
size_t lengths[] = { lengthOf(a)... };
|
||||||
|
size_t total = accumulate(begin(lengths), end(lengths), size_t(0), plus<size_t>{});
|
||||||
|
QByteArray result(QByteArray::size_type(total), Qt::Uninitialized);
|
||||||
|
char *ptr = result.data();
|
||||||
|
encodeAt(ptr, a...);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
// Get the validation data from TinyCBOR (see src/3rdparty/tinycbor/tests/parser/data.cpp)
|
// Get the validation data from TinyCBOR (see src/3rdparty/tinycbor/tests/parser/data.cpp)
|
||||||
#include "data.cpp"
|
#include "data.cpp"
|
||||||
|
|
||||||
@ -1714,6 +1794,15 @@ void tst_QCborValue::fromCbor_data()
|
|||||||
|
|
||||||
QTest::newRow("DateTime:NoMilli") << QCborValue(QDateTime::fromSecsSinceEpoch(1515565477, Qt::UTC))
|
QTest::newRow("DateTime:NoMilli") << QCborValue(QDateTime::fromSecsSinceEpoch(1515565477, Qt::UTC))
|
||||||
<< raw("\xc0\x74" "2018-01-10T06:24:37Z");
|
<< raw("\xc0\x74" "2018-01-10T06:24:37Z");
|
||||||
|
// date-only is only permitted local time
|
||||||
|
QTest::newRow("DateTime:NoTime:Local") << QCborValue(QDateTime(QDate(2020, 4, 15), QTime(0, 0), Qt::LocalTime))
|
||||||
|
<< raw("\xc0\x6a" "2020-04-15");
|
||||||
|
QTest::newRow("DateTime:24:00:00") << QCborValue(QDateTime(QDate(2020, 4, 16), QTime(0, 0), Qt::UTC))
|
||||||
|
<< raw("\xc0\x74" "2020-04-15T24:00:00Z");
|
||||||
|
QTest::newRow("DateTime:+00:00") << QCborValue(QDateTime::fromMSecsSinceEpoch(1515565477125, Qt::UTC))
|
||||||
|
<< raw("\xc0\x78\x1d" "2018-01-10T06:24:37.125+00:00");
|
||||||
|
QTest::newRow("DateTime:+01:00") << QCborValue(QDateTime::fromMSecsSinceEpoch(1515565477125, Qt::OffsetFromUTC, 60*60))
|
||||||
|
<< raw("\xc0\x78\x1d" "2018-01-10T07:24:37.125+01:00");
|
||||||
QTest::newRow("UnixTime_t:Integer") << QCborValue(QDateTime::fromSecsSinceEpoch(1515565477, Qt::UTC))
|
QTest::newRow("UnixTime_t:Integer") << QCborValue(QDateTime::fromSecsSinceEpoch(1515565477, Qt::UTC))
|
||||||
<< raw("\xc1\x1a\x5a\x55\xb1\xa5");
|
<< raw("\xc1\x1a\x5a\x55\xb1\xa5");
|
||||||
QTest::newRow("UnixTime_t:Double") << QCborValue(QDateTime::fromMSecsSinceEpoch(1515565477125, Qt::UTC))
|
QTest::newRow("UnixTime_t:Double") << QCborValue(QDateTime::fromMSecsSinceEpoch(1515565477125, Qt::UTC))
|
||||||
@ -1882,6 +1971,117 @@ void tst_QCborValue::validation()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QCborValue::extendedTypeValidation_data()
|
||||||
|
{
|
||||||
|
QTest::addColumn<QByteArray>("data");
|
||||||
|
QTest::addColumn<QCborValue>("expected");
|
||||||
|
|
||||||
|
// QDateTime currently stores time in milliseconds, so make sure
|
||||||
|
// we don't overflow
|
||||||
|
{
|
||||||
|
quint64 limit = std::numeric_limits<quint64>::max() / 1000;
|
||||||
|
QTest::newRow("UnixTime_t:integer-overflow-positive")
|
||||||
|
<< encode(0xc1, 0x1b, limit + 1)
|
||||||
|
<< QCborValue(QCborKnownTags::UnixTime_t, qint64(limit) + 1);
|
||||||
|
QTest::newRow("UnixTime_t:integer-overflow-negative")
|
||||||
|
<< encode(0xc1, 0x3b, limit)
|
||||||
|
<< QCborValue(QCborKnownTags::UnixTime_t, -qint64(limit) - 1);
|
||||||
|
|
||||||
|
double fplimit = std::numeric_limits<qint64>::min() / (-1000.); // 2^63 ms
|
||||||
|
QTest::newRow("UnixTime_t:fp-overflow-positive")
|
||||||
|
<< encode(0xc1, 0xfb, fplimit)
|
||||||
|
<< QCborValue(QCborKnownTags::UnixTime_t, fplimit);
|
||||||
|
QTest::newRow("UnixTime_t:fp-overflow-negative")
|
||||||
|
<< encode(0xc1, 0xfb, -fplimit)
|
||||||
|
<< QCborValue(QCborKnownTags::UnixTime_t, -fplimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
// But in fact, QCborValue stores date/times as their ISO textual
|
||||||
|
// representation, which means it can't represent dates before year 1 or
|
||||||
|
// after year 9999.
|
||||||
|
{
|
||||||
|
QDateTime dt(QDate(-1, 1, 1), QTime(0, 0), Qt::UTC);
|
||||||
|
QTest::newRow("UnixTime_t:negative-year")
|
||||||
|
<< encode(0xc1, 0x3b, quint64(-dt.toSecsSinceEpoch()) - 1)
|
||||||
|
<< QCborValue(QCborKnownTags::UnixTime_t, dt.toSecsSinceEpoch());
|
||||||
|
|
||||||
|
dt.setDate(QDate(10000, 1, 1));
|
||||||
|
QTest::newRow("UnixTime_t:year10k")
|
||||||
|
<< encode(0xc1, 0x1b, quint64(dt.toSecsSinceEpoch()))
|
||||||
|
<< QCborValue(QCborKnownTags::UnixTime_t, dt.toSecsSinceEpoch());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Invalid ISO date/time strings
|
||||||
|
{
|
||||||
|
auto add = [](const char *tag, const char *str) {
|
||||||
|
QByteArray raw;
|
||||||
|
if (strlen(str) < 0x18)
|
||||||
|
raw = encode(0xc0, 0x60 + int(strlen(str)), str);
|
||||||
|
else
|
||||||
|
raw = encode(0xc0, 0x78, quint8(strlen(str)), str);
|
||||||
|
QTest::addRow("DateTime:%s", tag)
|
||||||
|
<< raw << QCborValue(QCborKnownTags::DateTimeString, QString(str));
|
||||||
|
};
|
||||||
|
// tst_QDateTime::fromStringDateFormat has more tests
|
||||||
|
add("junk", "jjj");
|
||||||
|
add("zoned-date-only", "2020-04-15Z");
|
||||||
|
add("month-13", "2020-13-01T00:00:00Z");
|
||||||
|
add("negative-month", "2020--1-01T00:00:00Z");
|
||||||
|
add("jan-32", "2020-01-32T00:00:00Z");
|
||||||
|
add("apr-31", "2020-04-31T00:00:00Z");
|
||||||
|
add("feb-30", "2020-02-30T00:00:00Z");
|
||||||
|
add("feb-29-nonleap", "2021-02-29T00:00:00Z");
|
||||||
|
add("negative-day", "2020-01--1T00:00:00Z");
|
||||||
|
add("bad-separator", "2020-04-15j13:30:59Z");
|
||||||
|
add("hour-25", "2020-04-15T25:00:00Z");
|
||||||
|
add("negative-hour", "2020-04-15T-1:00:00Z");
|
||||||
|
add("minute-60", "2020-04-15T23:60:00Z");
|
||||||
|
add("negative-minute", "2020-04-15T23:-1:00Z");
|
||||||
|
add("second-60", "2020-04-15T23:59:60Z"); // not a leap second
|
||||||
|
add("negative-second", "2020-04-15T23:59:-1Z");
|
||||||
|
add("negative-milli", "2020-04-15T23.59:59.-1Z");
|
||||||
|
|
||||||
|
// walking null
|
||||||
|
char dt[] = "2020-04-15T17:33:32.125Z";
|
||||||
|
quint8 len = strlen(dt);
|
||||||
|
for (int i = 0; i < int(len); ++i) {
|
||||||
|
char c = '\0';
|
||||||
|
qSwap(c, dt[i]);
|
||||||
|
QTest::addRow("DateTime:Null-at-%d", i)
|
||||||
|
<< encode(0xc0, 0x78, len) + QByteArray(dt, len)
|
||||||
|
<< QCborValue(QCborKnownTags::DateTimeString, QLatin1String(dt, len));
|
||||||
|
qSwap(c, dt[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Improperly-encoded URLs
|
||||||
|
{
|
||||||
|
const char badurl[] = "%zz";
|
||||||
|
QTest::newRow("Url:Invalid")
|
||||||
|
<< encode(0xd8, int(QCborKnownTags::Url), 0x60 + int(strlen(badurl)), badurl)
|
||||||
|
<< QCborValue(QCborKnownTags::Url, QLatin1String(badurl));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void tst_QCborValue::extendedTypeValidation()
|
||||||
|
{
|
||||||
|
QFETCH(QByteArray, data);
|
||||||
|
QFETCH(QCborValue, expected);
|
||||||
|
|
||||||
|
QCborParserError error;
|
||||||
|
QCborValue decoded = QCborValue::fromCbor(data, &error);
|
||||||
|
QVERIFY2(error.error == QCborError(), qPrintable(error.errorString()));
|
||||||
|
QCOMPARE(error.offset, data.size());
|
||||||
|
QCOMPARE(decoded, expected);
|
||||||
|
|
||||||
|
QByteArray encoded = decoded.toCbor();
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
|
||||||
|
// behavior change, see qdatetime.cpp:fromIsoTimeString
|
||||||
|
QEXPECT_FAIL("DateTime:Null-at-19", "QDateTime parsing fixed, but only in 6.0", Abort);
|
||||||
|
#endif
|
||||||
|
QCOMPARE(encoded, data);
|
||||||
|
}
|
||||||
|
|
||||||
void tst_QCborValue::hugeDeviceValidation_data()
|
void tst_QCborValue::hugeDeviceValidation_data()
|
||||||
{
|
{
|
||||||
addValidationHugeDevice(MaxByteArraySize + 1, MaxStringSize + 1);
|
addValidationHugeDevice(MaxByteArraySize + 1, MaxStringSize + 1);
|
||||||
|
@ -97,6 +97,13 @@ int main(int argc, char *argv[])
|
|||||||
parser.process(app);
|
parser.process(app);
|
||||||
const QString size = parser.value("size");
|
const QString size = parser.value("size");
|
||||||
printf("Resizing %s to %s and saving to %s\n", qPrintable(parser.value("load")), qPrintable(size), qPrintable(parser.value("o")));
|
printf("Resizing %s to %s and saving to %s\n", qPrintable(parser.value("load")), qPrintable(size), qPrintable(parser.value("o")));
|
||||||
|
} else if (command == "long") {
|
||||||
|
// A very long option (QTBUG-79926)
|
||||||
|
QCommandLineOption longOption(QStringList{QStringLiteral("looooooooooooong-option"), QStringLiteral("looooong-opt-alias")});
|
||||||
|
longOption.setDescription(QStringLiteral("Short description"));
|
||||||
|
longOption.setValueName(QStringLiteral("looooooooooooong-value-name"));
|
||||||
|
parser.addOption(longOption);
|
||||||
|
parser.process(app);
|
||||||
} else {
|
} else {
|
||||||
// Call process again, to handle unknown options this time.
|
// Call process again, to handle unknown options this time.
|
||||||
parser.process(app);
|
parser.process(app);
|
||||||
|
@ -78,6 +78,7 @@ private slots:
|
|||||||
void testUnknownOption();
|
void testUnknownOption();
|
||||||
void testHelpAll_data();
|
void testHelpAll_data();
|
||||||
void testHelpAll();
|
void testHelpAll();
|
||||||
|
void testVeryLongOptionNames();
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *empty_argv[] = { 0 };
|
static char *empty_argv[] = { 0 };
|
||||||
@ -737,6 +738,38 @@ void tst_QCommandLineParser::testHelpAll()
|
|||||||
#endif // QT_CONFIG(process)
|
#endif // QT_CONFIG(process)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QCommandLineParser::testVeryLongOptionNames()
|
||||||
|
{
|
||||||
|
#if !QT_CONFIG(process)
|
||||||
|
QSKIP("This test requires QProcess support");
|
||||||
|
#else
|
||||||
|
#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED)
|
||||||
|
QSKIP("Deploying executable applications to file system on Android not supported.");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QCoreApplication app(empty_argc, empty_argv);
|
||||||
|
QProcess process;
|
||||||
|
process.start("testhelper/qcommandlineparser_test_helper", QStringList() << "0" << "long" << "--help");
|
||||||
|
QVERIFY(process.waitForFinished(5000));
|
||||||
|
QCOMPARE(process.exitStatus(), QProcess::NormalExit);
|
||||||
|
QString output = process.readAll();
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
output.replace(QStringLiteral("\r\n"), QStringLiteral("\n"));
|
||||||
|
#endif
|
||||||
|
const QStringList lines = output.split('\n');
|
||||||
|
const int last = lines.count() - 1;
|
||||||
|
// Let's not compare everything, just the final parts.
|
||||||
|
QCOMPARE(lines.at(last - 7), " cdefghijklmnopqrstuvwxyz");
|
||||||
|
QCOMPARE(lines.at(last - 6), " --looooooooooooong-option, --looooong-opt-alias <l Short description");
|
||||||
|
QCOMPARE(lines.at(last - 5), " ooooooooooooong-value-name>");
|
||||||
|
QCOMPARE(lines.at(last - 4), "");
|
||||||
|
QCOMPARE(lines.at(last - 3), "Arguments:");
|
||||||
|
QCOMPARE(lines.at(last - 2), " parsingMode The parsing mode to test.");
|
||||||
|
QCOMPARE(lines.at(last - 1), " command The command to execute.");
|
||||||
|
|
||||||
|
#endif // QT_CONFIG(process)
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_APPLESS_MAIN(tst_QCommandLineParser)
|
QTEST_APPLESS_MAIN(tst_QCommandLineParser)
|
||||||
#include "tst_qcommandlineparser.moc"
|
#include "tst_qcommandlineparser.moc"
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
Actual (operandLeft) : 999999999999
|
Actual (operandLeft) : 999999999999
|
||||||
Expected (operandRight): 999999999998" result="fail"/>
|
Expected (operandRight): 999999999998" result="fail"/>
|
||||||
<failure tag="should FAIL 4" message="Compared doubles are not the same (fuzzy compare)
|
<failure tag="should FAIL 4" message="Compared doubles are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.99999999999e-311
|
Actual (operandLeft) : 1e-12
|
||||||
Expected (operandRight): 9.99999999997e-311" result="fail"/>
|
Expected (operandRight): 9.99999999999e-13" result="fail"/>
|
||||||
<failure tag="should FAIL 5" message="Compared doubles are not the same (fuzzy compare)
|
<failure tag="should FAIL 5" message="Compared doubles are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.99999999999e+306
|
Actual (operandLeft) : 9.99999999999e+306
|
||||||
Expected (operandRight): 9.99999999997e+306" result="fail"/>
|
Expected (operandRight): 9.99999999997e+306" result="fail"/>
|
||||||
@ -106,14 +106,14 @@
|
|||||||
Actual (operandLeft) : 1
|
Actual (operandLeft) : 1
|
||||||
Expected (operandRight): 3" result="fail"/>
|
Expected (operandRight): 3" result="fail"/>
|
||||||
<failure tag="should FAIL 2" message="Compared floats are not the same (fuzzy compare)
|
<failure tag="should FAIL 2" message="Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 1e-07
|
Actual (operandLeft) : 1e-05
|
||||||
Expected (operandRight): 3e-07" result="fail"/>
|
Expected (operandRight): 3e-05" result="fail"/>
|
||||||
<failure tag="should FAIL 3" message="Compared floats are not the same (fuzzy compare)
|
<failure tag="should FAIL 3" message="Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 99999
|
Actual (operandLeft) : 99999
|
||||||
Expected (operandRight): 99998" result="fail"/>
|
Expected (operandRight): 99998" result="fail"/>
|
||||||
<failure tag="should FAIL 4" message="Compared floats are not the same (fuzzy compare)
|
<failure tag="should FAIL 4" message="Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.9999e-40
|
Actual (operandLeft) : 1.00001e-05
|
||||||
Expected (operandRight): 9.99971e-40" result="fail"/>
|
Expected (operandRight): 9.9999e-06" result="fail"/>
|
||||||
<failure tag="should FAIL 5" message="Compared floats are not the same (fuzzy compare)
|
<failure tag="should FAIL 5" message="Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.9999e+37
|
Actual (operandLeft) : 9.9999e+37
|
||||||
Expected (operandRight): 9.9997e+37" result="fail"/>
|
Expected (operandRight): 9.9997e+37" result="fail"/>
|
||||||
@ -201,14 +201,14 @@
|
|||||||
Actual (operandLeft) : 1
|
Actual (operandLeft) : 1
|
||||||
Expected (operandRight): 3" result="fail"/>
|
Expected (operandRight): 3" result="fail"/>
|
||||||
<failure tag="should FAIL 2" message="Compared qfloat16s are not the same (fuzzy compare)
|
<failure tag="should FAIL 2" message="Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 0.0001
|
Actual (operandLeft) : 0.000999
|
||||||
Expected (operandRight): 0.0003" result="fail"/>
|
Expected (operandRight): 0.003" result="fail"/>
|
||||||
<failure tag="should FAIL 3" message="Compared qfloat16s are not the same (fuzzy compare)
|
<failure tag="should FAIL 3" message="Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 98
|
Actual (operandLeft) : 98
|
||||||
Expected (operandRight): 99" result="fail"/>
|
Expected (operandRight): 99" result="fail"/>
|
||||||
<failure tag="should FAIL 4" message="Compared qfloat16s are not the same (fuzzy compare)
|
<failure tag="should FAIL 4" message="Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 5.93e-05
|
Actual (operandLeft) : 0.00101
|
||||||
Expected (operandRight): 5.87e-05" result="fail"/>
|
Expected (operandRight): 0.00099" result="fail"/>
|
||||||
<failure tag="should FAIL 5" message="Compared qfloat16s are not the same (fuzzy compare)
|
<failure tag="should FAIL 5" message="Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 5.94e+04
|
Actual (operandLeft) : 5.94e+04
|
||||||
Expected (operandRight): 5.88e+04" result="fail"/>
|
Expected (operandRight): 5.88e+04" result="fail"/>
|
||||||
@ -295,9 +295,9 @@
|
|||||||
<failure tag="1e0" message="Compared floats are not the same (fuzzy compare)
|
<failure tag="1e0" message="Compared floats are not the same (fuzzy compare)
|
||||||
Actual (t1): 1
|
Actual (t1): 1
|
||||||
Expected (t3): 3" result="fail"/>
|
Expected (t3): 3" result="fail"/>
|
||||||
<failure tag="1e-7" message="Compared floats are not the same (fuzzy compare)
|
<failure tag="1e-5" message="Compared floats are not the same (fuzzy compare)
|
||||||
Actual (t1): 1e-07
|
Actual (t1): 1e-05
|
||||||
Expected (t3): 3e-07" result="fail"/>
|
Expected (t3): 3e-05" result="fail"/>
|
||||||
<failure tag="1e+7" message="Compared floats are not the same (fuzzy compare)
|
<failure tag="1e+7" message="Compared floats are not the same (fuzzy compare)
|
||||||
Actual (t1): 1e+07
|
Actual (t1): 1e+07
|
||||||
Expected (t3): 3e+07" result="fail"/>
|
Expected (t3): 3e+07" result="fail"/>
|
||||||
|
@ -38,8 +38,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
||||||
<Description><![CDATA[Compared doubles are not the same (fuzzy compare)
|
<Description><![CDATA[Compared doubles are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.99999999999e-311
|
Actual (operandLeft) : 1e-12
|
||||||
Expected (operandRight): 9.99999999997e-311]]></Description>
|
Expected (operandRight): 9.99999999999e-13]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
||||||
@ -230,8 +230,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
||||||
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 1e-07
|
Actual (operandLeft) : 1e-05
|
||||||
Expected (operandRight): 3e-07]]></Description>
|
Expected (operandRight): 3e-05]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
||||||
@ -248,8 +248,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
||||||
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.9999e-40
|
Actual (operandLeft) : 1.00001e-05
|
||||||
Expected (operandRight): 9.99971e-40]]></Description>
|
Expected (operandRight): 9.9999e-06]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
||||||
@ -440,8 +440,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
||||||
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 0.0001
|
Actual (operandLeft) : 0.000999
|
||||||
Expected (operandRight): 0.0003]]></Description>
|
Expected (operandRight): 0.003]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
||||||
@ -458,8 +458,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
||||||
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 5.93e-05
|
Actual (operandLeft) : 0.00101
|
||||||
Expected (operandRight): 5.87e-05]]></Description>
|
Expected (operandRight): 0.00099]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
||||||
@ -645,10 +645,10 @@
|
|||||||
Expected (t3): 3]]></Description>
|
Expected (t3): 3]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[1e-7]]></DataTag>
|
<DataTag><![CDATA[1e-5]]></DataTag>
|
||||||
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
||||||
Actual (t1): 1e-07
|
Actual (t1): 1e-05
|
||||||
Expected (t3): 3e-07]]></Description>
|
Expected (t3): 3e-05]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[1e+7]]></DataTag>
|
<DataTag><![CDATA[1e+7]]></DataTag>
|
||||||
|
@ -44,10 +44,10 @@ not ok 8 - doubleComparisons(should FAIL 4)
|
|||||||
---
|
---
|
||||||
type: QCOMPARE
|
type: QCOMPARE
|
||||||
message: Compared doubles are not the same (fuzzy compare)
|
message: Compared doubles are not the same (fuzzy compare)
|
||||||
wanted: 9.99999999997e-311 (operandRight)
|
wanted: 9.99999999999e-13 (operandRight)
|
||||||
found: 9.99999999999e-311 (operandLeft)
|
found: 1e-12 (operandLeft)
|
||||||
expected: 9.99999999997e-311 (operandRight)
|
expected: 9.99999999999e-13 (operandRight)
|
||||||
actual: 9.99999999999e-311 (operandLeft)
|
actual: 1e-12 (operandLeft)
|
||||||
at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
|
at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 103
|
line: 103
|
||||||
@ -388,22 +388,22 @@ not ok 40 - floatComparisons(should FAIL 1)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: 3 (operandRight)
|
expected: 3 (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
ok 41 - floatComparisons(should PASS 1)
|
ok 41 - floatComparisons(should PASS 1)
|
||||||
not ok 42 - floatComparisons(should FAIL 2)
|
not ok 42 - floatComparisons(should FAIL 2)
|
||||||
---
|
---
|
||||||
type: QCOMPARE
|
type: QCOMPARE
|
||||||
message: Compared floats are not the same (fuzzy compare)
|
message: Compared floats are not the same (fuzzy compare)
|
||||||
wanted: 3e-07 (operandRight)
|
wanted: 3e-05 (operandRight)
|
||||||
found: 1e-07 (operandLeft)
|
found: 1e-05 (operandLeft)
|
||||||
expected: 3e-07 (operandRight)
|
expected: 3e-05 (operandRight)
|
||||||
actual: 1e-07 (operandLeft)
|
actual: 1e-05 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
ok 43 - floatComparisons(should PASS 2)
|
ok 43 - floatComparisons(should PASS 2)
|
||||||
not ok 44 - floatComparisons(should FAIL 3)
|
not ok 44 - floatComparisons(should FAIL 3)
|
||||||
@ -414,22 +414,22 @@ not ok 44 - floatComparisons(should FAIL 3)
|
|||||||
found: 99999 (operandLeft)
|
found: 99999 (operandLeft)
|
||||||
expected: 99998 (operandRight)
|
expected: 99998 (operandRight)
|
||||||
actual: 99999 (operandLeft)
|
actual: 99999 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
ok 45 - floatComparisons(should PASS 3)
|
ok 45 - floatComparisons(should PASS 3)
|
||||||
not ok 46 - floatComparisons(should FAIL 4)
|
not ok 46 - floatComparisons(should FAIL 4)
|
||||||
---
|
---
|
||||||
type: QCOMPARE
|
type: QCOMPARE
|
||||||
message: Compared floats are not the same (fuzzy compare)
|
message: Compared floats are not the same (fuzzy compare)
|
||||||
wanted: 9.99971e-40 (operandRight)
|
wanted: 9.9999e-06 (operandRight)
|
||||||
found: 9.9999e-40 (operandLeft)
|
found: 1.00001e-05 (operandLeft)
|
||||||
expected: 9.99971e-40 (operandRight)
|
expected: 9.9999e-06 (operandRight)
|
||||||
actual: 9.9999e-40 (operandLeft)
|
actual: 1.00001e-05 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
ok 47 - floatComparisons(should PASS 4)
|
ok 47 - floatComparisons(should PASS 4)
|
||||||
not ok 48 - floatComparisons(should FAIL 5)
|
not ok 48 - floatComparisons(should FAIL 5)
|
||||||
@ -440,9 +440,9 @@ not ok 48 - floatComparisons(should FAIL 5)
|
|||||||
found: 9.9999e+37 (operandLeft)
|
found: 9.9999e+37 (operandLeft)
|
||||||
expected: 9.9997e+37 (operandRight)
|
expected: 9.9997e+37 (operandRight)
|
||||||
actual: 9.9999e+37 (operandLeft)
|
actual: 9.9999e+37 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
ok 49 - floatComparisons(should PASS: NaN == NaN)
|
ok 49 - floatComparisons(should PASS: NaN == NaN)
|
||||||
not ok 50 - floatComparisons(should FAIL: NaN != 0)
|
not ok 50 - floatComparisons(should FAIL: NaN != 0)
|
||||||
@ -453,9 +453,9 @@ not ok 50 - floatComparisons(should FAIL: NaN != 0)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: 0 (operandRight)
|
expected: 0 (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 51 - floatComparisons(should FAIL: 0 != NaN)
|
not ok 51 - floatComparisons(should FAIL: 0 != NaN)
|
||||||
---
|
---
|
||||||
@ -465,9 +465,9 @@ not ok 51 - floatComparisons(should FAIL: 0 != NaN)
|
|||||||
found: 0 (operandLeft)
|
found: 0 (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: 0 (operandLeft)
|
actual: 0 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 52 - floatComparisons(should FAIL: NaN != 1)
|
not ok 52 - floatComparisons(should FAIL: NaN != 1)
|
||||||
---
|
---
|
||||||
@ -477,9 +477,9 @@ not ok 52 - floatComparisons(should FAIL: NaN != 1)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: 1 (operandRight)
|
expected: 1 (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 53 - floatComparisons(should FAIL: 1 != NaN)
|
not ok 53 - floatComparisons(should FAIL: 1 != NaN)
|
||||||
---
|
---
|
||||||
@ -489,9 +489,9 @@ not ok 53 - floatComparisons(should FAIL: 1 != NaN)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
ok 54 - floatComparisons(should PASS: inf == inf)
|
ok 54 - floatComparisons(should PASS: inf == inf)
|
||||||
ok 55 - floatComparisons(should PASS: -inf == -inf)
|
ok 55 - floatComparisons(should PASS: -inf == -inf)
|
||||||
@ -503,9 +503,9 @@ not ok 56 - floatComparisons(should FAIL: inf != -inf)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 57 - floatComparisons(should FAIL: -inf != inf)
|
not ok 57 - floatComparisons(should FAIL: -inf != inf)
|
||||||
---
|
---
|
||||||
@ -515,9 +515,9 @@ not ok 57 - floatComparisons(should FAIL: -inf != inf)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 58 - floatComparisons(should FAIL: inf != nan)
|
not ok 58 - floatComparisons(should FAIL: inf != nan)
|
||||||
---
|
---
|
||||||
@ -527,9 +527,9 @@ not ok 58 - floatComparisons(should FAIL: inf != nan)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 59 - floatComparisons(should FAIL: nan != inf)
|
not ok 59 - floatComparisons(should FAIL: nan != inf)
|
||||||
---
|
---
|
||||||
@ -539,9 +539,9 @@ not ok 59 - floatComparisons(should FAIL: nan != inf)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 60 - floatComparisons(should FAIL: -inf != nan)
|
not ok 60 - floatComparisons(should FAIL: -inf != nan)
|
||||||
---
|
---
|
||||||
@ -551,9 +551,9 @@ not ok 60 - floatComparisons(should FAIL: -inf != nan)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 61 - floatComparisons(should FAIL: nan != -inf)
|
not ok 61 - floatComparisons(should FAIL: nan != -inf)
|
||||||
---
|
---
|
||||||
@ -563,9 +563,9 @@ not ok 61 - floatComparisons(should FAIL: nan != -inf)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 62 - floatComparisons(should FAIL: inf != 0)
|
not ok 62 - floatComparisons(should FAIL: inf != 0)
|
||||||
---
|
---
|
||||||
@ -575,9 +575,9 @@ not ok 62 - floatComparisons(should FAIL: inf != 0)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: 0 (operandRight)
|
expected: 0 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 63 - floatComparisons(should FAIL: 0 != inf)
|
not ok 63 - floatComparisons(should FAIL: 0 != inf)
|
||||||
---
|
---
|
||||||
@ -587,9 +587,9 @@ not ok 63 - floatComparisons(should FAIL: 0 != inf)
|
|||||||
found: 0 (operandLeft)
|
found: 0 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: 0 (operandLeft)
|
actual: 0 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 64 - floatComparisons(should FAIL: -inf != 0)
|
not ok 64 - floatComparisons(should FAIL: -inf != 0)
|
||||||
---
|
---
|
||||||
@ -599,9 +599,9 @@ not ok 64 - floatComparisons(should FAIL: -inf != 0)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: 0 (operandRight)
|
expected: 0 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 65 - floatComparisons(should FAIL: 0 != -inf)
|
not ok 65 - floatComparisons(should FAIL: 0 != -inf)
|
||||||
---
|
---
|
||||||
@ -611,9 +611,9 @@ not ok 65 - floatComparisons(should FAIL: 0 != -inf)
|
|||||||
found: 0 (operandLeft)
|
found: 0 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: 0 (operandLeft)
|
actual: 0 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 66 - floatComparisons(should FAIL: inf != 1)
|
not ok 66 - floatComparisons(should FAIL: inf != 1)
|
||||||
---
|
---
|
||||||
@ -623,9 +623,9 @@ not ok 66 - floatComparisons(should FAIL: inf != 1)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: 1 (operandRight)
|
expected: 1 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 67 - floatComparisons(should FAIL: 1 != inf)
|
not ok 67 - floatComparisons(should FAIL: 1 != inf)
|
||||||
---
|
---
|
||||||
@ -635,9 +635,9 @@ not ok 67 - floatComparisons(should FAIL: 1 != inf)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 68 - floatComparisons(should FAIL: -inf != 1)
|
not ok 68 - floatComparisons(should FAIL: -inf != 1)
|
||||||
---
|
---
|
||||||
@ -647,9 +647,9 @@ not ok 68 - floatComparisons(should FAIL: -inf != 1)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: 1 (operandRight)
|
expected: 1 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 69 - floatComparisons(should FAIL: 1 != -inf)
|
not ok 69 - floatComparisons(should FAIL: 1 != -inf)
|
||||||
---
|
---
|
||||||
@ -659,9 +659,9 @@ not ok 69 - floatComparisons(should FAIL: 1 != -inf)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 70 - floatComparisons(should FAIL: inf != max)
|
not ok 70 - floatComparisons(should FAIL: inf != max)
|
||||||
---
|
---
|
||||||
@ -671,9 +671,9 @@ not ok 70 - floatComparisons(should FAIL: inf != max)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: 3.40282e+38 (operandRight)
|
expected: 3.40282e+38 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 71 - floatComparisons(should FAIL: inf != -max)
|
not ok 71 - floatComparisons(should FAIL: inf != -max)
|
||||||
---
|
---
|
||||||
@ -683,9 +683,9 @@ not ok 71 - floatComparisons(should FAIL: inf != -max)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: -3.40282e+38 (operandRight)
|
expected: -3.40282e+38 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 72 - floatComparisons(should FAIL: max != inf)
|
not ok 72 - floatComparisons(should FAIL: max != inf)
|
||||||
---
|
---
|
||||||
@ -695,9 +695,9 @@ not ok 72 - floatComparisons(should FAIL: max != inf)
|
|||||||
found: 3.40282e+38 (operandLeft)
|
found: 3.40282e+38 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: 3.40282e+38 (operandLeft)
|
actual: 3.40282e+38 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 73 - floatComparisons(should FAIL: -max != inf)
|
not ok 73 - floatComparisons(should FAIL: -max != inf)
|
||||||
---
|
---
|
||||||
@ -707,9 +707,9 @@ not ok 73 - floatComparisons(should FAIL: -max != inf)
|
|||||||
found: -3.40282e+38 (operandLeft)
|
found: -3.40282e+38 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: -3.40282e+38 (operandLeft)
|
actual: -3.40282e+38 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 74 - floatComparisons(should FAIL: -inf != max)
|
not ok 74 - floatComparisons(should FAIL: -inf != max)
|
||||||
---
|
---
|
||||||
@ -719,9 +719,9 @@ not ok 74 - floatComparisons(should FAIL: -inf != max)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: 3.40282e+38 (operandRight)
|
expected: 3.40282e+38 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 75 - floatComparisons(should FAIL: -inf != -max)
|
not ok 75 - floatComparisons(should FAIL: -inf != -max)
|
||||||
---
|
---
|
||||||
@ -731,9 +731,9 @@ not ok 75 - floatComparisons(should FAIL: -inf != -max)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: -3.40282e+38 (operandRight)
|
expected: -3.40282e+38 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 76 - floatComparisons(should FAIL: max != -inf)
|
not ok 76 - floatComparisons(should FAIL: max != -inf)
|
||||||
---
|
---
|
||||||
@ -743,9 +743,9 @@ not ok 76 - floatComparisons(should FAIL: max != -inf)
|
|||||||
found: 3.40282e+38 (operandLeft)
|
found: 3.40282e+38 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: 3.40282e+38 (operandLeft)
|
actual: 3.40282e+38 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 77 - floatComparisons(should FAIL: -max != -inf)
|
not ok 77 - floatComparisons(should FAIL: -max != -inf)
|
||||||
---
|
---
|
||||||
@ -755,9 +755,9 @@ not ok 77 - floatComparisons(should FAIL: -max != -inf)
|
|||||||
found: -3.40282e+38 (operandLeft)
|
found: -3.40282e+38 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: -3.40282e+38 (operandLeft)
|
actual: -3.40282e+38 (operandLeft)
|
||||||
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:137)
|
at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 137
|
line: 139
|
||||||
...
|
...
|
||||||
not ok 78 - float16Comparisons(should FAIL 1)
|
not ok 78 - float16Comparisons(should FAIL 1)
|
||||||
---
|
---
|
||||||
@ -767,22 +767,22 @@ not ok 78 - float16Comparisons(should FAIL 1)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: 3 (operandRight)
|
expected: 3 (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
ok 79 - float16Comparisons(should PASS 1)
|
ok 79 - float16Comparisons(should PASS 1)
|
||||||
not ok 80 - float16Comparisons(should FAIL 2)
|
not ok 80 - float16Comparisons(should FAIL 2)
|
||||||
---
|
---
|
||||||
type: QCOMPARE
|
type: QCOMPARE
|
||||||
message: Compared qfloat16s are not the same (fuzzy compare)
|
message: Compared qfloat16s are not the same (fuzzy compare)
|
||||||
wanted: 0.0003 (operandRight)
|
wanted: 0.003 (operandRight)
|
||||||
found: 0.0001 (operandLeft)
|
found: 0.000999 (operandLeft)
|
||||||
expected: 0.0003 (operandRight)
|
expected: 0.003 (operandRight)
|
||||||
actual: 0.0001 (operandLeft)
|
actual: 0.000999 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
ok 81 - float16Comparisons(should PASS 2)
|
ok 81 - float16Comparisons(should PASS 2)
|
||||||
not ok 82 - float16Comparisons(should FAIL 3)
|
not ok 82 - float16Comparisons(should FAIL 3)
|
||||||
@ -793,22 +793,22 @@ not ok 82 - float16Comparisons(should FAIL 3)
|
|||||||
found: 98 (operandLeft)
|
found: 98 (operandLeft)
|
||||||
expected: 99 (operandRight)
|
expected: 99 (operandRight)
|
||||||
actual: 98 (operandLeft)
|
actual: 98 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
ok 83 - float16Comparisons(should PASS 3)
|
ok 83 - float16Comparisons(should PASS 3)
|
||||||
not ok 84 - float16Comparisons(should FAIL 4)
|
not ok 84 - float16Comparisons(should FAIL 4)
|
||||||
---
|
---
|
||||||
type: QCOMPARE
|
type: QCOMPARE
|
||||||
message: Compared qfloat16s are not the same (fuzzy compare)
|
message: Compared qfloat16s are not the same (fuzzy compare)
|
||||||
wanted: 5.87e-05 (operandRight)
|
wanted: 0.00099 (operandRight)
|
||||||
found: 5.93e-05 (operandLeft)
|
found: 0.00101 (operandLeft)
|
||||||
expected: 5.87e-05 (operandRight)
|
expected: 0.00099 (operandRight)
|
||||||
actual: 5.93e-05 (operandLeft)
|
actual: 0.00101 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
ok 85 - float16Comparisons(should PASS 4)
|
ok 85 - float16Comparisons(should PASS 4)
|
||||||
not ok 86 - float16Comparisons(should FAIL 5)
|
not ok 86 - float16Comparisons(should FAIL 5)
|
||||||
@ -819,9 +819,9 @@ not ok 86 - float16Comparisons(should FAIL 5)
|
|||||||
found: 5.94e+04 (operandLeft)
|
found: 5.94e+04 (operandLeft)
|
||||||
expected: 5.88e+04 (operandRight)
|
expected: 5.88e+04 (operandRight)
|
||||||
actual: 5.94e+04 (operandLeft)
|
actual: 5.94e+04 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
ok 87 - float16Comparisons(should PASS: NaN == NaN)
|
ok 87 - float16Comparisons(should PASS: NaN == NaN)
|
||||||
not ok 88 - float16Comparisons(should FAIL: NaN != 0)
|
not ok 88 - float16Comparisons(should FAIL: NaN != 0)
|
||||||
@ -832,9 +832,9 @@ not ok 88 - float16Comparisons(should FAIL: NaN != 0)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: 0 (operandRight)
|
expected: 0 (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 89 - float16Comparisons(should FAIL: 0 != NaN)
|
not ok 89 - float16Comparisons(should FAIL: 0 != NaN)
|
||||||
---
|
---
|
||||||
@ -844,9 +844,9 @@ not ok 89 - float16Comparisons(should FAIL: 0 != NaN)
|
|||||||
found: 0 (operandLeft)
|
found: 0 (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: 0 (operandLeft)
|
actual: 0 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 90 - float16Comparisons(should FAIL: NaN != 1)
|
not ok 90 - float16Comparisons(should FAIL: NaN != 1)
|
||||||
---
|
---
|
||||||
@ -856,9 +856,9 @@ not ok 90 - float16Comparisons(should FAIL: NaN != 1)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: 1 (operandRight)
|
expected: 1 (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 91 - float16Comparisons(should FAIL: 1 != NaN)
|
not ok 91 - float16Comparisons(should FAIL: 1 != NaN)
|
||||||
---
|
---
|
||||||
@ -868,9 +868,9 @@ not ok 91 - float16Comparisons(should FAIL: 1 != NaN)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
ok 92 - float16Comparisons(should PASS: inf == inf)
|
ok 92 - float16Comparisons(should PASS: inf == inf)
|
||||||
ok 93 - float16Comparisons(should PASS: -inf == -inf)
|
ok 93 - float16Comparisons(should PASS: -inf == -inf)
|
||||||
@ -882,9 +882,9 @@ not ok 94 - float16Comparisons(should FAIL: inf != -inf)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 95 - float16Comparisons(should FAIL: -inf != inf)
|
not ok 95 - float16Comparisons(should FAIL: -inf != inf)
|
||||||
---
|
---
|
||||||
@ -894,9 +894,9 @@ not ok 95 - float16Comparisons(should FAIL: -inf != inf)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 96 - float16Comparisons(should FAIL: inf != nan)
|
not ok 96 - float16Comparisons(should FAIL: inf != nan)
|
||||||
---
|
---
|
||||||
@ -906,9 +906,9 @@ not ok 96 - float16Comparisons(should FAIL: inf != nan)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 97 - float16Comparisons(should FAIL: nan != inf)
|
not ok 97 - float16Comparisons(should FAIL: nan != inf)
|
||||||
---
|
---
|
||||||
@ -918,9 +918,9 @@ not ok 97 - float16Comparisons(should FAIL: nan != inf)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 98 - float16Comparisons(should FAIL: -inf != nan)
|
not ok 98 - float16Comparisons(should FAIL: -inf != nan)
|
||||||
---
|
---
|
||||||
@ -930,9 +930,9 @@ not ok 98 - float16Comparisons(should FAIL: -inf != nan)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: nan (operandRight)
|
expected: nan (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 99 - float16Comparisons(should FAIL: nan != -inf)
|
not ok 99 - float16Comparisons(should FAIL: nan != -inf)
|
||||||
---
|
---
|
||||||
@ -942,9 +942,9 @@ not ok 99 - float16Comparisons(should FAIL: nan != -inf)
|
|||||||
found: nan (operandLeft)
|
found: nan (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: nan (operandLeft)
|
actual: nan (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 100 - float16Comparisons(should FAIL: inf != 0)
|
not ok 100 - float16Comparisons(should FAIL: inf != 0)
|
||||||
---
|
---
|
||||||
@ -954,9 +954,9 @@ not ok 100 - float16Comparisons(should FAIL: inf != 0)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: 0 (operandRight)
|
expected: 0 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 101 - float16Comparisons(should FAIL: 0 != inf)
|
not ok 101 - float16Comparisons(should FAIL: 0 != inf)
|
||||||
---
|
---
|
||||||
@ -966,9 +966,9 @@ not ok 101 - float16Comparisons(should FAIL: 0 != inf)
|
|||||||
found: 0 (operandLeft)
|
found: 0 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: 0 (operandLeft)
|
actual: 0 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 102 - float16Comparisons(should FAIL: -inf != 0)
|
not ok 102 - float16Comparisons(should FAIL: -inf != 0)
|
||||||
---
|
---
|
||||||
@ -978,9 +978,9 @@ not ok 102 - float16Comparisons(should FAIL: -inf != 0)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: 0 (operandRight)
|
expected: 0 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 103 - float16Comparisons(should FAIL: 0 != -inf)
|
not ok 103 - float16Comparisons(should FAIL: 0 != -inf)
|
||||||
---
|
---
|
||||||
@ -990,9 +990,9 @@ not ok 103 - float16Comparisons(should FAIL: 0 != -inf)
|
|||||||
found: 0 (operandLeft)
|
found: 0 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: 0 (operandLeft)
|
actual: 0 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 104 - float16Comparisons(should FAIL: inf != 1)
|
not ok 104 - float16Comparisons(should FAIL: inf != 1)
|
||||||
---
|
---
|
||||||
@ -1002,9 +1002,9 @@ not ok 104 - float16Comparisons(should FAIL: inf != 1)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: 1 (operandRight)
|
expected: 1 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 105 - float16Comparisons(should FAIL: 1 != inf)
|
not ok 105 - float16Comparisons(should FAIL: 1 != inf)
|
||||||
---
|
---
|
||||||
@ -1014,9 +1014,9 @@ not ok 105 - float16Comparisons(should FAIL: 1 != inf)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 106 - float16Comparisons(should FAIL: -inf != 1)
|
not ok 106 - float16Comparisons(should FAIL: -inf != 1)
|
||||||
---
|
---
|
||||||
@ -1026,9 +1026,9 @@ not ok 106 - float16Comparisons(should FAIL: -inf != 1)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: 1 (operandRight)
|
expected: 1 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 107 - float16Comparisons(should FAIL: 1 != -inf)
|
not ok 107 - float16Comparisons(should FAIL: 1 != -inf)
|
||||||
---
|
---
|
||||||
@ -1038,9 +1038,9 @@ not ok 107 - float16Comparisons(should FAIL: 1 != -inf)
|
|||||||
found: 1 (operandLeft)
|
found: 1 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: 1 (operandLeft)
|
actual: 1 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 108 - float16Comparisons(should FAIL: inf != max)
|
not ok 108 - float16Comparisons(should FAIL: inf != max)
|
||||||
---
|
---
|
||||||
@ -1050,9 +1050,9 @@ not ok 108 - float16Comparisons(should FAIL: inf != max)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: 6.55e+04 (operandRight)
|
expected: 6.55e+04 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 109 - float16Comparisons(should FAIL: inf != -max)
|
not ok 109 - float16Comparisons(should FAIL: inf != -max)
|
||||||
---
|
---
|
||||||
@ -1062,9 +1062,9 @@ not ok 109 - float16Comparisons(should FAIL: inf != -max)
|
|||||||
found: inf (operandLeft)
|
found: inf (operandLeft)
|
||||||
expected: -6.55e+04 (operandRight)
|
expected: -6.55e+04 (operandRight)
|
||||||
actual: inf (operandLeft)
|
actual: inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 110 - float16Comparisons(should FAIL: max != inf)
|
not ok 110 - float16Comparisons(should FAIL: max != inf)
|
||||||
---
|
---
|
||||||
@ -1074,9 +1074,9 @@ not ok 110 - float16Comparisons(should FAIL: max != inf)
|
|||||||
found: 6.55e+04 (operandLeft)
|
found: 6.55e+04 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: 6.55e+04 (operandLeft)
|
actual: 6.55e+04 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 111 - float16Comparisons(should FAIL: -max != inf)
|
not ok 111 - float16Comparisons(should FAIL: -max != inf)
|
||||||
---
|
---
|
||||||
@ -1086,9 +1086,9 @@ not ok 111 - float16Comparisons(should FAIL: -max != inf)
|
|||||||
found: -6.55e+04 (operandLeft)
|
found: -6.55e+04 (operandLeft)
|
||||||
expected: inf (operandRight)
|
expected: inf (operandRight)
|
||||||
actual: -6.55e+04 (operandLeft)
|
actual: -6.55e+04 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 112 - float16Comparisons(should FAIL: -inf != max)
|
not ok 112 - float16Comparisons(should FAIL: -inf != max)
|
||||||
---
|
---
|
||||||
@ -1098,9 +1098,9 @@ not ok 112 - float16Comparisons(should FAIL: -inf != max)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: 6.55e+04 (operandRight)
|
expected: 6.55e+04 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 113 - float16Comparisons(should FAIL: -inf != -max)
|
not ok 113 - float16Comparisons(should FAIL: -inf != -max)
|
||||||
---
|
---
|
||||||
@ -1110,9 +1110,9 @@ not ok 113 - float16Comparisons(should FAIL: -inf != -max)
|
|||||||
found: -inf (operandLeft)
|
found: -inf (operandLeft)
|
||||||
expected: -6.55e+04 (operandRight)
|
expected: -6.55e+04 (operandRight)
|
||||||
actual: -inf (operandLeft)
|
actual: -inf (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 114 - float16Comparisons(should FAIL: max != -inf)
|
not ok 114 - float16Comparisons(should FAIL: max != -inf)
|
||||||
---
|
---
|
||||||
@ -1122,9 +1122,9 @@ not ok 114 - float16Comparisons(should FAIL: max != -inf)
|
|||||||
found: 6.55e+04 (operandLeft)
|
found: 6.55e+04 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: 6.55e+04 (operandLeft)
|
actual: 6.55e+04 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 115 - float16Comparisons(should FAIL: -max != -inf)
|
not ok 115 - float16Comparisons(should FAIL: -max != -inf)
|
||||||
---
|
---
|
||||||
@ -1134,9 +1134,9 @@ not ok 115 - float16Comparisons(should FAIL: -max != -inf)
|
|||||||
found: -6.55e+04 (operandLeft)
|
found: -6.55e+04 (operandLeft)
|
||||||
expected: -inf (operandRight)
|
expected: -inf (operandRight)
|
||||||
actual: -6.55e+04 (operandLeft)
|
actual: -6.55e+04 (operandLeft)
|
||||||
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:171)
|
at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 171
|
line: 174
|
||||||
...
|
...
|
||||||
not ok 116 - compareFloatTests(1e0)
|
not ok 116 - compareFloatTests(1e0)
|
||||||
---
|
---
|
||||||
@ -1146,21 +1146,21 @@ not ok 116 - compareFloatTests(1e0)
|
|||||||
found: 1 (t1)
|
found: 1 (t1)
|
||||||
expected: 3 (t3)
|
expected: 3 (t3)
|
||||||
actual: 1 (t1)
|
actual: 1 (t1)
|
||||||
at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:210)
|
at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:215)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 210
|
line: 215
|
||||||
...
|
...
|
||||||
not ok 117 - compareFloatTests(1e-7)
|
not ok 117 - compareFloatTests(1e-5)
|
||||||
---
|
---
|
||||||
type: QCOMPARE
|
type: QCOMPARE
|
||||||
message: Compared floats are not the same (fuzzy compare)
|
message: Compared floats are not the same (fuzzy compare)
|
||||||
wanted: 3e-07 (t3)
|
wanted: 3e-05 (t3)
|
||||||
found: 1e-07 (t1)
|
found: 1e-05 (t1)
|
||||||
expected: 3e-07 (t3)
|
expected: 3e-05 (t3)
|
||||||
actual: 1e-07 (t1)
|
actual: 1e-05 (t1)
|
||||||
at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:210)
|
at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:215)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 210
|
line: 215
|
||||||
...
|
...
|
||||||
not ok 118 - compareFloatTests(1e+7)
|
not ok 118 - compareFloatTests(1e+7)
|
||||||
---
|
---
|
||||||
@ -1170,9 +1170,9 @@ not ok 118 - compareFloatTests(1e+7)
|
|||||||
found: 1e+07 (t1)
|
found: 1e+07 (t1)
|
||||||
expected: 3e+07 (t3)
|
expected: 3e+07 (t3)
|
||||||
actual: 1e+07 (t1)
|
actual: 1e+07 (t1)
|
||||||
at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:210)
|
at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:215)
|
||||||
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
|
||||||
line: 210
|
line: 215
|
||||||
...
|
...
|
||||||
ok 119 - cleanupTestCase()
|
ok 119 - cleanupTestCase()
|
||||||
1..119
|
1..119
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
##teamcity[testStarted name='doubleComparisons(should PASS 3)' flowId='tst_float']
|
##teamcity[testStarted name='doubleComparisons(should PASS 3)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='doubleComparisons(should PASS 3)' flowId='tst_float']
|
##teamcity[testFinished name='doubleComparisons(should PASS 3)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='doubleComparisons(should FAIL 4)' flowId='tst_float']
|
##teamcity[testStarted name='doubleComparisons(should FAIL 4)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='doubleComparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 9.99999999999e-311|n Expected (operandRight): 9.99999999997e-311' flowId='tst_float']
|
##teamcity[testFailed name='doubleComparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1e-12|n Expected (operandRight): 9.99999999999e-13' flowId='tst_float']
|
||||||
##teamcity[testFinished name='doubleComparisons(should FAIL 4)' flowId='tst_float']
|
##teamcity[testFinished name='doubleComparisons(should FAIL 4)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='doubleComparisons(should PASS 4)' flowId='tst_float']
|
##teamcity[testStarted name='doubleComparisons(should PASS 4)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='doubleComparisons(should PASS 4)' flowId='tst_float']
|
##teamcity[testFinished name='doubleComparisons(should PASS 4)' flowId='tst_float']
|
||||||
@ -114,7 +114,7 @@
|
|||||||
##teamcity[testStarted name='floatComparisons(should PASS 1)' flowId='tst_float']
|
##teamcity[testStarted name='floatComparisons(should PASS 1)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='floatComparisons(should PASS 1)' flowId='tst_float']
|
##teamcity[testFinished name='floatComparisons(should PASS 1)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='floatComparisons(should FAIL 2)' flowId='tst_float']
|
##teamcity[testStarted name='floatComparisons(should FAIL 2)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='floatComparisons(should FAIL 2)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1e-07|n Expected (operandRight): 3e-07' flowId='tst_float']
|
##teamcity[testFailed name='floatComparisons(should FAIL 2)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1e-05|n Expected (operandRight): 3e-05' flowId='tst_float']
|
||||||
##teamcity[testFinished name='floatComparisons(should FAIL 2)' flowId='tst_float']
|
##teamcity[testFinished name='floatComparisons(should FAIL 2)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='floatComparisons(should PASS 2)' flowId='tst_float']
|
##teamcity[testStarted name='floatComparisons(should PASS 2)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='floatComparisons(should PASS 2)' flowId='tst_float']
|
##teamcity[testFinished name='floatComparisons(should PASS 2)' flowId='tst_float']
|
||||||
@ -124,7 +124,7 @@
|
|||||||
##teamcity[testStarted name='floatComparisons(should PASS 3)' flowId='tst_float']
|
##teamcity[testStarted name='floatComparisons(should PASS 3)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='floatComparisons(should PASS 3)' flowId='tst_float']
|
##teamcity[testFinished name='floatComparisons(should PASS 3)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='floatComparisons(should FAIL 4)' flowId='tst_float']
|
##teamcity[testStarted name='floatComparisons(should FAIL 4)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='floatComparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 9.9999e-40|n Expected (operandRight): 9.99971e-40' flowId='tst_float']
|
##teamcity[testFailed name='floatComparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1.00001e-05|n Expected (operandRight): 9.9999e-06' flowId='tst_float']
|
||||||
##teamcity[testFinished name='floatComparisons(should FAIL 4)' flowId='tst_float']
|
##teamcity[testFinished name='floatComparisons(should FAIL 4)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='floatComparisons(should PASS 4)' flowId='tst_float']
|
##teamcity[testStarted name='floatComparisons(should PASS 4)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='floatComparisons(should PASS 4)' flowId='tst_float']
|
##teamcity[testFinished name='floatComparisons(should PASS 4)' flowId='tst_float']
|
||||||
@ -221,7 +221,7 @@
|
|||||||
##teamcity[testStarted name='float16Comparisons(should PASS 1)' flowId='tst_float']
|
##teamcity[testStarted name='float16Comparisons(should PASS 1)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='float16Comparisons(should PASS 1)' flowId='tst_float']
|
##teamcity[testFinished name='float16Comparisons(should PASS 1)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='float16Comparisons(should FAIL 2)' flowId='tst_float']
|
##teamcity[testStarted name='float16Comparisons(should FAIL 2)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='float16Comparisons(should FAIL 2)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0.0001|n Expected (operandRight): 0.0003' flowId='tst_float']
|
##teamcity[testFailed name='float16Comparisons(should FAIL 2)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0.000999|n Expected (operandRight): 0.003' flowId='tst_float']
|
||||||
##teamcity[testFinished name='float16Comparisons(should FAIL 2)' flowId='tst_float']
|
##teamcity[testFinished name='float16Comparisons(should FAIL 2)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='float16Comparisons(should PASS 2)' flowId='tst_float']
|
##teamcity[testStarted name='float16Comparisons(should PASS 2)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='float16Comparisons(should PASS 2)' flowId='tst_float']
|
##teamcity[testFinished name='float16Comparisons(should PASS 2)' flowId='tst_float']
|
||||||
@ -231,7 +231,7 @@
|
|||||||
##teamcity[testStarted name='float16Comparisons(should PASS 3)' flowId='tst_float']
|
##teamcity[testStarted name='float16Comparisons(should PASS 3)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='float16Comparisons(should PASS 3)' flowId='tst_float']
|
##teamcity[testFinished name='float16Comparisons(should PASS 3)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='float16Comparisons(should FAIL 4)' flowId='tst_float']
|
##teamcity[testStarted name='float16Comparisons(should FAIL 4)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='float16Comparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 5.93e-05|n Expected (operandRight): 5.87e-05' flowId='tst_float']
|
##teamcity[testFailed name='float16Comparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0.00101|n Expected (operandRight): 0.00099' flowId='tst_float']
|
||||||
##teamcity[testFinished name='float16Comparisons(should FAIL 4)' flowId='tst_float']
|
##teamcity[testFinished name='float16Comparisons(should FAIL 4)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='float16Comparisons(should PASS 4)' flowId='tst_float']
|
##teamcity[testStarted name='float16Comparisons(should PASS 4)' flowId='tst_float']
|
||||||
##teamcity[testFinished name='float16Comparisons(should PASS 4)' flowId='tst_float']
|
##teamcity[testFinished name='float16Comparisons(should PASS 4)' flowId='tst_float']
|
||||||
@ -325,9 +325,9 @@
|
|||||||
##teamcity[testStarted name='compareFloatTests(1e0)' flowId='tst_float']
|
##teamcity[testStarted name='compareFloatTests(1e0)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='compareFloatTests(1e0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1|n Expected (t3): 3' flowId='tst_float']
|
##teamcity[testFailed name='compareFloatTests(1e0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1|n Expected (t3): 3' flowId='tst_float']
|
||||||
##teamcity[testFinished name='compareFloatTests(1e0)' flowId='tst_float']
|
##teamcity[testFinished name='compareFloatTests(1e0)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='compareFloatTests(1e-7)' flowId='tst_float']
|
##teamcity[testStarted name='compareFloatTests(1e-5)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='compareFloatTests(1e-7)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1e-07|n Expected (t3): 3e-07' flowId='tst_float']
|
##teamcity[testFailed name='compareFloatTests(1e-5)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1e-05|n Expected (t3): 3e-05' flowId='tst_float']
|
||||||
##teamcity[testFinished name='compareFloatTests(1e-7)' flowId='tst_float']
|
##teamcity[testFinished name='compareFloatTests(1e-5)' flowId='tst_float']
|
||||||
##teamcity[testStarted name='compareFloatTests(1e+7)' flowId='tst_float']
|
##teamcity[testStarted name='compareFloatTests(1e+7)' flowId='tst_float']
|
||||||
##teamcity[testFailed name='compareFloatTests(1e+7)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1e+07|n Expected (t3): 3e+07' flowId='tst_float']
|
##teamcity[testFailed name='compareFloatTests(1e+7)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1e+07|n Expected (t3): 3e+07' flowId='tst_float']
|
||||||
##teamcity[testFinished name='compareFloatTests(1e+7)' flowId='tst_float']
|
##teamcity[testFinished name='compareFloatTests(1e+7)' flowId='tst_float']
|
||||||
|
@ -17,8 +17,8 @@ FAIL! : tst_float::doubleComparisons(should FAIL 3) Compared doubles are not th
|
|||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::doubleComparisons(should PASS 3)
|
PASS : tst_float::doubleComparisons(should PASS 3)
|
||||||
FAIL! : tst_float::doubleComparisons(should FAIL 4) Compared doubles are not the same (fuzzy compare)
|
FAIL! : tst_float::doubleComparisons(should FAIL 4) Compared doubles are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.99999999999e-311
|
Actual (operandLeft) : 1e-12
|
||||||
Expected (operandRight): 9.99999999997e-311
|
Expected (operandRight): 9.99999999999e-13
|
||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::doubleComparisons(should PASS 4)
|
PASS : tst_float::doubleComparisons(should PASS 4)
|
||||||
FAIL! : tst_float::doubleComparisons(should FAIL 5) Compared doubles are not the same (fuzzy compare)
|
FAIL! : tst_float::doubleComparisons(should FAIL 5) Compared doubles are not the same (fuzzy compare)
|
||||||
@ -138,8 +138,8 @@ FAIL! : tst_float::floatComparisons(should FAIL 1) Compared floats are not the
|
|||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::floatComparisons(should PASS 1)
|
PASS : tst_float::floatComparisons(should PASS 1)
|
||||||
FAIL! : tst_float::floatComparisons(should FAIL 2) Compared floats are not the same (fuzzy compare)
|
FAIL! : tst_float::floatComparisons(should FAIL 2) Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 1e-07
|
Actual (operandLeft) : 1e-05
|
||||||
Expected (operandRight): 3e-07
|
Expected (operandRight): 3e-05
|
||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::floatComparisons(should PASS 2)
|
PASS : tst_float::floatComparisons(should PASS 2)
|
||||||
FAIL! : tst_float::floatComparisons(should FAIL 3) Compared floats are not the same (fuzzy compare)
|
FAIL! : tst_float::floatComparisons(should FAIL 3) Compared floats are not the same (fuzzy compare)
|
||||||
@ -148,8 +148,8 @@ FAIL! : tst_float::floatComparisons(should FAIL 3) Compared floats are not the
|
|||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::floatComparisons(should PASS 3)
|
PASS : tst_float::floatComparisons(should PASS 3)
|
||||||
FAIL! : tst_float::floatComparisons(should FAIL 4) Compared floats are not the same (fuzzy compare)
|
FAIL! : tst_float::floatComparisons(should FAIL 4) Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.9999e-40
|
Actual (operandLeft) : 1.00001e-05
|
||||||
Expected (operandRight): 9.99971e-40
|
Expected (operandRight): 9.9999e-06
|
||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::floatComparisons(should PASS 4)
|
PASS : tst_float::floatComparisons(should PASS 4)
|
||||||
FAIL! : tst_float::floatComparisons(should FAIL 5) Compared floats are not the same (fuzzy compare)
|
FAIL! : tst_float::floatComparisons(should FAIL 5) Compared floats are not the same (fuzzy compare)
|
||||||
@ -269,8 +269,8 @@ FAIL! : tst_float::float16Comparisons(should FAIL 1) Compared qfloat16s are not
|
|||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::float16Comparisons(should PASS 1)
|
PASS : tst_float::float16Comparisons(should PASS 1)
|
||||||
FAIL! : tst_float::float16Comparisons(should FAIL 2) Compared qfloat16s are not the same (fuzzy compare)
|
FAIL! : tst_float::float16Comparisons(should FAIL 2) Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 0.0001
|
Actual (operandLeft) : 0.000999
|
||||||
Expected (operandRight): 0.0003
|
Expected (operandRight): 0.003
|
||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::float16Comparisons(should PASS 2)
|
PASS : tst_float::float16Comparisons(should PASS 2)
|
||||||
FAIL! : tst_float::float16Comparisons(should FAIL 3) Compared qfloat16s are not the same (fuzzy compare)
|
FAIL! : tst_float::float16Comparisons(should FAIL 3) Compared qfloat16s are not the same (fuzzy compare)
|
||||||
@ -279,8 +279,8 @@ FAIL! : tst_float::float16Comparisons(should FAIL 3) Compared qfloat16s are not
|
|||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::float16Comparisons(should PASS 3)
|
PASS : tst_float::float16Comparisons(should PASS 3)
|
||||||
FAIL! : tst_float::float16Comparisons(should FAIL 4) Compared qfloat16s are not the same (fuzzy compare)
|
FAIL! : tst_float::float16Comparisons(should FAIL 4) Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 5.93e-05
|
Actual (operandLeft) : 0.00101
|
||||||
Expected (operandRight): 5.87e-05
|
Expected (operandRight): 0.00099
|
||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
PASS : tst_float::float16Comparisons(should PASS 4)
|
PASS : tst_float::float16Comparisons(should PASS 4)
|
||||||
FAIL! : tst_float::float16Comparisons(should FAIL 5) Compared qfloat16s are not the same (fuzzy compare)
|
FAIL! : tst_float::float16Comparisons(should FAIL 5) Compared qfloat16s are not the same (fuzzy compare)
|
||||||
@ -398,9 +398,9 @@ FAIL! : tst_float::compareFloatTests(1e0) Compared floats are not the same (fuz
|
|||||||
Actual (t1): 1
|
Actual (t1): 1
|
||||||
Expected (t3): 3
|
Expected (t3): 3
|
||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
FAIL! : tst_float::compareFloatTests(1e-7) Compared floats are not the same (fuzzy compare)
|
FAIL! : tst_float::compareFloatTests(1e-5) Compared floats are not the same (fuzzy compare)
|
||||||
Actual (t1): 1e-07
|
Actual (t1): 1e-05
|
||||||
Expected (t3): 3e-07
|
Expected (t3): 3e-05
|
||||||
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
|
||||||
FAIL! : tst_float::compareFloatTests(1e+7) Compared floats are not the same (fuzzy compare)
|
FAIL! : tst_float::compareFloatTests(1e+7) Compared floats are not the same (fuzzy compare)
|
||||||
Actual (t1): 1e+07
|
Actual (t1): 1e+07
|
||||||
|
@ -40,8 +40,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
||||||
<Description><![CDATA[Compared doubles are not the same (fuzzy compare)
|
<Description><![CDATA[Compared doubles are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.99999999999e-311
|
Actual (operandLeft) : 1e-12
|
||||||
Expected (operandRight): 9.99999999997e-311]]></Description>
|
Expected (operandRight): 9.99999999999e-13]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
||||||
@ -232,8 +232,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
||||||
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 1e-07
|
Actual (operandLeft) : 1e-05
|
||||||
Expected (operandRight): 3e-07]]></Description>
|
Expected (operandRight): 3e-05]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
||||||
@ -250,8 +250,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
||||||
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 9.9999e-40
|
Actual (operandLeft) : 1.00001e-05
|
||||||
Expected (operandRight): 9.99971e-40]]></Description>
|
Expected (operandRight): 9.9999e-06]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
||||||
@ -442,8 +442,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
<DataTag><![CDATA[should FAIL 2]]></DataTag>
|
||||||
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 0.0001
|
Actual (operandLeft) : 0.000999
|
||||||
Expected (operandRight): 0.0003]]></Description>
|
Expected (operandRight): 0.003]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
<DataTag><![CDATA[should PASS 2]]></DataTag>
|
||||||
@ -460,8 +460,8 @@
|
|||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
<DataTag><![CDATA[should FAIL 4]]></DataTag>
|
||||||
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
<Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
|
||||||
Actual (operandLeft) : 5.93e-05
|
Actual (operandLeft) : 0.00101
|
||||||
Expected (operandRight): 5.87e-05]]></Description>
|
Expected (operandRight): 0.00099]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="pass" file="" line="0">
|
<Incident type="pass" file="" line="0">
|
||||||
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
<DataTag><![CDATA[should PASS 4]]></DataTag>
|
||||||
@ -647,10 +647,10 @@
|
|||||||
Expected (t3): 3]]></Description>
|
Expected (t3): 3]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[1e-7]]></DataTag>
|
<DataTag><![CDATA[1e-5]]></DataTag>
|
||||||
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
<Description><![CDATA[Compared floats are not the same (fuzzy compare)
|
||||||
Actual (t1): 1e-07
|
Actual (t1): 1e-05
|
||||||
Expected (t3): 3e-07]]></Description>
|
Expected (t3): 3e-05]]></Description>
|
||||||
</Incident>
|
</Incident>
|
||||||
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
|
||||||
<DataTag><![CDATA[1e+7]]></DataTag>
|
<DataTag><![CDATA[1e+7]]></DataTag>
|
||||||
|
@ -6,7 +6,10 @@
|
|||||||
|
|
||||||
add_qt_executable(float
|
add_qt_executable(float
|
||||||
SOURCES
|
SOURCES
|
||||||
|
../../../../shared/emulationdetector.h
|
||||||
tst_float.cpp
|
tst_float.cpp
|
||||||
|
INCLUDE_DIRECTORIES
|
||||||
|
../../../../shared
|
||||||
PUBLIC_LIBRARIES
|
PUBLIC_LIBRARIES
|
||||||
Qt::Test
|
Qt::Test
|
||||||
)
|
)
|
||||||
|
@ -8,7 +8,10 @@ add_qt_executable(float
|
|||||||
NO_INSTALL # special case
|
NO_INSTALL # special case
|
||||||
OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} # special case
|
OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} # special case
|
||||||
SOURCES
|
SOURCES
|
||||||
|
../../../../shared/emulationdetector.h
|
||||||
tst_float.cpp
|
tst_float.cpp
|
||||||
|
INCLUDE_DIRECTORIES
|
||||||
|
../../../../shared
|
||||||
PUBLIC_LIBRARIES
|
PUBLIC_LIBRARIES
|
||||||
Qt::Test
|
Qt::Test
|
||||||
)
|
)
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
SOURCES += tst_float.cpp
|
|
||||||
QT = core testlib
|
QT = core testlib
|
||||||
|
|
||||||
mac:CONFIG -= app_bundle
|
mac:CONFIG -= app_bundle
|
||||||
CONFIG -= debug_and_release_target
|
CONFIG -= debug_and_release_target
|
||||||
|
|
||||||
|
INCLUDEPATH += ../../../../shared/
|
||||||
|
HEADERS = ../../../../shared/emulationdetector.h
|
||||||
|
SOURCES += tst_float.cpp
|
||||||
TARGET = float
|
TARGET = float
|
||||||
|
|
||||||
include($$QT_SOURCE_TREE/src/testlib/selfcover.pri)
|
include($$QT_SOURCE_TREE/src/testlib/selfcover.pri)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2016 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the test suite of the Qt Toolkit.
|
** This file is part of the test suite of the Qt Toolkit.
|
||||||
@ -31,6 +31,8 @@
|
|||||||
#include <QtTest/QtTest>
|
#include <QtTest/QtTest>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include "emulationdetector.h"
|
||||||
|
|
||||||
// Test proper handling of floating-point types
|
// Test proper handling of floating-point types
|
||||||
class tst_float: public QObject
|
class tst_float: public QObject
|
||||||
{
|
{
|
||||||
@ -113,16 +115,18 @@ void tst_float::doubleComparisons_data() const
|
|||||||
QTest::newRow("should PASS 1") << zero << zero;
|
QTest::newRow("should PASS 1") << zero << zero;
|
||||||
QTest::newRow("should FAIL 2") << 1.e-7 << 3.e-7;
|
QTest::newRow("should FAIL 2") << 1.e-7 << 3.e-7;
|
||||||
|
|
||||||
// QCOMPARE for doubles uses qFuzzyCompare(), which succeeds if the numbers
|
// QCOMPARE() uses qFuzzyCompare(), which succeeds if doubles differ by no
|
||||||
// differ by no more than 1e-12 times the smaller value. Thus
|
// more than 1e-12 times the smaller value; but QCOMPARE() also considers
|
||||||
// QCOMPARE(1e12-2, 1e12-1) should fail, while QCOMPARE(1e12+1, 1e12+2)
|
// values equal if qFuzzyIsNull() is true for both, so all doubles smaller
|
||||||
// should pass.
|
// than 1e-12 are equal. Thus QCOMPARE(1e12-2, 1e12-1) should fail, while
|
||||||
|
// QCOMPARE(1e12+1, 1e12+2) should pass, as should QCOMPARE(1e-12-2e-24,
|
||||||
|
// 1e-12-1e-24), despite the values differing by more than one part in 1e12.
|
||||||
|
|
||||||
QTest::newRow("should PASS 2") << 1e12 + one << 1e12 + 2.;
|
QTest::newRow("should PASS 2") << 1e12 + one << 1e12 + 2.;
|
||||||
QTest::newRow("should FAIL 3") << 1e12 - one << 1e12 - 2.;
|
QTest::newRow("should FAIL 3") << 1e12 - one << 1e12 - 2.;
|
||||||
|
QTest::newRow("should PASS 3") << 1e-12 << -1e-12;
|
||||||
// ... but rounding makes that a bit unrelaible when scaled close to the bounds.
|
// ... but rounding makes that a bit unrelaible when scaled close to the bounds.
|
||||||
QTest::newRow("should PASS 3") << 1e-310 + 1e-322 << 1e-310 + 2e-322;
|
QTest::newRow("should FAIL 4") << 1e-12 + 1e-24 << 1e-12 - 1e-24;
|
||||||
QTest::newRow("should FAIL 4") << 1e-310 - 1e-322 << 1e-310 - 3e-322;
|
|
||||||
QTest::newRow("should PASS 4") << 1e307 + 1e295 << 1e307 + 2e295;
|
QTest::newRow("should PASS 4") << 1e307 + 1e295 << 1e307 + 2e295;
|
||||||
QTest::newRow("should FAIL 5") << 1e307 - 1e295 << 1e307 - 3e295;
|
QTest::newRow("should FAIL 5") << 1e307 - 1e295 << 1e307 - 3e295;
|
||||||
|
|
||||||
@ -145,18 +149,20 @@ void tst_float::floatComparisons_data() const
|
|||||||
|
|
||||||
QTest::newRow("should FAIL 1") << one << 3.f;
|
QTest::newRow("should FAIL 1") << one << 3.f;
|
||||||
QTest::newRow("should PASS 1") << zero << zero;
|
QTest::newRow("should PASS 1") << zero << zero;
|
||||||
QTest::newRow("should FAIL 2") << 1.e-7f << 3.e-7f;
|
QTest::newRow("should FAIL 2") << 1.e-5f << 3.e-5f;
|
||||||
|
|
||||||
// QCOMPARE for floats uses qFuzzyCompare(), which succeeds if the numbers
|
// QCOMPARE() uses qFuzzyCompare(), which succeeds if the floats differ by
|
||||||
// differ by no more than 1e-5 times the smaller value. Thus
|
// no more than 1e-5 times the smaller value; but QCOMPARE() also considers
|
||||||
// QCOMPARE(1e5-2, 1e5-1) should fail, while QCOMPARE(1e5+1, 1e5+2)
|
// values equal if qFuzzyIsNull is true for both, so all floats smaller than
|
||||||
// should pass.
|
// 1e-5 are equal. Thus QCOMPARE(1e5-2, 1e5-1) should fail, while
|
||||||
|
// QCOMPARE(1e5+1, 1e5+2) should pass, as should QCOMPARE(1e-5-2e-10,
|
||||||
|
// 1e-5-1e-10), despite the values differing by more than one part in 1e5.
|
||||||
|
|
||||||
QTest::newRow("should PASS 2") << 1e5f + one << 1e5f + 2.f;
|
QTest::newRow("should PASS 2") << 1e5f + one << 1e5f + 2.f;
|
||||||
QTest::newRow("should FAIL 3") << 1e5f - one << 1e5f - 2.f;
|
QTest::newRow("should FAIL 3") << 1e5f - one << 1e5f - 2.f;
|
||||||
|
QTest::newRow("should PASS 3") << 1e-5f << -1e-5f;
|
||||||
// ... but rounding makes that a bit unrelaible when scaled close to the bounds.
|
// ... but rounding makes that a bit unrelaible when scaled close to the bounds.
|
||||||
QTest::newRow("should PASS 3") << 1e-39f + 1e-44f << 1e-39f + 2e-44f;
|
QTest::newRow("should FAIL 4") << 1e-5f + 1e-10f << 1e-5f - 1e-10f;
|
||||||
QTest::newRow("should FAIL 4") << 1e-39f - 1e-44f << 1e-39f - 3e-44f;
|
|
||||||
QTest::newRow("should PASS 4") << 1e38f + 1e33f << 1e38f + 2e33f;
|
QTest::newRow("should PASS 4") << 1e38f + 1e33f << 1e38f + 2e33f;
|
||||||
QTest::newRow("should FAIL 5") << 1e38f - 1e33f << 1e38f - 3e33f;
|
QTest::newRow("should FAIL 5") << 1e38f - 1e33f << 1e38f - 3e33f;
|
||||||
|
|
||||||
@ -175,18 +181,21 @@ void tst_float::float16Comparisons_data() const
|
|||||||
{
|
{
|
||||||
QTest::addColumn<qfloat16>("operandLeft");
|
QTest::addColumn<qfloat16>("operandLeft");
|
||||||
QTest::addColumn<qfloat16>("operandRight");
|
QTest::addColumn<qfloat16>("operandRight");
|
||||||
qfloat16 zero(0), one(1);
|
const qfloat16 zero(0), one(1);
|
||||||
|
const qfloat16 tiny(EmulationDetector::isRunningArmOnX86() ? 0.00099f : 0.001f);
|
||||||
|
|
||||||
QTest::newRow("should FAIL 1") << one << qfloat16(3);
|
QTest::newRow("should FAIL 1") << one << qfloat16(3);
|
||||||
QTest::newRow("should PASS 1") << zero << zero;
|
QTest::newRow("should PASS 1") << zero << zero;
|
||||||
QTest::newRow("should FAIL 2") << qfloat16(1e-4f) << qfloat16(3e-4f);
|
QTest::newRow("should FAIL 2") << qfloat16(1e-3f) << qfloat16(3e-3f);
|
||||||
|
|
||||||
// QCOMPARE for qfloat16s uses qFuzzyCompare()
|
// QCOMPARE for uses qFuzzyCompare(), which ignores differences of one part
|
||||||
|
// in 102.5 and considers any two qFuzzyIsNull() values, i.e. values smaller
|
||||||
|
// than 1e-3, equal
|
||||||
QTest::newRow("should PASS 2") << qfloat16(1001) << qfloat16(1002);
|
QTest::newRow("should PASS 2") << qfloat16(1001) << qfloat16(1002);
|
||||||
QTest::newRow("should FAIL 3") << qfloat16(98) << qfloat16(99);
|
QTest::newRow("should FAIL 3") << qfloat16(98) << qfloat16(99);
|
||||||
|
QTest::newRow("should PASS 3") << tiny << -tiny;
|
||||||
// ... which gets a bit unreliable near to the type's bounds
|
// ... which gets a bit unreliable near to the type's bounds
|
||||||
QTest::newRow("should PASS 3") << qfloat16(6e-5f) + qfloat16(6e-7f) << qfloat16(6e-5f) + qfloat16(11e-7f);
|
QTest::newRow("should FAIL 4") << qfloat16(1.01e-3f) << qfloat16(0.99e-3f);
|
||||||
QTest::newRow("should FAIL 4") << qfloat16(6e-5f) - qfloat16(7e-7f) << qfloat16(6e-5f) - qfloat16(13e-7f);
|
|
||||||
QTest::newRow("should PASS 4") << qfloat16(6e4) + qfloat16(700) << qfloat16(6e4) + qfloat16(1200);
|
QTest::newRow("should PASS 4") << qfloat16(6e4) + qfloat16(700) << qfloat16(6e4) + qfloat16(1200);
|
||||||
QTest::newRow("should FAIL 5") << qfloat16(6e4) - qfloat16(600) << qfloat16(6e4) - qfloat16(1200);
|
QTest::newRow("should FAIL 5") << qfloat16(6e4) - qfloat16(600) << qfloat16(6e4) - qfloat16(1200);
|
||||||
|
|
||||||
@ -200,7 +209,7 @@ void tst_float::compareFloatTests() const
|
|||||||
// Create two more values
|
// Create two more values
|
||||||
// t2 differs from t1 by 1 ppm (part per million)
|
// t2 differs from t1 by 1 ppm (part per million)
|
||||||
// t3 differs from t1 by 200%
|
// t3 differs from t1 by 200%
|
||||||
// we should consider that t1 == t2 and t1 != t3
|
// We should consider that t1 == t2 and t1 != t3 (provided at least one is > 1e-5)
|
||||||
const float t2 = t1 + (t1 / 1e6);
|
const float t2 = t1 + (t1 / 1e6);
|
||||||
const float t3 = 3 * t1;
|
const float t3 = 3 * t1;
|
||||||
|
|
||||||
@ -214,7 +223,7 @@ void tst_float::compareFloatTests_data() const
|
|||||||
{
|
{
|
||||||
QTest::addColumn<float>("t1");
|
QTest::addColumn<float>("t1");
|
||||||
QTest::newRow("1e0") << 1e0f;
|
QTest::newRow("1e0") << 1e0f;
|
||||||
QTest::newRow("1e-7") << 1e-7f;
|
QTest::newRow("1e-5") << 1e-5f;
|
||||||
QTest::newRow("1e+7") << 1e+7f;
|
QTest::newRow("1e+7") << 1e+7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2016 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Copyright (C) 2016 Intel Corporation.
|
** Copyright (C) 2016 Intel Corporation.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
@ -940,6 +940,14 @@ bool tst_Selftests::compareLine(const QString &logger, const QString &subdir,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (EmulationDetector::isRunningArmOnX86() && subdir == QLatin1String("float")) {
|
||||||
|
// QEMU cheats at qfloat16, so outputs it as if it were a float.
|
||||||
|
if (actualLine.endsWith(QLatin1String("Actual (operandLeft) : 0.001"))
|
||||||
|
&& expectedLine.endsWith(QLatin1String("Actual (operandLeft) : 0.000999"))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*errorMessage = msgMismatch(actualLine, expectedLine);
|
*errorMessage = msgMismatch(actualLine, expectedLine);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user