Test and document QTest::toHexRepresentation()

It's not actually exercised by anything in our source tree, but is
potentially useful and has been part of the documented public API for
some time.  So mention that the caller is responsible for delete[]ing
its return and add a test that exercises it.

Task-number: QTPM-1385
Change-Id: Ifc5284b9eb1b678cf3c9708c681311e874838fc6
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
This commit is contained in:
Edward Welbourne 2018-10-15 19:51:46 +02:00
parent 47dc810724
commit 3e36fb641e
4 changed files with 85 additions and 4 deletions

View File

@ -1200,7 +1200,9 @@ char *formatString(const char *prefix, const char *suffix, size_t numArguments,
Returns a pointer to a string that is the string \a ba represented
as a space-separated sequence of hex characters. If the input is
considered too long, it is truncated. A trucation is indicated in
the returned string as an ellipsis at the end.
the returned string as an ellipsis at the end. The caller has
ownership of the returned pointer and must ensure it is later passed
to operator delete[].
\a length is the length of the string \a ba.
*/

View File

@ -0,0 +1,7 @@
CONFIG += testcase
QT = core testlib
SOURCES += tst_outformat.cpp
TARGET = outformat
include($$QT_SOURCE_TREE/src/testlib/selfcover.pri)

View File

@ -0,0 +1,71 @@
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** 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.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtTest/QtTest>
class tst_OutFormat : public QObject
{
Q_OBJECT
private slots:
void toHex_data() const;
void toHex() const;
// other formats of interest ?
};
void tst_OutFormat::toHex_data() const
{
QTest::addColumn<QByteArray>("raw");
QTest::addColumn<QByteArray>("hex");
QTest::newRow("empty") << QByteArray("") << QByteArray("");
QTest::newRow("long")
<< QByteArray("Truncates in ellipsis when more than fifty characters long")
<< QByteArray("54 72 75 6E 63 61 74 65 73 20 69 6E 20 65 6C 6C "
"69 70 73 69 73 20 77 68 65 6E 20 6D 6F 72 65 20 "
"74 68 61 6E 20 66 69 66 74 79 20 63 68 61 72 61 "
"63 74 ...");
QTest::newRow("spaces")
<< QByteArray(" \t\n\v\f\r") << QByteArray("20 09 0A 0B 0C 0D");
QTest::newRow("ASCII-escapes")
<< QByteArray("\a\b\\\"'\177") << QByteArray("07 08 5C 22 27 7F");
// These are the ISO Latin-15 &nbsp;, pound, Euro, ..., y-umlaut
QTest::newRow("8-bit-sampler")
<< QByteArray("\240\243\244\261\327\360\377") << QByteArray("A0 A3 A4 B1 D7 F0 FF");
}
void tst_OutFormat::toHex() const
{
QFETCH(QByteArray, raw);
QFETCH(QByteArray, hex);
QScopedArrayPointer<char> repr(QTest::toHexRepresentation(raw.constData(), raw.size()));
QCOMPARE(repr.data(), hex);
}
QTEST_APPLESS_MAIN(tst_OutFormat)
#include "tst_outformat.moc"

View File

@ -1,6 +1,7 @@
TEMPLATE=subdirs
SUBDIRS=\
TEMPLATE = subdirs
SUBDIRS = \
outformat \
qsignalspy \
selftests \
qtHaveModule(widgets):SUBDIRS += qabstractitemmodeltester
qtHaveModule(widgets): SUBDIRS += qabstractitemmodeltester