void testToString() { QFETCH(QString, id); QFETCH(int, majorVersion); QFETCH(int, minorVersion); QFETCH(bool, isDebug); QFETCH(QString, arch); QFETCH(QString, compiler); QFETCH(QString, compilerVersion); ProbeABI abi; abi.setQtVersion(majorVersion, minorVersion); abi.setIsDebug(isDebug); abi.setArchitecture(arch); abi.setCompiler(compiler); abi.setCompilerVersion(compilerVersion); QCOMPARE(abi.id(), id); }
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; }