Exemple #1
0
QT_BEGIN_NAMESPACE

QString QFileInfoPrivate::getFileName(QAbstractFileEngine::FileName name) const
{
    if (cache_enabled && !fileNames[(int)name].isNull())
        return fileNames[(int)name];

    QString ret;
    if (fileEngine == 0) { // local file; use the QFileSystemEngine directly
        switch (name) {
        case QAbstractFileEngine::CanonicalName:
        case QAbstractFileEngine::CanonicalPathName: {
            QFileSystemEntry entry = QFileSystemEngine::canonicalName(fileEntry, metaData);
            if (cache_enabled) { // be smart and store both
                fileNames[QAbstractFileEngine::CanonicalName] = entry.filePath();
                fileNames[QAbstractFileEngine::CanonicalPathName] = entry.path();
            }
            if (name == QAbstractFileEngine::CanonicalName)
                ret = entry.filePath();
            else
                ret = entry.path();
            break;
        }
        case QAbstractFileEngine::LinkName:
            ret = QFileSystemEngine::getLinkTarget(fileEntry, metaData).filePath();
            break;
        case QAbstractFileEngine::BundleName:
            ret = QFileSystemEngine::bundleName(fileEntry);
            break;
        case QAbstractFileEngine::AbsoluteName:
        case QAbstractFileEngine::AbsolutePathName: {
            QFileSystemEntry entry = QFileSystemEngine::absoluteName(fileEntry);
            if (cache_enabled) { // be smart and store both
                fileNames[QAbstractFileEngine::AbsoluteName] = entry.filePath();
                fileNames[QAbstractFileEngine::AbsolutePathName] = entry.path();
            }
            if (name == QAbstractFileEngine::AbsoluteName)
                ret = entry.filePath();
            else
                ret = entry.path();
            break;
        }
        default:
            break;
        }
    } else {
        ret = fileEngine->fileName(name);
    }
    if (ret.isNull())
        ret = QLatin1String("");
    if (cache_enabled)
        fileNames[(int)name] = ret;
    return ret;
}
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());
}