Fix default-constructed QFileSystemEntry
Member variables for lastSeparator, first and lastDotInFileName are now initialized to -1 (non-existing), where the previous value of zero would mean a separator/dot at that position and resulted in path() returning '/', instead of '.'. Tests were expanded for better coverage of empty state and default-constructed instances. Change-Id: Ie27547886b52224d38b5be0b4f920c9927fd440f Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
This commit is contained in:
parent
ba2c485c55
commit
0c2b7b1020
@ -75,9 +75,9 @@ static inline QString fixIfRelativeUncPath(const QString &path)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
QFileSystemEntry::QFileSystemEntry()
|
QFileSystemEntry::QFileSystemEntry()
|
||||||
: m_lastSeparator(0),
|
: m_lastSeparator(-1),
|
||||||
m_firstDotInFileName(0),
|
m_firstDotInFileName(-1),
|
||||||
m_lastDotInFileName(0)
|
m_lastDotInFileName(-1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ private slots:
|
|||||||
#endif
|
#endif
|
||||||
void isClean_data();
|
void isClean_data();
|
||||||
void isClean();
|
void isClean();
|
||||||
|
void defaultCtor();
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
@ -169,10 +170,16 @@ void tst_QFileSystemEntry::getSetCheck_data()
|
|||||||
QTest::addColumn<QString>("completeSuffix");
|
QTest::addColumn<QString>("completeSuffix");
|
||||||
QTest::addColumn<bool>("absolute");
|
QTest::addColumn<bool>("absolute");
|
||||||
|
|
||||||
|
QTest::newRow("empty")
|
||||||
|
<< QByteArray()
|
||||||
|
<< QString()
|
||||||
|
<< QString() << QString() << QString() << QString() << QString() << false;
|
||||||
|
|
||||||
QTest::newRow("simple")
|
QTest::newRow("simple")
|
||||||
<< QByteArray("/home/qt/in/a/dir.tar.gz")
|
<< QByteArray("/home/qt/in/a/dir.tar.gz")
|
||||||
<< "/home/qt/in/a/dir.tar.gz"
|
<< "/home/qt/in/a/dir.tar.gz"
|
||||||
<< "dir.tar.gz" << "dir" << "dir.tar" << "gz" << "tar.gz" << true;
|
<< "dir.tar.gz" << "dir" << "dir.tar" << "gz" << "tar.gz" << true;
|
||||||
|
|
||||||
QTest::newRow("relative")
|
QTest::newRow("relative")
|
||||||
<< QByteArray("in/a/dir.tar.gz")
|
<< QByteArray("in/a/dir.tar.gz")
|
||||||
<< "in/a/dir.tar.gz"
|
<< "in/a/dir.tar.gz"
|
||||||
@ -235,6 +242,7 @@ void tst_QFileSystemEntry::suffix_data()
|
|||||||
QTest::addColumn<QString>("file");
|
QTest::addColumn<QString>("file");
|
||||||
QTest::addColumn<QString>("expected");
|
QTest::addColumn<QString>("expected");
|
||||||
|
|
||||||
|
QTest::newRow("empty") << QString() << QString();
|
||||||
QTest::newRow("noextension0") << "file" << "";
|
QTest::newRow("noextension0") << "file" << "";
|
||||||
QTest::newRow("noextension1") << "/path/to/file" << "";
|
QTest::newRow("noextension1") << "/path/to/file" << "";
|
||||||
QTest::newRow("data0") << "file.tar" << "tar";
|
QTest::newRow("data0") << "file.tar" << "tar";
|
||||||
@ -273,6 +281,7 @@ void tst_QFileSystemEntry::completeSuffix_data()
|
|||||||
QTest::addColumn<QString>("file");
|
QTest::addColumn<QString>("file");
|
||||||
QTest::addColumn<QString>("expected");
|
QTest::addColumn<QString>("expected");
|
||||||
|
|
||||||
|
QTest::newRow("empty") << QString() << QString();
|
||||||
QTest::newRow("noextension0") << "file" << "";
|
QTest::newRow("noextension0") << "file" << "";
|
||||||
QTest::newRow("noextension1") << "/path/to/file" << "";
|
QTest::newRow("noextension1") << "/path/to/file" << "";
|
||||||
QTest::newRow("data0") << "file.tar" << "tar";
|
QTest::newRow("data0") << "file.tar" << "tar";
|
||||||
@ -302,6 +311,7 @@ void tst_QFileSystemEntry::baseName_data()
|
|||||||
QTest::addColumn<QString>("file");
|
QTest::addColumn<QString>("file");
|
||||||
QTest::addColumn<QString>("expected");
|
QTest::addColumn<QString>("expected");
|
||||||
|
|
||||||
|
QTest::newRow("empty") << QString() << QString();
|
||||||
QTest::newRow("data0") << "file.tar" << "file";
|
QTest::newRow("data0") << "file.tar" << "file";
|
||||||
QTest::newRow("data1") << "file.tar.gz" << "file";
|
QTest::newRow("data1") << "file.tar.gz" << "file";
|
||||||
QTest::newRow("data2") << "/path/file/file.tar.gz" << "file";
|
QTest::newRow("data2") << "/path/file/file.tar.gz" << "file";
|
||||||
@ -330,6 +340,7 @@ void tst_QFileSystemEntry::completeBaseName_data()
|
|||||||
QTest::addColumn<QString>("file");
|
QTest::addColumn<QString>("file");
|
||||||
QTest::addColumn<QString>("expected");
|
QTest::addColumn<QString>("expected");
|
||||||
|
|
||||||
|
QTest::newRow("empty") << QString() << QString();
|
||||||
QTest::newRow("data0") << "file.tar" << "file";
|
QTest::newRow("data0") << "file.tar" << "file";
|
||||||
QTest::newRow("data1") << "file.tar.gz" << "file.tar";
|
QTest::newRow("data1") << "file.tar.gz" << "file.tar";
|
||||||
QTest::newRow("data2") << "/path/file/file.tar.gz" << "file.tar";
|
QTest::newRow("data2") << "/path/file/file.tar.gz" << "file.tar";
|
||||||
@ -360,6 +371,7 @@ void tst_QFileSystemEntry::absoluteOrRelative_data()
|
|||||||
QTest::addColumn<bool>("isAbsolute");
|
QTest::addColumn<bool>("isAbsolute");
|
||||||
QTest::addColumn<bool>("isRelative");
|
QTest::addColumn<bool>("isRelative");
|
||||||
|
|
||||||
|
QTest::newRow("empty") << QString() << false << true;
|
||||||
QTest::newRow("data0") << "file.tar" << false << true;
|
QTest::newRow("data0") << "file.tar" << false << true;
|
||||||
QTest::newRow("data1") << "/path/file/file.tar.gz" << false << false;
|
QTest::newRow("data1") << "/path/file/file.tar.gz" << false << false;
|
||||||
QTest::newRow("data1") << "C:path/file/file.tar.gz" << false << false;
|
QTest::newRow("data1") << "C:path/file/file.tar.gz" << false << false;
|
||||||
@ -384,6 +396,7 @@ void tst_QFileSystemEntry::isClean_data()
|
|||||||
QTest::addColumn<QString>("path");
|
QTest::addColumn<QString>("path");
|
||||||
QTest::addColumn<bool>("isClean");
|
QTest::addColumn<bool>("isClean");
|
||||||
|
|
||||||
|
QTest::newRow("empty") << QString() << true;
|
||||||
QTest::newRow("simple") << "foo" << true;
|
QTest::newRow("simple") << "foo" << true;
|
||||||
QTest::newRow("complex") << "/foo/bar/bz" << true;
|
QTest::newRow("complex") << "/foo/bar/bz" << true;
|
||||||
QTest::newRow(".file") << "/foo/.file" << true;
|
QTest::newRow(".file") << "/foo/.file" << true;
|
||||||
@ -409,5 +422,33 @@ void tst_QFileSystemEntry::isClean()
|
|||||||
QCOMPARE(fi.isClean(), isClean);
|
QCOMPARE(fi.isClean(), isClean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QFileSystemEntry::defaultCtor()
|
||||||
|
{
|
||||||
|
QFileSystemEntry entry;
|
||||||
|
|
||||||
|
QVERIFY(entry.filePath().isNull());
|
||||||
|
QVERIFY(entry.nativeFilePath().isNull());
|
||||||
|
|
||||||
|
QVERIFY(entry.fileName().isNull());
|
||||||
|
QCOMPARE(entry.path(), QString("."));
|
||||||
|
|
||||||
|
QVERIFY(entry.baseName().isNull());
|
||||||
|
QVERIFY(entry.completeBaseName().isNull());
|
||||||
|
QVERIFY(entry.suffix().isNull());
|
||||||
|
QVERIFY(entry.completeSuffix().isNull());
|
||||||
|
|
||||||
|
QVERIFY(!entry.isAbsolute());
|
||||||
|
QVERIFY(entry.isRelative());
|
||||||
|
|
||||||
|
QVERIFY(entry.isClean());
|
||||||
|
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
QVERIFY(!entry.isDriveRoot());
|
||||||
|
#endif
|
||||||
|
QVERIFY(!entry.isRoot());
|
||||||
|
|
||||||
|
QVERIFY(entry.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QFileSystemEntry)
|
QTEST_MAIN(tst_QFileSystemEntry)
|
||||||
#include <tst_qfilesystementry.moc>
|
#include <tst_qfilesystementry.moc>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user