QLatin1String: add test

QLatin1String wasn't really tested except as a drive-by.
Unearthed a discrepancy with docs. Fixed the docs.

Change-Id: I1246bb33888132edbc4e22da792a480a156357bf
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit is contained in:
Marc Mutz 2015-10-18 15:50:05 +02:00
parent c9195ab36d
commit 85226dfed3
5 changed files with 127 additions and 5 deletions

View File

@ -8227,9 +8227,7 @@ QString &QString::setRawData(const QChar *unicode, int size)
/*! \fn QLatin1String::QLatin1String(const char *str) /*! \fn QLatin1String::QLatin1String(const char *str)
Constructs a QLatin1String object that stores \a str. Note that if Constructs a QLatin1String object that stores \a str.
\a str is 0, an empty string is created; this case is handled by
QString.
The string data is \e not copied. The caller must be able to The string data is \e not copied. The caller must be able to
guarantee that \a str will not be deleted or modified as long as guarantee that \a str will not be deleted or modified as long as
@ -8241,8 +8239,6 @@ QString &QString::setRawData(const QChar *unicode, int size)
/*! \fn QLatin1String::QLatin1String(const char *str, int size) /*! \fn QLatin1String::QLatin1String(const char *str, int size)
Constructs a QLatin1String object that stores \a str with \a size. Constructs a QLatin1String object that stores \a str with \a size.
Note that if \a str is 0, an empty string is created; this case
is handled by QString.
The string data is \e not copied. The caller must be able to The string data is \e not copied. The caller must be able to
guarantee that \a str will not be deleted or modified as long as guarantee that \a str will not be deleted or modified as long as

View File

@ -0,0 +1 @@
tst_qlatin1string

View File

@ -0,0 +1,8 @@
CONFIG += testcase parallel_test
TARGET = tst_qlatin1string
QT = core testlib
SOURCES = tst_qlatin1string.cpp
DEFINES += QT_NO_CAST_TO_ASCII
contains(QT_CONFIG,c++11): CONFIG += c++11 c++14
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0

View File

@ -0,0 +1,116 @@
/****************************************************************************
**
** Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
** Contact: http://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** 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 http://www.qt.io/terms-conditions. For further
** information use the contact form at http://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 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtTest/QtTest>
#include <QString>
class tst_QLatin1String : public QObject
{
Q_OBJECT
private Q_SLOTS:
void nullString();
void emptyString();
};
void tst_QLatin1String::nullString()
{
// from nullptr
{
const char *null = Q_NULLPTR;
QLatin1String l1(null);
QCOMPARE(static_cast<const void*>(l1.data()), static_cast<const void*>(Q_NULLPTR));
QCOMPARE(l1.size(), 0);
QString s = l1;
QVERIFY(s.isNull());
}
// from null QByteArray
{
const QByteArray null;
QVERIFY(null.isNull());
QLatin1String l1(null);
QEXPECT_FAIL("", "null QByteArrays become non-null QLatin1Strings...", Continue);
QCOMPARE(static_cast<const void*>(l1.data()), static_cast<const void*>(Q_NULLPTR));
QCOMPARE(l1.size(), 0);
QString s = l1;
QEXPECT_FAIL("", "null QByteArrays become non-null QLatin1Strings become non-null QStrings...", Continue);
QVERIFY(s.isNull());
}
}
void tst_QLatin1String::emptyString()
{
{
const char *empty = "";
QLatin1String l1(empty);
QCOMPARE(static_cast<const void*>(l1.data()), static_cast<const void*>(empty));
QCOMPARE(l1.size(), 0);
QString s = l1;
QVERIFY(s.isEmpty());
QVERIFY(!s.isNull());
}
{
const char *notEmpty = "foo";
QLatin1String l1(notEmpty, 0);
QCOMPARE(static_cast<const void*>(l1.data()), static_cast<const void*>(notEmpty));
QCOMPARE(l1.size(), 0);
QString s = l1;
QVERIFY(s.isEmpty());
QVERIFY(!s.isNull());
}
{
const QByteArray empty = "";
QLatin1String l1(empty);
QCOMPARE(static_cast<const void*>(l1.data()), static_cast<const void*>(empty.constData()));
QCOMPARE(l1.size(), 0);
QString s = l1;
QVERIFY(s.isEmpty());
QVERIFY(!s.isNull());
}
}
QTEST_APPLESS_MAIN(tst_QLatin1String)
#include "tst_qlatin1string.moc"

View File

@ -24,6 +24,7 @@ SUBDIRS=\
qhash \ qhash \
qhash_strictiterators \ qhash_strictiterators \
qhashfunctions \ qhashfunctions \
qlatin1string \
qline \ qline \
qlinkedlist \ qlinkedlist \
qlist \ qlist \