mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-03 07:45:30 +08:00
qt 6.5.1 original
This commit is contained in:
18
tests/auto/corelib/serialization/CMakeLists.txt
Normal file
18
tests/auto/corelib/serialization/CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(json)
|
||||
add_subdirectory(qcborstreamreader)
|
||||
add_subdirectory(qcborstreamwriter)
|
||||
add_subdirectory(qcborvalue)
|
||||
add_subdirectory(qcborvalue_json)
|
||||
if(TARGET Qt::Gui)
|
||||
add_subdirectory(qdatastream)
|
||||
add_subdirectory(qdatastream_core_pixmap)
|
||||
endif()
|
||||
if(TARGET Qt::Network)
|
||||
add_subdirectory(qtextstream)
|
||||
endif()
|
||||
if(TARGET Qt::Gui AND TARGET Qt::Network AND TARGET Qt::Xml AND NOT INTEGRITY AND NOT QNX)
|
||||
add_subdirectory(qxmlstream)
|
||||
endif()
|
120
tests/auto/corelib/serialization/cborlargedatavalidation.cpp
Normal file
120
tests/auto/corelib/serialization/cborlargedatavalidation.cpp
Normal file
@ -0,0 +1,120 @@
|
||||
// Copyright (C) 2020 Intel Corporation.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#include <QTest>
|
||||
#include <QtEndian>
|
||||
|
||||
#include <cbor.h>
|
||||
|
||||
namespace {
|
||||
// A QIODevice that supplies a fixed header followed by a large sequence of
|
||||
// null bytes up until a pre-determined size.
|
||||
class LargeIODevice final : public QIODevice
|
||||
{
|
||||
public:
|
||||
qint64 realSize;
|
||||
QByteArray start;
|
||||
|
||||
LargeIODevice(const QByteArray &start, qint64 size, QObject *parent = nullptr)
|
||||
: QIODevice(parent), realSize(size), start(start)
|
||||
{}
|
||||
|
||||
qint64 size() const override { return realSize; }
|
||||
bool isSequential() const override { return false; }
|
||||
|
||||
protected:
|
||||
qint64 readData(char *data, qint64 maxlen) override;
|
||||
qint64 writeData(const char *, qint64) override { return -1; }
|
||||
};
|
||||
};
|
||||
|
||||
qint64 LargeIODevice::readData(char *data, qint64 maxlen)
|
||||
{
|
||||
qint64 p = pos();
|
||||
if (maxlen > realSize - p)
|
||||
maxlen = realSize - p;
|
||||
memset(data, '\0', qMin(maxlen, qint64(32 * 1024)));
|
||||
|
||||
qint64 fromstart = start.size() - p;
|
||||
if (fromstart > maxlen)
|
||||
fromstart = maxlen;
|
||||
else if (fromstart < 0)
|
||||
fromstart = 0;
|
||||
if (fromstart)
|
||||
memcpy(data, start.constData() + p, fromstart);
|
||||
return maxlen;
|
||||
}
|
||||
|
||||
void addValidationLargeData(qsizetype minInvalid, qsizetype maxInvalid)
|
||||
{
|
||||
char toolong[1 + sizeof(qsizetype)];
|
||||
for (qsizetype v = maxInvalid; v >= minInvalid; --v) {
|
||||
// 0x5a for 32-bit, 0x5b for 64-bit
|
||||
toolong[0] = sizeof(v) > 4 ? 0x5b : 0x5a;
|
||||
qToBigEndian(v, toolong + 1);
|
||||
|
||||
bool overflows = v > std::numeric_limits<qsizetype>::max() - 1 - qsizetype(sizeof(v));
|
||||
CborError err = overflows ? CborErrorDataTooLarge : CborErrorUnexpectedEOF;
|
||||
|
||||
QTest::addRow("bytearray-too-big-for-qbytearray-%zx", size_t(v))
|
||||
<< QByteArray(toolong, sizeof(toolong)) << 0 << err;
|
||||
QTest::addRow("bytearray-chunked-too-big-for-qbytearray-%zx", size_t(v))
|
||||
<< ('\x5f' + QByteArray(toolong, sizeof(toolong)) + '\xff')
|
||||
<< 0 << err;
|
||||
QTest::addRow("bytearray-2chunked-too-big-for-qbytearray-%zx", size_t(v))
|
||||
<< ("\x5f\x40" + QByteArray(toolong, sizeof(toolong)) + '\xff')
|
||||
<< 0 << err;
|
||||
toolong[0] |= 0x20;
|
||||
|
||||
// QCborStreamReader::readString copies to a QByteArray first
|
||||
QTest::addRow("string-too-big-for-qbytearray-%zx", size_t(v))
|
||||
<< QByteArray(toolong, sizeof(toolong)) << 0 << err;
|
||||
QTest::addRow("string-chunked-too-big-for-qbytearray-%zx", size_t(v))
|
||||
<< ('\x7f' + QByteArray(toolong, sizeof(toolong)) + '\xff')
|
||||
<< 0 << err;
|
||||
QTest::addRow("string-2chunked-too-big-for-qbytearray-%zx", size_t(v))
|
||||
<< ("\x7f\x60" + QByteArray(toolong, sizeof(toolong)) + '\xff')
|
||||
<< 0 << err;
|
||||
}
|
||||
}
|
||||
|
||||
void addValidationHugeDevice(qsizetype byteArrayInvalid, qsizetype stringInvalid)
|
||||
{
|
||||
qRegisterMetaType<QSharedPointer<QIODevice>>();
|
||||
QTest::addColumn<QSharedPointer<QIODevice>>("device");
|
||||
QTest::addColumn<CborError>("expectedError");
|
||||
QTest::addColumn<CborError>("expectedValidationError");
|
||||
|
||||
char buf[1 + sizeof(quint64)];
|
||||
auto device = [&buf](QCborStreamReader::Type t, quint64 size) {
|
||||
buf[0] = quint8(t) | 0x1b;
|
||||
qToBigEndian(size, buf + 1);
|
||||
size += sizeof(buf);
|
||||
QSharedPointer<QIODevice> p =
|
||||
QSharedPointer<LargeIODevice>::create(QByteArray(buf, sizeof(buf)), size);
|
||||
return p;
|
||||
};
|
||||
|
||||
// do the exact limits
|
||||
QTest::newRow("bytearray-just-too-big")
|
||||
<< device(QCborStreamReader::ByteArray, byteArrayInvalid)
|
||||
<< CborErrorDataTooLarge << CborNoError;
|
||||
QTest::newRow("string-just-too-big")
|
||||
<< device(QCborStreamReader::String, stringInvalid)
|
||||
<< CborErrorDataTooLarge << CborErrorDataTooLarge;
|
||||
|
||||
auto addSize = [=](const char *sizename, qint64 size) {
|
||||
if (byteArrayInvalid < size)
|
||||
QTest::addRow("bytearray-%s", sizename)
|
||||
<< device(QCborStreamReader::ByteArray, size)
|
||||
<< CborErrorDataTooLarge << CborNoError;
|
||||
if (stringInvalid < size)
|
||||
QTest::addRow("string-%s", sizename)
|
||||
<< device(QCborStreamReader::String, size)
|
||||
<< CborErrorDataTooLarge << CborErrorDataTooLarge;
|
||||
};
|
||||
addSize("1GB", quint64(1) << 30);
|
||||
addSize("2GB", quint64(1) << 31);
|
||||
addSize("4GB", quint64(1) << 32);
|
||||
addSize("max", std::numeric_limits<qint64>::max() - sizeof(buf));
|
||||
}
|
29
tests/auto/corelib/serialization/json/CMakeLists.txt
Normal file
29
tests/auto/corelib/serialization/json/CMakeLists.txt
Normal file
@ -0,0 +1,29 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_json Test:
|
||||
#####################################################################
|
||||
|
||||
set(json_resource_files
|
||||
"bom.json"
|
||||
"test.json"
|
||||
"test2.json"
|
||||
"test3.json"
|
||||
"simple.duplicates.json"
|
||||
"test.duplicates.json"
|
||||
"test3.duplicates.json"
|
||||
)
|
||||
|
||||
qt_internal_add_test(tst_json
|
||||
SOURCES
|
||||
tst_qtjson.cpp
|
||||
LIBRARIES
|
||||
Qt::CorePrivate
|
||||
TESTDATA ${json_resource_files}
|
||||
)
|
||||
|
||||
qt_internal_extend_target(tst_json CONDITION NOT QT_FEATURE_doubleconversion AND NOT QT_FEATURE_system_doubleconversion
|
||||
DEFINES
|
||||
QT_NO_DOUBLECONVERSION
|
||||
)
|
3
tests/auto/corelib/serialization/json/bom.json
Normal file
3
tests/auto/corelib/serialization/json/bom.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"info-version": "1.0"
|
||||
}
|
@ -0,0 +1 @@
|
||||
{"":{"":0},"":0}
|
66
tests/auto/corelib/serialization/json/test.duplicates.json
Normal file
66
tests/auto/corelib/serialization/json/test.duplicates.json
Normal file
@ -0,0 +1,66 @@
|
||||
[
|
||||
"JSON Test Pattern pass1",
|
||||
{"a":["array with 1 element"]},
|
||||
{},
|
||||
[],
|
||||
-42,
|
||||
true,
|
||||
false,
|
||||
null,
|
||||
{
|
||||
"a": 1234567890,
|
||||
"a": -9876.543210,
|
||||
"a": 0.123456789e-12,
|
||||
"a": 1.234567890E+34,
|
||||
"a": 23456789012E66,
|
||||
"a": 0,
|
||||
"a": 1,
|
||||
"a": " ",
|
||||
"a": "\"",
|
||||
"a": "\\",
|
||||
"a": "\b\f\n\r\t",
|
||||
"a": "/ & \/",
|
||||
"a": "abcdefghijklmnopqrstuvwxyz",
|
||||
"a": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||
"a": "0123456789",
|
||||
"a": "digit",
|
||||
"a": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
|
||||
"a": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
|
||||
"a": true,
|
||||
"a": false,
|
||||
"a": null,
|
||||
"a":[ ],
|
||||
"a":{ },
|
||||
"a": "50 St. James Street",
|
||||
"a": "nix",
|
||||
"a": "// /* <!-- --",
|
||||
"a": " ",
|
||||
"a":[1,2 , 3
|
||||
|
||||
,
|
||||
|
||||
4 , 5 , 6 ,7 ],"a":[1,2,3,4,5,6,7],
|
||||
"a": "\"a:[\"array with 1 element\"]}",
|
||||
"a": "" \u0022 %22 0x22 034 "",
|
||||
"a": "A key can be any string"
|
||||
},
|
||||
0.5 ,98.6
|
||||
,
|
||||
99.44
|
||||
,
|
||||
|
||||
1066,
|
||||
1e1,
|
||||
0.1e1,
|
||||
1e-1,
|
||||
1e00,
|
||||
2e+00,
|
||||
2e-00,
|
||||
"rosebud",
|
||||
{"a": "bar"},
|
||||
{"a":{"a":1000,"a":{"a":"nix"}},"a":{"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$4,833.99","a":483399}},"a":[{"a":"PRODUCT","a":"Silicone c","a":"Elite Hori","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":310711221747712.000000,"a":{"a":{"a":"$1.56","a":156},"a":{"a":"$29.99","a":2999},"a":14},"a":1968262863,"a":8515},{"a":"PRODUCT","a":"Nonslip Ch","a":"Specificat","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":175580930637824.000000,"a":{"a":{"a":"$0.45","a":45},"a":{"a":"$194.95","a":19495},"a":34},"a":2534935499,"a":8515},{"a":"PRODUCT","a":"Plastic Ca","a":"Descriptio","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":132488642953216.000000,"a":{"a":{"a":"$0.99","a":99},"a":{"a":"$303.68","a":30368},"a":33},"a":2305624670,"a":8515},{"a":"PRODUCT","a":"Protective","a":"Made of hi","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":108614681362432.000000,"a":{"a":{"a":"$1.70","a":170},"a":{"a":"$99.99","a":9999},"a":11},"a":2120981405,"a":8515},{"a":"PRODUCT","a":"P® 4","a":"Do more th","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":96203484168192.000000,"a":{"a":{"a":"$2.49","a":249},"a":{"a":"$79.95","a":7995},"a":16},"a":2203798762,"a":8515},{"a":"PRODUCT","a":"Case Refle","a":"NCAA iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":84727583211520.000000,"a":{"a":{"a":"$0.69","a":69},"a":{"a":"$75.52","a":7552},"a":59},"a":1114627445,"a":8515},{"a":"PRODUCT","a":"Infuse Pro","a":"Protect an","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":80831066406912.000000,"a":{"a":{"a":"$0.59","a":59},"a":{"a":"$79.00","a":7900},"a":24},"a":2557462717,"a":8515},{"a":"PRODUCT","a":"Dragonfly ","a":"d","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":70900229603328.000000,"a":{"a":{"a":"$1.05","a":105},"a":{"a":"$94.49","a":9449},"a":30},"a":2442061740,"a":8515},{"a":"PRODUCT","a":"Pho","a":"Snap on Ap","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":65194915004416.000000,"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$414.99","a":41499},"a":39},"a":2004746863,"a":8515},{"a":"PRODUCT","a":"Otterbox i","a":"Your iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":61515478597632.000000,"a":{"a":{"a":"$3.28","a":328},"a":{"a":"$110.65","a":11065},"a":25},"a":2584611575,"a":8515}],"a":10,"a":2000}},
|
||||
{"a":{"a":1000,"a":{"a":"nix"}},"a":{"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$4,833.99","a":483399}},"a":[{"a":"PRODUCT","a":"Silicone c","a":"Elite Hori","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":310711221747712.000000,"a":{"a":{"a":"$1.56","a":156},"a":{"a":"$29.99","a":2999},"a":14},"a":1968262863,"a":8515},{"a":"PRODUCT","a":"Nonslip Ch","a":"Specificat","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":175580930637824.000000,"a":{"a":{"a":"$0.45","a":45},"a":{"a":"$194.95","a":19495},"a":34},"a":2534935499,"a":8515},{"a":"PRODUCT","a":"Plastic Ca","a":"Descriptio","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":132488642953216.000000,"a":{"a":{"a":"$0.99","a":99},"a":{"a":"$303.68","a":30368},"a":33},"a":2305624670,"a":8515},{"a":"PRODUCT","a":"Protective","a":"Made of hi","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":108614681362432.000000,"a":{"a":{"a":"$1.70","a":170},"a":{"a":"$99.99","a":9999},"a":11},"a":2120981405,"a":8515},{"a":"PRODUCT","a":"P® 4","a":"Do more th","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":96203484168192.000000,"a":{"a":{"a":"$2.49","a":249},"a":{"a":"$79.95","a":7995},"a":16},"a":2203798762,"a":8515},{"a":"PRODUCT","a":"Case Refle","a":"NCAA iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":84727583211520.000000,"a":{"a":{"a":"$0.69","a":69},"a":{"a":"$75.52","a":7552},"a":59},"a":1114627445,"a":8515},{"a":"PRODUCT","a":"Infuse Pro","a":"Protect an","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":80831066406912.000000,"a":{"a":{"a":"$0.59","a":59},"a":{"a":"$79.00","a":7900},"a":24},"a":2557462717,"a":8515},{"a":"PRODUCT","a":"Dragonfly ","a":"d","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":70900229603328.000000,"a":{"a":{"a":"$1.05","a":105},"a":{"a":"$94.49","a":9449},"a":30},"a":2442061740,"a":8515},{"a":"PRODUCT","a":"Pho","a":"Snap on Ap","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":65194915004416.000000,"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$414.99","a":41499},"a":39},"a":2004746863,"a":8515},{"a":"PRODUCT","a":"Otterbox i","a":"Your iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":61515478597632.000000,"a":{"a":{"a":"$3.28","a":328},"a":{"a":"$110.65","a":11065},"a":25},"a":2584611575,"a":8515}],"a":10,"a":2000}},
|
||||
{"a":{"a":1000,"a":{"a":"nix"}},"a":{"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$4,833.99","a":483399}},"a":[{"a":"PRODUCT","a":"Silicone c","a":"Elite Hori","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":310711221747712.000000,"a":{"a":{"a":"$1.56","a":156},"a":{"a":"$29.99","a":2999},"a":14},"a":1968262863,"a":8515},{"a":"PRODUCT","a":"Nonslip Ch","a":"Specificat","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":175580930637824.000000,"a":{"a":{"a":"$0.45","a":45},"a":{"a":"$194.95","a":19495},"a":34},"a":2534935499,"a":8515},{"a":"PRODUCT","a":"Plastic Ca","a":"Descriptio","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":132488642953216.000000,"a":{"a":{"a":"$0.99","a":99},"a":{"a":"$303.68","a":30368},"a":33},"a":2305624670,"a":8515},{"a":"PRODUCT","a":"Protective","a":"Made of hi","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":108614681362432.000000,"a":{"a":{"a":"$1.70","a":170},"a":{"a":"$99.99","a":9999},"a":11},"a":2120981405,"a":8515},{"a":"PRODUCT","a":"P® 4","a":"Do more th","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":96203484168192.000000,"a":{"a":{"a":"$2.49","a":249},"a":{"a":"$79.95","a":7995},"a":16},"a":2203798762,"a":8515},{"a":"PRODUCT","a":"Case Refle","a":"NCAA iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":84727583211520.000000,"a":{"a":{"a":"$0.69","a":69},"a":{"a":"$75.52","a":7552},"a":59},"a":1114627445,"a":8515},{"a":"PRODUCT","a":"Infuse Pro","a":"Protect an","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":80831066406912.000000,"a":{"a":{"a":"$0.59","a":59},"a":{"a":"$79.00","a":7900},"a":24},"a":2557462717,"a":8515},{"a":"PRODUCT","a":"Dragonfly ","a":"d","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":70900229603328.000000,"a":{"a":{"a":"$1.05","a":105},"a":{"a":"$94.49","a":9449},"a":30},"a":2442061740,"a":8515},{"a":"PRODUCT","a":"Pho","a":"Snap on Ap","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":65194915004416.000000,"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$414.99","a":41499},"a":39},"a":2004746863,"a":8515},{"a":"PRODUCT","a":"Otterbox i","a":"Your iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":61515478597632.000000,"a":{"a":{"a":"$3.28","a":328},"a":{"a":"$110.65","a":11065},"a":25},"a":2584611575,"a":8515}],"a":10,"a":2000}},
|
||||
{"a":{"a":1000,"a":{"a":"nix"}},"a":{"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$4,833.99","a":483399}},"a":[{"a":"PRODUCT","a":"Silicone c","a":"Elite Hori","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":310711221747712.000000,"a":{"a":{"a":"$1.56","a":156},"a":{"a":"$29.99","a":2999},"a":14},"a":1968262863,"a":8515},{"a":"PRODUCT","a":"Nonslip Ch","a":"Specificat","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":175580930637824.000000,"a":{"a":{"a":"$0.45","a":45},"a":{"a":"$194.95","a":19495},"a":34},"a":2534935499,"a":8515},{"a":"PRODUCT","a":"Plastic Ca","a":"Descriptio","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":132488642953216.000000,"a":{"a":{"a":"$0.99","a":99},"a":{"a":"$303.68","a":30368},"a":33},"a":2305624670,"a":8515},{"a":"PRODUCT","a":"Protective","a":"Made of hi","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":108614681362432.000000,"a":{"a":{"a":"$1.70","a":170},"a":{"a":"$99.99","a":9999},"a":11},"a":2120981405,"a":8515},{"a":"PRODUCT","a":"P® 4","a":"Do more th","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":96203484168192.000000,"a":{"a":{"a":"$2.49","a":249},"a":{"a":"$79.95","a":7995},"a":16},"a":2203798762,"a":8515},{"a":"PRODUCT","a":"Case Refle","a":"NCAA iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":84727583211520.000000,"a":{"a":{"a":"$0.69","a":69},"a":{"a":"$75.52","a":7552},"a":59},"a":1114627445,"a":8515},{"a":"PRODUCT","a":"Infuse Pro","a":"Protect an","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":80831066406912.000000,"a":{"a":{"a":"$0.59","a":59},"a":{"a":"$79.00","a":7900},"a":24},"a":2557462717,"a":8515},{"a":"PRODUCT","a":"Dragonfly ","a":"d","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":70900229603328.000000,"a":{"a":{"a":"$1.05","a":105},"a":{"a":"$94.49","a":9449},"a":30},"a":2442061740,"a":8515},{"a":"PRODUCT","a":"Pho","a":"Snap on Ap","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":65194915004416.000000,"a":{"a":{"a":"$0.01","a":1},"a":{"a":"$414.99","a":41499},"a":39},"a":2004746863,"a":8515},{"a":"PRODUCT","a":"Otterbox i","a":"Your iPhon","a":"someone","a":{"a":"nix"},"a":{"a":[{"a":"nix","a":60,"a":60},{"a":"nix","a":100,"a":100},{"a":"nix","a":160,"a":160},{"a":"nix","a":400,"a":400}]},"a":61515478597632.000000,"a":{"a":{"a":"$3.28","a":328},"a":{"a":"$110.65","a":11065},"a":25},"a":2584611575,"a":8515}],"a":10,"a":2000}}
|
||||
]
|
||||
|
66
tests/auto/corelib/serialization/json/test.json
Normal file
66
tests/auto/corelib/serialization/json/test.json
Normal file
@ -0,0 +1,66 @@
|
||||
[
|
||||
"JSON Test Pattern pass1",
|
||||
{"object with 1 member":["array with 1 element"]},
|
||||
{},
|
||||
[],
|
||||
-42,
|
||||
true,
|
||||
false,
|
||||
null,
|
||||
{
|
||||
"integer": 1234567890,
|
||||
"real": -9876.543210,
|
||||
"e": 0.123456789e-12,
|
||||
"E": 1.234567890E+34,
|
||||
"": 23456789012E66,
|
||||
"zero": 0,
|
||||
"one": 1,
|
||||
"space": " ",
|
||||
"quote": "\"",
|
||||
"backslash": "\\",
|
||||
"controls": "\b\f\n\r\t",
|
||||
"slash": "/ & \/",
|
||||
"alpha": "abcdefghijklmnopqrstuvwxyz",
|
||||
"ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||
"digit": "0123456789",
|
||||
"0123456789": "digit",
|
||||
"special": "`1~!@#$%^&*()_+-={\':[,]}|;.</>?",
|
||||
"hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
|
||||
"true": true,
|
||||
"false": false,
|
||||
"null": null,
|
||||
"array":[ ],
|
||||
"object":{ },
|
||||
"address": "50 St. James Street",
|
||||
"url": "nix",
|
||||
"comment": "// /* <!-- --",
|
||||
"# -- --> */": " ",
|
||||
" s p a c e d " :[1,2 , 3
|
||||
|
||||
,
|
||||
|
||||
4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7],
|
||||
"jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
|
||||
"quotes": "" \u0022 %22 0x22 034 "",
|
||||
"\/\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:\',./<>?" : "A key can be any string"
|
||||
},
|
||||
0.5 ,98.6
|
||||
,
|
||||
99.44
|
||||
,
|
||||
|
||||
1066,
|
||||
1e1,
|
||||
0.1e1,
|
||||
1e-1,
|
||||
1e00,
|
||||
2e+00,
|
||||
2e-00,
|
||||
"rosebud",
|
||||
{"foo": "bar"},
|
||||
{"classification":{"relevancyScore":1000,"searchUrl":{"value":"nix"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone c","description":"Elite Hori","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Ch","description":"Specificat","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Ca","description":"Descriptio","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective","description":"Made of hi","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"P® 4","description":"Do more th","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Refle","description":"NCAA iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Pro","description":"Protect an","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly ","description":"d","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Pho","description":"Snap on Ap","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox i","description":"Your iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}},
|
||||
{"classification":{"relevancyScore":1000,"searchUrl":{"value":"nix"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone c","description":"Elite Hori","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Ch","description":"Specificat","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Ca","description":"Descriptio","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective","description":"Made of hi","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"P® 4","description":"Do more th","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Refle","description":"NCAA iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Pro","description":"Protect an","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly ","description":"d","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Pho","description":"Snap on Ap","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox i","description":"Your iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}},
|
||||
{"classification":{"relevancyScore":1000,"searchUrl":{"value":"nix"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone c","description":"Elite Hori","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Ch","description":"Specificat","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Ca","description":"Descriptio","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective","description":"Made of hi","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"P® 4","description":"Do more th","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Refle","description":"NCAA iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Pro","description":"Protect an","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly ","description":"d","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Pho","description":"Snap on Ap","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox i","description":"Your iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}},
|
||||
{"classification":{"relevancyScore":1000,"searchUrl":{"value":"nix"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone c","description":"Elite Hori","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Ch","description":"Specificat","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Ca","description":"Descriptio","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective","description":"Made of hi","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"P® 4","description":"Do more th","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Refle","description":"NCAA iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Pro","description":"Protect an","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly ","description":"d","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Pho","description":"Snap on Ap","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox i","description":"Your iPhon","manufacturer":"someone","url":{"value":"nix"},"images":{"image":[{"value":"nix","xsize":60,"ysize":60},{"value":"nix","xsize":100,"ysize":100},{"value":"nix","xsize":160,"ysize":160},{"value":"nix","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}}
|
||||
]
|
||||
|
1
tests/auto/corelib/serialization/json/test2.json
Normal file
1
tests/auto/corelib/serialization/json/test2.json
Normal file
@ -0,0 +1 @@
|
||||
{ "foo": ["ab"] }
|
15
tests/auto/corelib/serialization/json/test3.duplicates.json
Normal file
15
tests/auto/corelib/serialization/json/test3.duplicates.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"a": "John",
|
||||
"a": "Smith",
|
||||
"a": 25,
|
||||
"a": {
|
||||
"a": "21 2nd Street",
|
||||
"a": "New York",
|
||||
"a": "NY",
|
||||
"a": "10021"
|
||||
},
|
||||
"a": [
|
||||
{ "a": "home", "a": "212 555-1234" },
|
||||
{ "a": "fax", "a": "646 555-4567" }
|
||||
]
|
||||
}
|
15
tests/auto/corelib/serialization/json/test3.json
Normal file
15
tests/auto/corelib/serialization/json/test3.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"firstName": "John",
|
||||
"lastName" : "Smith",
|
||||
"age" : 25,
|
||||
"address" : {
|
||||
"streetAddress": "21 2nd Street",
|
||||
"city" : "New York",
|
||||
"state" : "NY",
|
||||
"postalCode" : "10021"
|
||||
},
|
||||
"phoneNumber": [
|
||||
{ "type" : "home", "number": "212 555-1234" },
|
||||
{ "type" : "fax", "number": "646 555-4567" }
|
||||
]
|
||||
}
|
3846
tests/auto/corelib/serialization/json/tst_qtjson.cpp
Normal file
3846
tests/auto/corelib/serialization/json/tst_qtjson.cpp
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,16 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_qcborstreamreader Test:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_test(tst_qcborstreamreader
|
||||
SOURCES
|
||||
tst_qcborstreamreader.cpp
|
||||
INCLUDE_DIRECTORIES
|
||||
../../../../../src/3rdparty/tinycbor/src
|
||||
../../../../../src/3rdparty/tinycbor/tests/parser
|
||||
LIBRARIES
|
||||
Qt::CorePrivate
|
||||
)
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,13 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_qcborstreamwriter Test:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_test(tst_qcborstreamwriter
|
||||
SOURCES
|
||||
tst_qcborstreamwriter.cpp
|
||||
INCLUDE_DIRECTORIES
|
||||
../../../../../src/3rdparty/tinycbor/tests/encoder
|
||||
)
|
@ -0,0 +1,279 @@
|
||||
// Copyright (C) 2018 Intel Corporation.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#include <QTest>
|
||||
#include <QCborStreamWriter>
|
||||
#include <QBuffer>
|
||||
|
||||
class tst_QCborStreamWriter : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private Q_SLOTS:
|
||||
void initTestCase_data();
|
||||
void fixed_data();
|
||||
void fixed();
|
||||
void strings_data();
|
||||
void strings() { fixed(); }
|
||||
void nonAsciiStrings_data();
|
||||
void nonAsciiStrings();
|
||||
void arraysAndMaps_data();
|
||||
void arraysAndMaps() { fixed(); }
|
||||
void tags_data();
|
||||
void tags();
|
||||
void arrays_data() { tags_data(); }
|
||||
void arrays();
|
||||
void maps_data() { tags_data(); }
|
||||
void maps();
|
||||
};
|
||||
|
||||
// Get the data from TinyCBOR (see src/3rdparty/tinycbor/tests/encoder/data.cpp)
|
||||
typedef quint64 CborTag;
|
||||
#include "data.cpp"
|
||||
|
||||
void encodeVariant(QCborStreamWriter &writer, const QVariant &v)
|
||||
{
|
||||
int type = v.userType();
|
||||
switch (type) {
|
||||
case QMetaType::Int:
|
||||
case QMetaType::LongLong:
|
||||
return writer.append(v.toLongLong());
|
||||
|
||||
case QMetaType::UInt:
|
||||
case QMetaType::ULongLong:
|
||||
return writer.append(v.toULongLong());
|
||||
|
||||
case QMetaType::Bool:
|
||||
return writer.append(v.toBool());
|
||||
|
||||
case QMetaType::UnknownType:
|
||||
return writer.appendUndefined();
|
||||
|
||||
case QMetaType::VoidStar:
|
||||
return writer.append(nullptr);
|
||||
|
||||
case QMetaType::Double:
|
||||
return writer.append(v.toDouble());
|
||||
|
||||
case QMetaType::Float:
|
||||
return writer.append(v.toFloat());
|
||||
|
||||
case QMetaType::QString:
|
||||
return writer.append(v.toString());
|
||||
|
||||
case QMetaType::QByteArray:
|
||||
return writer.append(v.toByteArray());
|
||||
|
||||
default:
|
||||
if (type == qMetaTypeId<NegativeInteger>())
|
||||
return writer.append(QCborNegativeInteger(v.value<NegativeInteger>().abs));
|
||||
if (type == qMetaTypeId<SimpleType>())
|
||||
return writer.append(QCborSimpleType(v.value<SimpleType>().type));
|
||||
if (type == qMetaTypeId<qfloat16>())
|
||||
return writer.append(v.value<qfloat16>());
|
||||
if (type == qMetaTypeId<Tag>()) {
|
||||
writer.append(QCborTag(v.value<Tag>().tag));
|
||||
return encodeVariant(writer, v.value<Tag>().tagged);
|
||||
}
|
||||
if (type == QMetaType::QVariantList || type == qMetaTypeId<IndeterminateLengthArray>()) {
|
||||
QVariantList list = v.toList();
|
||||
if (type == qMetaTypeId<IndeterminateLengthArray>()) {
|
||||
list = v.value<IndeterminateLengthArray>();
|
||||
writer.startArray();
|
||||
} else {
|
||||
writer.startArray(list.size());
|
||||
}
|
||||
for (const QVariant &v2 : std::as_const(list))
|
||||
encodeVariant(writer, v2);
|
||||
QVERIFY(writer.endArray());
|
||||
return;
|
||||
}
|
||||
if (type == qMetaTypeId<Map>() || type == qMetaTypeId<IndeterminateLengthMap>()) {
|
||||
Map map = v.value<Map>();
|
||||
if (type == qMetaTypeId<IndeterminateLengthMap>()) {
|
||||
map = v.value<IndeterminateLengthMap>();
|
||||
writer.startMap();
|
||||
} else {
|
||||
writer.startMap(map.size());
|
||||
}
|
||||
for (auto pair : std::as_const(map)) {
|
||||
encodeVariant(writer, pair.first);
|
||||
encodeVariant(writer, pair.second);
|
||||
}
|
||||
QVERIFY(writer.endMap());
|
||||
return;
|
||||
}
|
||||
}
|
||||
QFAIL("Shouldn't have got here");
|
||||
}
|
||||
|
||||
void compare(const QVariant &input, const QByteArray &output)
|
||||
{
|
||||
QFETCH_GLOBAL(bool, useDevice);
|
||||
|
||||
if (useDevice) {
|
||||
QBuffer buffer;
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
QCborStreamWriter writer(&buffer);
|
||||
encodeVariant(writer, input);
|
||||
QCOMPARE(buffer.data(), output);
|
||||
} else {
|
||||
QByteArray buffer;
|
||||
QCborStreamWriter writer(&buffer);
|
||||
encodeVariant(writer, input);
|
||||
QCOMPARE(buffer, output);
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::initTestCase_data()
|
||||
{
|
||||
QTest::addColumn<bool>("useDevice");
|
||||
QTest::newRow("QByteArray") << false;
|
||||
QTest::newRow("QIODevice") << true;
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::fixed_data()
|
||||
{
|
||||
addColumns();
|
||||
addFixedData();
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::fixed()
|
||||
{
|
||||
QFETCH(QVariant, input);
|
||||
QFETCH(QByteArray, output);
|
||||
compare(input, output);
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::strings_data()
|
||||
{
|
||||
addColumns();
|
||||
addStringsData();
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::nonAsciiStrings_data()
|
||||
{
|
||||
QTest::addColumn<QByteArray>("output");
|
||||
QTest::addColumn<QString>("input");
|
||||
QTest::addColumn<bool>("isLatin1");
|
||||
|
||||
QByteArray latin1 = "Résumé";
|
||||
QTest::newRow("shortlatin1")
|
||||
<< ("\x68" + latin1) << QString::fromUtf8(latin1) << true;
|
||||
|
||||
// replicate it 5 times (total 40 bytes)
|
||||
latin1 += latin1 + latin1 + latin1 + latin1;
|
||||
QTest::newRow("longlatin1")
|
||||
<< ("\x78\x28" + latin1) << QString::fromUtf8(latin1) << true;
|
||||
|
||||
QByteArray nonlatin1 = "Χαίρετε";
|
||||
QTest::newRow("shortnonlatin1")
|
||||
<< ("\x6e" + nonlatin1) << QString::fromUtf8(nonlatin1) << false;
|
||||
|
||||
// replicate it 4 times (total 56 bytes)
|
||||
nonlatin1 = nonlatin1 + nonlatin1 + nonlatin1 + nonlatin1;
|
||||
QTest::newRow("longnonlatin1")
|
||||
<< ("\x78\x38" + nonlatin1) << QString::fromUtf8(nonlatin1) << false;
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::nonAsciiStrings()
|
||||
{
|
||||
QFETCH(QByteArray, output);
|
||||
QFETCH(QString, input);
|
||||
QFETCH(bool, isLatin1);
|
||||
QFETCH_GLOBAL(bool, useDevice);
|
||||
|
||||
// will be wrong if !isLatin1
|
||||
QByteArray latin1 = input.toLatin1();
|
||||
|
||||
if (useDevice) {
|
||||
{
|
||||
QBuffer buffer;
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
QCborStreamWriter writer(&buffer);
|
||||
writer.append(input);
|
||||
QCOMPARE(buffer.data(), output);
|
||||
}
|
||||
|
||||
if (isLatin1) {
|
||||
QBuffer buffer;
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
QCborStreamWriter writer(&buffer);
|
||||
writer.append(QLatin1String(latin1.constData(), latin1.size()));
|
||||
QCOMPARE(buffer.data(), output);
|
||||
}
|
||||
} else {
|
||||
{
|
||||
QByteArray buffer;
|
||||
QCborStreamWriter writer(&buffer);
|
||||
encodeVariant(writer, input);
|
||||
QCOMPARE(buffer, output);
|
||||
}
|
||||
|
||||
if (isLatin1) {
|
||||
QByteArray buffer;
|
||||
QCborStreamWriter writer(&buffer);
|
||||
writer.append(QLatin1String(latin1.constData(), latin1.size()));
|
||||
QCOMPARE(buffer, output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::arraysAndMaps_data()
|
||||
{
|
||||
addColumns();
|
||||
addArraysAndMaps();
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::tags_data()
|
||||
{
|
||||
addColumns();
|
||||
addFixedData();
|
||||
addStringsData();
|
||||
addArraysAndMaps();
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::tags()
|
||||
{
|
||||
QFETCH(QVariant, input);
|
||||
QFETCH(QByteArray, output);
|
||||
|
||||
compare(QVariant::fromValue(Tag{1, input}), "\xc1" + output);
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::arrays()
|
||||
{
|
||||
QFETCH(QVariant, input);
|
||||
QFETCH(QByteArray, output);
|
||||
|
||||
compare(make_list(input), "\x81" + output);
|
||||
if (QTest::currentTestFailed())
|
||||
return;
|
||||
|
||||
compare(make_list(input, input), "\x82" + output + output);
|
||||
if (QTest::currentTestFailed())
|
||||
return;
|
||||
|
||||
// nested lists
|
||||
compare(make_list(make_list(input)), "\x81\x81" + output);
|
||||
if (QTest::currentTestFailed())
|
||||
return;
|
||||
|
||||
compare(make_list(make_list(input), make_list(input)), "\x82\x81" + output + "\x81" + output);
|
||||
}
|
||||
|
||||
void tst_QCborStreamWriter::maps()
|
||||
{
|
||||
QFETCH(QVariant, input);
|
||||
QFETCH(QByteArray, output);
|
||||
|
||||
compare(make_map({{1, input}}), "\xa1\1" + output);
|
||||
if (QTest::currentTestFailed())
|
||||
return;
|
||||
|
||||
compare(make_map({{1, input}, {input, 24}}), "\xa2\1" + output + output + "\x18\x18");
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QCborStreamWriter)
|
||||
|
||||
#include "tst_qcborstreamwriter.moc"
|
16
tests/auto/corelib/serialization/qcborvalue/CMakeLists.txt
Normal file
16
tests/auto/corelib/serialization/qcborvalue/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_qcborvalue Test:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_test(tst_qcborvalue
|
||||
SOURCES
|
||||
tst_qcborvalue.cpp
|
||||
INCLUDE_DIRECTORIES
|
||||
../../../../../src/3rdparty/tinycbor/src
|
||||
../../../../../src/3rdparty/tinycbor/tests/parser
|
||||
LIBRARIES
|
||||
Qt::CorePrivate
|
||||
)
|
3078
tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp
Normal file
3078
tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_qcborvalue_json Test:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_test(tst_qcborvalue_json
|
||||
SOURCES
|
||||
tst_qcborvalue_json.cpp
|
||||
)
|
@ -0,0 +1,317 @@
|
||||
// Copyright (C) 2018 Intel Corporation.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#include <QtCore/qcborvalue.h>
|
||||
#include <QTest>
|
||||
#include <QJsonValue>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonArray>
|
||||
#include <QVariant>
|
||||
#include <QVariantMap>
|
||||
#include <QVariantList>
|
||||
|
||||
Q_DECLARE_METATYPE(QCborValue)
|
||||
|
||||
class tst_QCborValue_Json : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void toVariant_data();
|
||||
void toVariant();
|
||||
void toJson_data() { toVariant_data(); }
|
||||
void toJson();
|
||||
void taggedByteArrayToJson_data();
|
||||
void taggedByteArrayToJson();
|
||||
|
||||
void fromVariant_data() { toVariant_data(); }
|
||||
void fromVariant();
|
||||
void fromJson_data();
|
||||
void fromJson();
|
||||
|
||||
void nonStringKeysInMaps_data();
|
||||
void nonStringKeysInMaps();
|
||||
};
|
||||
|
||||
void tst_QCborValue_Json::toVariant_data()
|
||||
{
|
||||
QTest::addColumn<QCborValue>("v");
|
||||
QTest::addColumn<QVariant>("variant");
|
||||
QTest::addColumn<QJsonValue>("json");
|
||||
QDateTime dt = QDateTime::currentDateTimeUtc();
|
||||
QUuid uuid = QUuid::createUuid();
|
||||
|
||||
QMetaEnum me = QMetaEnum::fromType<QCborValue::Type>();
|
||||
auto add = [me](const QCborValue &v, const QVariant &exp, const QJsonValue &json) {
|
||||
auto addRow = [=]() -> QTestData & {
|
||||
const char *typeString = me.valueToKey(v.type());
|
||||
if (v.type() == QCborValue::Integer)
|
||||
return QTest::addRow("Integer:%lld", exp.toLongLong());
|
||||
if (v.type() == QCborValue::Double)
|
||||
return QTest::addRow("Double:%g", exp.toDouble());
|
||||
if (v.type() == QCborValue::ByteArray || v.type() == QCborValue::String)
|
||||
return QTest::addRow("%s:%zd", typeString, size_t(exp.toString().size()));
|
||||
if (v.type() >= 0x10000)
|
||||
return QTest::newRow(exp.typeName());
|
||||
return QTest::newRow(typeString);
|
||||
};
|
||||
addRow() << v << exp << json;
|
||||
};
|
||||
|
||||
// good JSON matching:
|
||||
add(QCborValue(), QVariant(), QJsonValue::Null);
|
||||
add(nullptr, QVariant::fromValue(nullptr), QJsonValue::Null);
|
||||
add(false, false, false);
|
||||
add(true, true, true);
|
||||
add(0, 0, 0);
|
||||
add(1, 1, 1);
|
||||
add(-1, -1, -1);
|
||||
add(0., 0., 0.);
|
||||
add(2., 2., 2.);
|
||||
add(1.25, 1.25, 1.25);
|
||||
add(-1.25, -1.25, -1.25);
|
||||
add("Hello", "Hello", "Hello");
|
||||
add(std::numeric_limits<qint64>::max(), std::numeric_limits<qint64>::max(), std::numeric_limits<qint64>::max());
|
||||
add(std::numeric_limits<qint64>::min(), std::numeric_limits<qint64>::min(), std::numeric_limits<qint64>::min());
|
||||
|
||||
// converts to string in JSON:
|
||||
add(QByteArray("Hello"), QByteArray("Hello"), "SGVsbG8");
|
||||
add(QCborValue(dt), dt, dt.toString(Qt::ISODateWithMs));
|
||||
add(QCborValue(QUrl("http://example.com/{q}")), QUrl("http://example.com/{q}"),
|
||||
"http://example.com/%7Bq%7D"); // note the encoded form in JSON
|
||||
add(QCborValue(QRegularExpression(".")), QRegularExpression("."), ".");
|
||||
add(QCborValue(uuid), uuid, uuid.toString(QUuid::WithoutBraces));
|
||||
|
||||
// not valid in JSON
|
||||
QTest::newRow("simpletype") << QCborValue(QCborSimpleType(255))
|
||||
<< QVariant::fromValue(QCborSimpleType(255))
|
||||
<< QJsonValue("simple(255)");
|
||||
QTest::newRow("Double:inf") << QCborValue(qInf())
|
||||
<< QVariant(qInf())
|
||||
<< QJsonValue();
|
||||
QTest::newRow("Double:-inf") << QCborValue(-qInf())
|
||||
<< QVariant(-qInf())
|
||||
<< QJsonValue();
|
||||
QTest::newRow("Double:nan") << QCborValue(qQNaN())
|
||||
<< QVariant(qQNaN())
|
||||
<< QJsonValue();
|
||||
|
||||
// empty arrays and maps
|
||||
add(QCborArray(), QVariantList(), QJsonArray());
|
||||
add(QCborMap(), QVariantMap(), QJsonObject());
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::toVariant()
|
||||
{
|
||||
QFETCH(QCborValue, v);
|
||||
QFETCH(QVariant, variant);
|
||||
|
||||
if (qIsNaN(variant.toDouble())) {
|
||||
// because NaN != NaN, QVariant(NaN) != QVariant(NaN), so we
|
||||
// only need to compare the classification
|
||||
QVERIFY(qIsNaN(v.toVariant().toDouble()));
|
||||
|
||||
// the rest of this function depends on the variant comparison
|
||||
return;
|
||||
}
|
||||
|
||||
QCOMPARE(v.toVariant(), variant);
|
||||
if (variant.isValid()) {
|
||||
QVariant variant2 = QVariant::fromValue(v);
|
||||
QVERIFY(variant2.canConvert(variant.metaType()));
|
||||
QVERIFY(variant2.convert(variant.metaType()));
|
||||
QCOMPARE(variant2, variant);
|
||||
}
|
||||
|
||||
// tags get ignored:
|
||||
QCOMPARE(QCborValue(QCborKnownTags::Signature, v).toVariant(), variant);
|
||||
|
||||
// make arrays with this item
|
||||
QCOMPARE(QCborArray({v}).toVariantList(), QVariantList({variant}));
|
||||
QCOMPARE(QCborArray({v, v}).toVariantList(), QVariantList({variant, variant}));
|
||||
|
||||
// and maps
|
||||
QCOMPARE(QCborMap({{"foo", v}}).toVariantMap(), QVariantMap({{"foo", variant}}));
|
||||
QCOMPARE(QCborMap({{"foo", v}}).toVariantHash(), QVariantHash({{"foo", variant}}));
|
||||
|
||||
// finally, mixed
|
||||
QCOMPARE(QCborArray{QCborMap({{"foo", v}})}.toVariantList(),
|
||||
QVariantList{QVariantMap({{"foo", variant}})});
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::toJson()
|
||||
{
|
||||
QFETCH(QCborValue, v);
|
||||
QFETCH(QJsonValue, json);
|
||||
|
||||
QCOMPARE(v.toJsonValue(), json);
|
||||
QCOMPARE(QVariant::fromValue(v).toJsonValue(), json);
|
||||
|
||||
// most tags get ignored:
|
||||
QCOMPARE(QCborValue(QCborKnownTags::Signature, v).toJsonValue(), json);
|
||||
|
||||
// make arrays with this item
|
||||
QCOMPARE(QCborArray({v}).toJsonArray(), QJsonArray({json}));
|
||||
QCOMPARE(QCborArray({v, v}).toJsonArray(), QJsonArray({json, json}));
|
||||
|
||||
// and maps
|
||||
QCOMPARE(QCborMap({{"foo", v}}).toJsonObject(), QJsonObject({{"foo", json}}));
|
||||
|
||||
// finally, mixed
|
||||
QCOMPARE(QCborArray{QCborMap({{"foo", v}})}.toJsonArray(),
|
||||
QJsonArray{QJsonObject({{"foo", json}})});
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::taggedByteArrayToJson_data()
|
||||
{
|
||||
QTest::addColumn<QCborValue>("v");
|
||||
QTest::addColumn<QJsonValue>("json");
|
||||
|
||||
QByteArray data("\xff\x01");
|
||||
QTest::newRow("base64url") << QCborValue(QCborKnownTags::ExpectedBase64url, data) << QJsonValue("_wE");
|
||||
QTest::newRow("base64") << QCborValue(QCborKnownTags::ExpectedBase64, data) << QJsonValue("/wE=");
|
||||
QTest::newRow("hex") << QCborValue(QCborKnownTags::ExpectedBase16, data) << QJsonValue("ff01");
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::taggedByteArrayToJson()
|
||||
{
|
||||
QFETCH(QCborValue, v);
|
||||
QFETCH(QJsonValue, json);
|
||||
|
||||
QCOMPARE(v.toJsonValue(), json);
|
||||
QCOMPARE(QCborArray({v}).toJsonArray(), QJsonArray({json}));
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::fromVariant()
|
||||
{
|
||||
QFETCH(QCborValue, v);
|
||||
QFETCH(QVariant, variant);
|
||||
|
||||
QCOMPARE(QCborValue::fromVariant(variant), v);
|
||||
QCOMPARE(variant.value<QCborValue>(), v);
|
||||
|
||||
// try arrays
|
||||
QCOMPARE(QCborArray::fromVariantList({variant}), QCborArray{v});
|
||||
QCOMPARE(QCborArray::fromVariantList({variant, variant}), QCborArray({v, v}));
|
||||
|
||||
if (variant.metaType() == QMetaType(QMetaType::QString)) {
|
||||
QString s = variant.toString();
|
||||
QCOMPARE(QCborArray::fromStringList({s}), QCborArray{v});
|
||||
QCOMPARE(QCborArray::fromStringList({s, s}), QCborArray({v, v}));
|
||||
}
|
||||
|
||||
// maps...
|
||||
QVariantMap map{{"foo", variant}};
|
||||
QCOMPARE(QCborMap::fromVariantMap(map), QCborMap({{"foo", v}}));
|
||||
QCOMPARE(QCborMap::fromVariantHash({{"foo", variant}}), QCborMap({{"foo", v}}));
|
||||
|
||||
// nested
|
||||
QVariantMap outer{{"bar", QVariantList{0, map, true}}};
|
||||
QCOMPARE(QCborMap::fromVariantMap(outer),
|
||||
QCborMap({{"bar", QCborArray{0, QCborMap{{"foo", v}}, true}}}));
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::fromJson_data()
|
||||
{
|
||||
QTest::addColumn<QCborValue>("v");
|
||||
QTest::addColumn<QJsonValue>("json");
|
||||
|
||||
QTest::newRow("null") << QCborValue(QCborValue::Null) << QJsonValue(QJsonValue::Null);
|
||||
QTest::newRow("false") << QCborValue(false) << QJsonValue(false);
|
||||
QTest::newRow("true") << QCborValue(true) << QJsonValue(true);
|
||||
QTest::newRow("0") << QCborValue(0) << QJsonValue(0.);
|
||||
QTest::newRow("1") << QCborValue(1) << QJsonValue(1);
|
||||
QTest::newRow("1.5") << QCborValue(1.5) << QJsonValue(1.5);
|
||||
QTest::newRow("Integer:max") << QCborValue(std::numeric_limits<qint64>::max())
|
||||
<< QJsonValue(std::numeric_limits<qint64>::max());
|
||||
QTest::newRow("Integer:min") << QCborValue(std::numeric_limits<qint64>::min())
|
||||
<< QJsonValue(std::numeric_limits<qint64>::min());
|
||||
QTest::newRow("string") << QCborValue("Hello") << QJsonValue("Hello");
|
||||
QTest::newRow("array") << QCborValue(QCborValue::Array) << QJsonValue(QJsonValue::Array);
|
||||
QTest::newRow("map") << QCborValue(QCborValue::Map) << QJsonValue(QJsonValue::Object);
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::fromJson()
|
||||
{
|
||||
QFETCH(QCborValue, v);
|
||||
QFETCH(QJsonValue, json);
|
||||
|
||||
QCOMPARE(QCborValue::fromJsonValue(json), v);
|
||||
QCOMPARE(QVariant(json).value<QCborValue>(), v);
|
||||
QCOMPARE(QCborArray::fromJsonArray({json}), QCborArray({v}));
|
||||
QCOMPARE(QCborArray::fromJsonArray({json, json}), QCborArray({v, v}));
|
||||
QCOMPARE(QCborMap::fromJsonObject({{"foo", json}}), QCborMap({{"foo", v}}));
|
||||
|
||||
// confirm we can roundtrip back to JSON
|
||||
QCOMPARE(QCborValue::fromJsonValue(json).toJsonValue(), json);
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::nonStringKeysInMaps_data()
|
||||
{
|
||||
QTest::addColumn<QCborValue>("key");
|
||||
QTest::addColumn<QString>("converted");
|
||||
|
||||
auto add = [](const char *str, const QCborValue &v) {
|
||||
QTest::newRow(str) << v << str;
|
||||
};
|
||||
add("0", 0);
|
||||
add("-1", -1);
|
||||
add("false", false);
|
||||
add("true", true);
|
||||
add("null", nullptr);
|
||||
add("undefined", {}); // should this be ""?
|
||||
add("simple(255)", QCborSimpleType(255));
|
||||
add("2.5", 2.5);
|
||||
|
||||
QByteArray data("\xff\x01");
|
||||
QTest::newRow("bytearray") << QCborValue(data) << "_wE";
|
||||
QTest::newRow("base64url") << QCborValue(QCborKnownTags::ExpectedBase64url, data) << "_wE";
|
||||
QTest::newRow("base64") << QCborValue(QCborKnownTags::ExpectedBase64, data) << "/wE=";
|
||||
QTest::newRow("hex") << QCborValue(QCborKnownTags::ExpectedBase16, data) << "ff01";
|
||||
|
||||
QTest::newRow("emptyarray") << QCborValue(QCborValue::Array) << "[]";
|
||||
QTest::newRow("emptymap") << QCborValue(QCborValue::Map) << "{}";
|
||||
QTest::newRow("array") << QCborValue(QCborArray{1, true, 2.5, "Hello"})
|
||||
<< "[1, true, 2.5, \"Hello\"]";
|
||||
QTest::newRow("map") << QCborValue(QCborMap{{"Hello", 0}, {0, "Hello"}})
|
||||
<< "{\"Hello\": 0, 0: \"Hello\"}";
|
||||
|
||||
QDateTime dt = QDateTime::currentDateTimeUtc();
|
||||
QUrl url("https://example.com");
|
||||
QUuid uuid = QUuid::createUuid();
|
||||
QTest::newRow("QDateTime") << QCborValue(dt) << dt.toString(Qt::ISODateWithMs);
|
||||
QTest::newRow("QUrl") << QCborValue(url) << url.toString(QUrl::FullyEncoded);
|
||||
QTest::newRow("QRegularExpression") << QCborValue(QRegularExpression(".*")) << ".*";
|
||||
QTest::newRow("QUuid") << QCborValue(uuid) << uuid.toString(QUuid::WithoutBraces);
|
||||
}
|
||||
|
||||
void tst_QCborValue_Json::nonStringKeysInMaps()
|
||||
{
|
||||
QFETCH(QCborValue, key);
|
||||
QFETCH(QString, converted);
|
||||
|
||||
QCborMap m;
|
||||
m.insert(key, 0);
|
||||
|
||||
{
|
||||
QVariantMap vm = m.toVariantMap();
|
||||
auto it = vm.begin();
|
||||
QVERIFY(it != vm.end());
|
||||
QCOMPARE(it.key(), converted);
|
||||
QCOMPARE(it.value(), 0);
|
||||
QCOMPARE(++it, vm.end());
|
||||
}
|
||||
|
||||
{
|
||||
QJsonObject o = m.toJsonObject();
|
||||
auto it = o.begin();
|
||||
QVERIFY(it != o.end());
|
||||
QCOMPARE(it.key(), converted);
|
||||
QCOMPARE(it.value(), 0);
|
||||
QCOMPARE(++it, o.end());
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QCborValue_Json)
|
||||
|
||||
#include "tst_qcborvalue_json.moc"
|
18
tests/auto/corelib/serialization/qdatastream/CMakeLists.txt
Normal file
18
tests/auto/corelib/serialization/qdatastream/CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_qdatastream Test:
|
||||
#####################################################################
|
||||
|
||||
# Collect test data
|
||||
list(APPEND test_data "datastream.q42")
|
||||
list(APPEND test_data "typedef.q5")
|
||||
|
||||
qt_internal_add_test(tst_qdatastream
|
||||
SOURCES
|
||||
tst_qdatastream.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
TESTDATA ${test_data}
|
||||
)
|
BIN
tests/auto/corelib/serialization/qdatastream/datastream.q42
Normal file
BIN
tests/auto/corelib/serialization/qdatastream/datastream.q42
Normal file
Binary file not shown.
@ -0,0 +1,28 @@
|
||||
// Copyright (C) 2021 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
|
||||
#include <QDataStream>
|
||||
#include <QPair>
|
||||
#include <QFile>
|
||||
#include <QVariant>
|
||||
#include <QDebug>
|
||||
|
||||
using CustomPair = QPair<int, int>;
|
||||
QDataStream &operator<<(QDataStream &ds, CustomPair pd)
|
||||
{ return ds << pd.first << pd.second; }
|
||||
QDataStream &operator>>(QDataStream &ds, CustomPair &pd)
|
||||
{ return ds >> pd.first >> pd.second; }
|
||||
Q_DECLARE_METATYPE(CustomPair)
|
||||
|
||||
|
||||
int main() {
|
||||
qRegisterMetaTypeStreamOperators<CustomPair>();
|
||||
QFile out("typedef.q5");
|
||||
out.open(QIODevice::ReadWrite);
|
||||
QDataStream stream(&out);
|
||||
stream.setVersion(QDataStream::Qt_5_15);
|
||||
CustomPair p {42, 100};
|
||||
qDebug() << p.first << p.second;
|
||||
stream << QVariant::fromValue(p);
|
||||
}
|
3898
tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
Normal file
3898
tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp
Normal file
File diff suppressed because it is too large
Load Diff
BIN
tests/auto/corelib/serialization/qdatastream/typedef.q5
Normal file
BIN
tests/auto/corelib/serialization/qdatastream/typedef.q5
Normal file
Binary file not shown.
@ -0,0 +1,13 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_qdatastream_core_pixmap Test:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_test(tst_qdatastream_core_pixmap
|
||||
SOURCES
|
||||
tst_qdatastream_core_pixmap.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
)
|
@ -0,0 +1,42 @@
|
||||
// Copyright (C) 2019 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QTest>
|
||||
#include <QtGui/QPixmap>
|
||||
#include <QtGui/QImage>
|
||||
|
||||
class tst_QDataStream : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
void stream_with_pixmap();
|
||||
};
|
||||
|
||||
void tst_QDataStream::stream_with_pixmap()
|
||||
{
|
||||
// This is a QVariantMap with a 3x3 red QPixmap and two strings inside
|
||||
const QByteArray ba = QByteArray::fromBase64(
|
||||
"AAAAAwAAAAIAegAAAAoAAAAACgB0AGgAZQByAGUAAAACAHAAAABBAAAAAAGJUE5H"
|
||||
"DQoaCgAAAA1JSERSAAAAAwAAAAMIAgAAANlKIugAAAAJcEhZcwAADsQAAA7EAZUr"
|
||||
"DhsAAAAQSURBVAiZY/zPAAVMDJgsAB1bAQXZn5ieAAAAAElFTkSuQmCCAAAAAgBh"
|
||||
"AAAACgAAAAAKAGgAZQBsAGwAbw==");
|
||||
QImage dummy; // Needed to make sure qtGui is loaded
|
||||
|
||||
QTest::ignoreMessage(QtWarningMsg, "QPixmap::fromImageInPlace: "
|
||||
"QPixmap cannot be created without a QGuiApplication");
|
||||
|
||||
QVariantMap map;
|
||||
QDataStream d(ba);
|
||||
d.setVersion(QDataStream::Qt_5_12);
|
||||
d >> map;
|
||||
|
||||
QCOMPARE(map["a"].toString(), QString("hello"));
|
||||
// The pixmap is null because this is not a QGuiApplication:
|
||||
QCOMPARE(map["p"].value<QPixmap>(), QPixmap());
|
||||
QCOMPARE(map["z"].toString(), QString("there"));
|
||||
}
|
||||
|
||||
QTEST_GUILESS_MAIN(tst_QDataStream)
|
||||
|
||||
#include "tst_qdatastream_core_pixmap.moc"
|
9
tests/auto/corelib/serialization/qtextstream/BLACKLIST
Normal file
9
tests/auto/corelib/serialization/qtextstream/BLACKLIST
Normal file
@ -0,0 +1,9 @@
|
||||
[stillOpenWhenAtEnd]
|
||||
windows-7sp1
|
||||
# QTBUG-87410
|
||||
[readStdin]
|
||||
android
|
||||
[readAllFromStdin]
|
||||
android
|
||||
[readLineFromStdin]
|
||||
android
|
@ -0,0 +1,7 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
add_subdirectory(test)
|
||||
add_subdirectory(stdinProcess)
|
||||
add_subdirectory(readAllStdinProcess)
|
||||
add_subdirectory(readLineStdinProcess)
|
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource prefix="/tst_textstream/">
|
||||
<file>resources/big_endian/</file>
|
||||
<file>resources/little_endian/</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -0,0 +1,7 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource prefix="/">
|
||||
<file>rfc3261.txt</file>
|
||||
<file>task113817.txt</file>
|
||||
<file>tst_qtextstream.cpp</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -0,0 +1,13 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## readAllStdinProcess Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_executable(readAllStdinProcess
|
||||
INSTALL_DIRECTORY "${INSTALL_TESTSDIR}/tst_qtextstream/readAllStdinProcess"
|
||||
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/"
|
||||
SOURCES
|
||||
main.cpp
|
||||
)
|
@ -0,0 +1,13 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
|
||||
#include <QtCore/QTextStream>
|
||||
#include <QtCore/QString>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
fprintf(stderr, "%s\n", QTextStream(stdin).readAll().toLatin1().constData());
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## readLineStdinProcess Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_executable(readLineStdinProcess
|
||||
INSTALL_DIRECTORY "${INSTALL_TESTSDIR}/tst_qtextstream/readLineStdinProcess"
|
||||
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/"
|
||||
SOURCES
|
||||
main.cpp
|
||||
)
|
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
|
||||
#include <QtCore/QCoreApplication>
|
||||
#include <QtCore/QTextStream>
|
||||
#include <QtCore/QString>
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QCoreApplication a(argc, argv);
|
||||
QTextStream qin(stdin);
|
||||
QTextStream qerr(stderr);
|
||||
QString line;
|
||||
do {
|
||||
line = qin.readLine();
|
||||
if (!line.isNull())
|
||||
qerr << line << Qt::flush;
|
||||
} while (!line.isNull());
|
||||
return 0;
|
||||
}
|
@ -0,0 +1 @@
|
||||
foo
|
@ -0,0 +1,2 @@
|
||||
foo
|
||||
bar
|
@ -0,0 +1 @@
|
||||
cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv
|
@ -0,0 +1 @@
|
||||
foo
|
@ -0,0 +1,2 @@
|
||||
foo
|
||||
bar
|
@ -0,0 +1 @@
|
||||
cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD>
|
@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD>
|
@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
foo
|
@ -0,0 +1,2 @@
|
||||
foo
|
||||
bar
|
@ -0,0 +1 @@
|
||||
cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv
|
@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD>
|
@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
A
|
@ -0,0 +1 @@
|
||||
B
|
@ -0,0 +1 @@
|
||||
Z
|
@ -0,0 +1 @@
|
||||
z
|
@ -0,0 +1 @@
|
||||
@
|
@ -0,0 +1 @@
|
||||
A
|
@ -0,0 +1 @@
|
||||
B
|
@ -0,0 +1 @@
|
||||
Z
|
@ -0,0 +1 @@
|
||||
z
|
@ -0,0 +1 @@
|
||||
@
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
A
|
@ -0,0 +1 @@
|
||||
B
|
@ -0,0 +1 @@
|
||||
Z
|
@ -0,0 +1 @@
|
||||
z
|
@ -0,0 +1 @@
|
||||
@
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user