diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-08-25 09:06:54 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-09-29 21:46:19 +0000 |
commit | c35eff2ace00a8d4b8cc31ab5b63ec79b96cc07c (patch) | |
tree | 2326731d86ff01ad89c8915bf207a71d3132a961 /src/testlib/qtest_network.h | |
parent | 157ee01a8d0be9a4dbac03883c9eaf3609fc1172 (diff) |
Add qtest_network.h
... and move toString() implementations there which were repeated in
network tests, or #ifdef'ed in qtest.h.
Since the functions moved from network tests are now in a public header,
had to massage them a bit to pass headersclean:
- replace Q_FOREACH with C++11 range-for
- avoid implicit conversion from QByteArray -> const char* (done by
re-using toString(QByteArray) instead of calling strdup() manually)
Also made the functions overloads instead of specializations. This
allows to pass the enum by value instead of by const-&.
Like the existing QHostAddress, the newly-added toString() overloads are
marked as \internal. We can decide later whether to turn them into
public API.
Change-Id: I8c23db7a0a6575273567017d42d7b2a957acece8
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Diffstat (limited to 'src/testlib/qtest_network.h')
-rw-r--r-- | src/testlib/qtest_network.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/testlib/qtest_network.h b/src/testlib/qtest_network.h new file mode 100644 index 0000000000..6f6b4c1b8e --- /dev/null +++ b/src/testlib/qtest_network.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtTest module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEST_NETWORK_H +#define QTEST_NETWORK_H + +#include <QtTest/qtest.h> + +// enable NETWORK features +#ifndef QT_NETWORK_LIB +#define QT_NETWORK_LIB +#endif + +#if 0 +#pragma qt_class(QtTestNetwork) +#endif + +#include <QtNetwork/QHostAddress> +#include <QtNetwork/QNetworkCookie> +#include <QtNetwork/QNetworkReply> + +#if 0 +// inform syncqt +#pragma qt_no_master_include +#endif + +QT_BEGIN_NAMESPACE + +namespace QTest +{ +/*! + \internal + */ +inline char *toString(const QHostAddress &addr) +{ + switch (addr.protocol()) { + case QAbstractSocket::UnknownNetworkLayerProtocol: + return qstrdup("<unknown address (parse error)>"); + case QAbstractSocket::AnyIPProtocol: + return qstrdup("QHostAddress::Any"); + case QAbstractSocket::IPv4Protocol: + case QAbstractSocket::IPv6Protocol: + break; + } + + return toString(addr.toString()); +} + +/*! + \internal + */ +inline char *toString(QNetworkReply::NetworkError code) +{ + const QMetaObject *mo = &QNetworkReply::staticMetaObject; + int index = mo->indexOfEnumerator("NetworkError"); + if (index == -1) + return qstrdup(""); + + QMetaEnum qme = mo->enumerator(index); + return qstrdup(qme.valueToKey(code)); +} + +/*! + \internal + */ +inline char *toString(const QNetworkCookie &cookie) +{ + return toString(cookie.toRawForm()); +} + +/*! + \internal + */ +inline char *toString(const QList<QNetworkCookie> &list) +{ + QByteArray result = "QList("; + if (!list.isEmpty()) { + for (const QNetworkCookie &cookie : list) + result += "QNetworkCookie(" + cookie.toRawForm() + "), "; + result.chop(2); // remove trailing ", " + } + result.append(')'); + return toString(result); +} + +} // namespace QTest + +QT_END_NAMESPACE + +#endif |