NOISSUE remove unused version range filtering
This commit is contained in:
parent
e0596d3c86
commit
f565798650
@ -75,6 +75,7 @@ void Version::parse()
|
|||||||
{
|
{
|
||||||
m_sections.clear();
|
m_sections.clear();
|
||||||
|
|
||||||
|
// FIXME: this is bad. versions can contain a lot more separators...
|
||||||
QStringList parts = m_string.split('.');
|
QStringList parts = m_string.split('.');
|
||||||
|
|
||||||
for (const auto part : parts)
|
for (const auto part : parts)
|
||||||
@ -82,59 +83,3 @@ void Version::parse()
|
|||||||
m_sections.append(Section(part));
|
m_sections.append(Section(part));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool versionIsInInterval(const QString &version, const QString &interval)
|
|
||||||
{
|
|
||||||
return versionIsInInterval(Version(version), interval);
|
|
||||||
}
|
|
||||||
bool versionIsInInterval(const Version &version, const QString &interval)
|
|
||||||
{
|
|
||||||
if (interval.isEmpty() || version.toString() == interval)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Interval notation is used
|
|
||||||
QRegularExpression exp(
|
|
||||||
"(?<start>[\\[\\]\\(\\)])(?<bottom>.*?)(,(?<top>.*?))?(?<end>[\\[\\]\\(\\)]),?");
|
|
||||||
QRegularExpressionMatch match = exp.match(interval);
|
|
||||||
if (match.hasMatch())
|
|
||||||
{
|
|
||||||
const QChar start = match.captured("start").at(0);
|
|
||||||
const QChar end = match.captured("end").at(0);
|
|
||||||
const QString bottom = match.captured("bottom");
|
|
||||||
const QString top = match.captured("top");
|
|
||||||
|
|
||||||
// check if in range (bottom)
|
|
||||||
if (!bottom.isEmpty())
|
|
||||||
{
|
|
||||||
const auto bottomVersion = Version(bottom);
|
|
||||||
if ((start == '[') && !(version >= bottomVersion))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if ((start == '(') && !(version > bottomVersion))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if in range (top)
|
|
||||||
if (!top.isEmpty())
|
|
||||||
{
|
|
||||||
const auto topVersion = Version(top);
|
|
||||||
if ((end == ']') && !(version <= topVersion))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if ((end == ')') && !(version < topVersion))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
@ -104,7 +104,3 @@ private:
|
|||||||
|
|
||||||
void parse();
|
void parse();
|
||||||
};
|
};
|
||||||
|
|
||||||
MULTIMC_LOGIC_EXPORT bool versionIsInInterval(const QString &version, const QString &interval);
|
|
||||||
MULTIMC_LOGIC_EXPORT bool versionIsInInterval(const Version &version, const QString &interval);
|
|
||||||
|
|
||||||
|
@ -60,44 +60,6 @@ private slots:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_versionIsInInterval_data()
|
|
||||||
{
|
|
||||||
QTest::addColumn<QString>("version");
|
|
||||||
QTest::addColumn<QString>("interval");
|
|
||||||
QTest::addColumn<bool>("result");
|
|
||||||
|
|
||||||
QTest::newRow("empty, true") << "1.2.3" << "" << true;
|
|
||||||
QTest::newRow("one version, true") << "1.2.3" << "1.2.3" << true;
|
|
||||||
QTest::newRow("one version, false") << "1.2.3" << "1.2.2" << false;
|
|
||||||
|
|
||||||
QTest::newRow("one version inclusive <-> infinity, true") << "1.2.3" << "[1.2.3,)" << true;
|
|
||||||
QTest::newRow("one version exclusive <-> infinity, true") << "1.2.3" << "(1.2.2,)" << true;
|
|
||||||
QTest::newRow("one version inclusive <-> infitity, false") << "1.2.3" << "[1.2.4,)" << false;
|
|
||||||
QTest::newRow("one version exclusive <-> infinity, false") << "1.2.3" << "(1.2.3,)" << false;
|
|
||||||
|
|
||||||
QTest::newRow("infinity <-> one version inclusive, true") << "1.2.3" << "(,1.2.3]" << true;
|
|
||||||
QTest::newRow("infinity <-> one version exclusive, true") << "1.2.3" << "(,1.2.4)" << true;
|
|
||||||
QTest::newRow("infinity <-> one version inclusive, false") << "1.2.3" << "(,1.2.2]" << false;
|
|
||||||
QTest::newRow("infinity <-> one version exclusive, false") << "1.2.3" << "(,1.2.3)" << false;
|
|
||||||
|
|
||||||
QTest::newRow("inclusive <-> inclusive, true") << "1.2.3" << "[1.2.2,1.2.3]" << true;
|
|
||||||
QTest::newRow("inclusive <-> exclusive, true") << "1.2.3" << "[1.2.3,1.2.4)" << true;
|
|
||||||
QTest::newRow("exclusive <-> inclusive, true") << "1.2.3" << "(1.2.2,1.2.3]" << true;
|
|
||||||
QTest::newRow("exclusive <-> exclusive, true") << "1.2.3" << "(1.2.2,1.2.4)" << true;
|
|
||||||
QTest::newRow("inclusive <-> inclusive, false") << "1.2.3" << "[1.0.0,1.2.2]" << false;
|
|
||||||
QTest::newRow("inclusive <-> exclusive, false") << "1.2.3" << "[1.0.0,1.2.3)" << false;
|
|
||||||
QTest::newRow("exclusive <-> inclusive, false") << "1.2.3" << "(1.2.3,2.0.0]" << false;
|
|
||||||
QTest::newRow("exclusive <-> exclusive, false") << "1.2.3" << "(1.0.0,1.2.3)" << false;
|
|
||||||
}
|
|
||||||
void test_versionIsInInterval()
|
|
||||||
{
|
|
||||||
QFETCH(QString, version);
|
|
||||||
QFETCH(QString, interval);
|
|
||||||
QFETCH(bool, result);
|
|
||||||
|
|
||||||
QCOMPARE(versionIsInInterval(version, interval), result);
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_versionCompare_data()
|
void test_versionCompare_data()
|
||||||
{
|
{
|
||||||
setupVersions();
|
setupVersions();
|
||||||
|
@ -28,17 +28,7 @@ public:
|
|||||||
{
|
{
|
||||||
case BaseVersionList::ParentVersionRole:
|
case BaseVersionList::ParentVersionRole:
|
||||||
case BaseVersionList::VersionIdRole:
|
case BaseVersionList::VersionIdRole:
|
||||||
{
|
// TODO: work with metadata here. Previous implementation based on the Version class is not sufficient
|
||||||
auto versionString = data.toString();
|
|
||||||
if(it.value().exact)
|
|
||||||
{
|
|
||||||
return versionString == it.value().string;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return versionIsInInterval(versionString, it.value().string);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
auto match = data.toString();
|
auto match = data.toString();
|
||||||
|
Loading…
Reference in New Issue
Block a user