void testFromString() { QFETCH(QString, id); QFETCH(bool, valid); QFETCH(int, majorVersion); QFETCH(int, minorVersion); QFETCH(bool, isDebug); QFETCH(QString, arch); QFETCH(QString, compiler); #ifdef Q_OS_WIN QFETCH(QString, compilerVersion); #endif const ProbeABI abi = ProbeABI::fromString(id); QCOMPARE(abi.isValid(), valid); if (!valid) return; QCOMPARE(abi.majorQtVersion(), majorVersion); QCOMPARE(abi.minorQtVersion(), minorVersion); QCOMPARE(abi.architecture(), arch); if (abi.isDebugRelevant()) { QCOMPARE(abi.isDebug(), isDebug); } #ifdef Q_OS_WIN QCOMPARE(abi.compiler(), compiler); QCOMPARE(abi.compilerVersion(), compilerVersion); #else Q_UNUSED(compiler); #endif }
ProbeABI ProbeABI::fromString(const QString &id) { QStringList idParts = id.split('-'); if (idParts.size() < 2) return ProbeABI(); int index = 0; ProbeABI abi; // version static QRegExp versionRegExp("^qt(\\d+)\\_(\\d+)$"); if (versionRegExp.indexIn(idParts.value(index++)) != 0) return ProbeABI(); abi.setQtVersion(versionRegExp.cap(1).toInt(), versionRegExp.cap(2).toInt()); // compiler #ifdef Q_OS_WIN abi.setCompiler(idParts.value(index++)); if (abi.isVersionRelevant()) abi.setCompilerVersion(idParts.value(index++)); #endif if (idParts.size() != index + 1) return ProbeABI(); // architecture / debug/release const QString postfix = QStringLiteral(GAMMARAY_DEBUG_POSTFIX); QString arch = idParts.value(index); if (!postfix.isEmpty()) { if (arch.endsWith(postfix, Qt::CaseInsensitive)) { arch.chop(postfix.length()); if (abi.isDebugRelevant()) abi.setIsDebug(true); } } abi.setArchitecture(arch); return abi; }
ProbeABI ProbeABI::fromString(const QString& id) { QStringList idParts = id.split('-'); if (idParts.size() < 2) return ProbeABI(); int index = 0; ProbeABI abi; // version static QRegExp versionRegExp("^qt(\\d+)\\.(\\d+)$"); if (versionRegExp.indexIn(idParts.value(index++)) != 0) return ProbeABI(); abi.setQtVersion(versionRegExp.cap(1).toInt(), versionRegExp.cap(2).toInt()); // compiler #ifdef Q_OS_WIN abi.setCompiler(idParts.value(index++)); #endif // debug/release if (abi.isDebugRelevant()) { if (idParts.size() <= index) return ProbeABI(); const QString s = idParts.value(index++); if (s != "release" && s != "debug") return ProbeABI(); abi.setIsDebug(s == "debug"); } // architecture if (idParts.size() != index + 1) return ProbeABI(); abi.setArchitecture(idParts.value(index)); return abi; }