From f565798650b453ed8c94422096d9b37ba81ebf3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 1 Apr 2017 18:38:04 +0200 Subject: [PATCH] NOISSUE remove unused version range filtering --- api/logic/Version.cpp | 57 +-------------------- api/logic/Version.h | 4 -- api/logic/Version_test.cpp | 38 -------------- application/VersionProxyModel.cpp | 12 +---- application/widgets/VersionSelectWidget.cpp | 2 +- 5 files changed, 3 insertions(+), 110 deletions(-) diff --git a/api/logic/Version.cpp b/api/logic/Version.cpp index 3c4727ad2..2c83374fc 100644 --- a/api/logic/Version.cpp +++ b/api/logic/Version.cpp @@ -75,6 +75,7 @@ void Version::parse() { m_sections.clear(); + // FIXME: this is bad. versions can contain a lot more separators... QStringList parts = m_string.split('.'); for (const auto part : parts) @@ -82,59 +83,3 @@ void Version::parse() 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( - "(?[\\[\\]\\(\\)])(?.*?)(,(?.*?))?(?[\\[\\]\\(\\)]),?"); - 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; -} diff --git a/api/logic/Version.h b/api/logic/Version.h index b5946ced2..08dfb6e99 100644 --- a/api/logic/Version.h +++ b/api/logic/Version.h @@ -104,7 +104,3 @@ private: void parse(); }; - -MULTIMC_LOGIC_EXPORT bool versionIsInInterval(const QString &version, const QString &interval); -MULTIMC_LOGIC_EXPORT bool versionIsInInterval(const Version &version, const QString &interval); - diff --git a/api/logic/Version_test.cpp b/api/logic/Version_test.cpp index aa6cb4dd1..1e7920ad5 100644 --- a/api/logic/Version_test.cpp +++ b/api/logic/Version_test.cpp @@ -60,44 +60,6 @@ private slots: } - void test_versionIsInInterval_data() - { - QTest::addColumn("version"); - QTest::addColumn("interval"); - QTest::addColumn("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() { setupVersions(); diff --git a/application/VersionProxyModel.cpp b/application/VersionProxyModel.cpp index 00390b36e..96bdc9ab4 100644 --- a/application/VersionProxyModel.cpp +++ b/application/VersionProxyModel.cpp @@ -28,17 +28,7 @@ public: { case BaseVersionList::ParentVersionRole: case BaseVersionList::VersionIdRole: - { - auto versionString = data.toString(); - if(it.value().exact) - { - return versionString == it.value().string; - } - else - { - return versionIsInInterval(versionString, it.value().string); - } - } + // TODO: work with metadata here. Previous implementation based on the Version class is not sufficient default: { auto match = data.toString(); diff --git a/application/widgets/VersionSelectWidget.cpp b/application/widgets/VersionSelectWidget.cpp index a4eb428b3..1696d9d10 100644 --- a/application/widgets/VersionSelectWidget.cpp +++ b/application/widgets/VersionSelectWidget.cpp @@ -168,4 +168,4 @@ void VersionSelectWidget::setExactFilter(BaseVersionList::ModelRoles role, QStri void VersionSelectWidget::setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter) { m_proxyModel->setFilter(role, filter, false); -} \ No newline at end of file +}