Version helper compare operator fix (#1824)

* Version helper compare operator fix

* Simplyfy compare code
This commit is contained in:
PrzemyslawTusinski
2020-04-01 13:30:21 +02:00
committed by GitHub
parent a6b7ba41ee
commit 90a228619e
3 changed files with 17 additions and 41 deletions

View File

@@ -50,45 +50,51 @@ namespace UnitTestsVersionHelper
} }
TEST_METHOD (whenMajorVersionIsGreaterComparationOperatorShouldReturnProperValue) TEST_METHOD (whenMajorVersionIsGreaterComparationOperatorShouldReturnProperValue)
{ {
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper lhs(MAJOR_VERSION_0 + 1, MINOR_VERSION_12, REVISION_VERSION_0); VersionHelper lhs(MAJOR_VERSION_0 + 1, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
Assert::IsTrue(lhs > rhs); Assert::IsTrue(lhs > rhs);
} }
TEST_METHOD (whenMajorVersionIsLesserComparationOperatorShouldReturnProperValue) TEST_METHOD (whenMajorVersionIsLesserComparationOperatorShouldReturnProperValue)
{ {
VersionHelper rhs(MAJOR_VERSION_0 + 1, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0); VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper rhs(MAJOR_VERSION_0 + 1, MINOR_VERSION_12, REVISION_VERSION_0);
Assert::IsFalse(lhs > rhs); Assert::IsFalse(lhs > rhs);
} }
TEST_METHOD (whenMajorVersionIsEqualComparationOperatorShouldCompareMinorVersionValue) TEST_METHOD (whenMajorVersionIsEqualComparationOperatorShouldCompareMinorVersionValue)
{ {
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12 - 1, REVISION_VERSION_0);
VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0); VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12 - 1, REVISION_VERSION_0);
Assert::IsTrue(lhs > rhs); Assert::IsTrue(lhs > rhs);
} }
TEST_METHOD (whenMajorVersionIsEqualComparationOperatorShouldCompareMinorVersionValue2) TEST_METHOD (whenMajorVersionIsEqualComparationOperatorShouldCompareMinorVersionValue2)
{ {
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12 - 1, REVISION_VERSION_0); VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12 - 1, REVISION_VERSION_0);
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
Assert::IsFalse(lhs > rhs); Assert::IsFalse(lhs > rhs);
} }
TEST_METHOD (whenMajorAndMinorVersionIsEqualComparationOperatorShouldCompareRevisionValue) TEST_METHOD (whenMajorAndMinorVersionIsEqualComparationOperatorShouldCompareRevisionValue)
{ {
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0 + 1); VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0 + 1);
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
Assert::IsTrue(lhs > rhs); Assert::IsTrue(lhs > rhs);
} }
TEST_METHOD (whenMajorAndMinorVersionIsEqualComparationOperatorShouldCompareRevisionValue2) TEST_METHOD (whenMajorAndMinorVersionIsEqualComparationOperatorShouldCompareRevisionValue2)
{ {
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0 + 1);
VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0); VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0 + 1);
Assert::IsFalse(lhs > rhs);
}
TEST_METHOD (whenMajorMinorAndRevisionIsEqualGreaterThanOperatorShouldReturnFalse)
{
VersionHelper lhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
VersionHelper rhs(MAJOR_VERSION_0, MINOR_VERSION_12, REVISION_VERSION_0);
Assert::IsFalse(lhs > rhs); Assert::IsFalse(lhs > rhs);
} }

View File

@@ -30,34 +30,5 @@ VersionHelper::VersionHelper(int major, int minor, int revision) :
bool VersionHelper::operator>(const VersionHelper& rhs) bool VersionHelper::operator>(const VersionHelper& rhs)
{ {
if (major < rhs.major) return std::tie(major, minor, revision) > std::tie(rhs.major, rhs.minor, rhs.revision);
{
return false;
}
else if (major > rhs.major)
{
return true;
}
else
{
if (minor < rhs.minor)
{
return false;
}
else if (minor > rhs.minor)
{
return true;
}
else
{
if (revision < rhs.revision)
{
return false;
}
else
{
return true;
}
}
}
} }

View File

@@ -110,16 +110,15 @@ std::future<std::optional<new_version_download_info>> check_for_new_github_relea
winrt::Windows::Foundation::Uri release_page_uri{ json_body.GetNamedString(L"html_url") }; winrt::Windows::Foundation::Uri release_page_uri{ json_body.GetNamedString(L"html_url") };
VersionHelper github_version(winrt::to_string(new_version)); VersionHelper github_version(winrt::to_string(new_version));
VersionHelper current_version(VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION); VersionHelper current_version(VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION);
if (current_version > github_version) if (github_version > current_version)
{ {
co_return std::nullopt; co_return new_version_download_info{ std::move(release_page_uri), new_version.c_str() };
} }
else else
{ {
co_return new_version_download_info{ std::move(release_page_uri), new_version.c_str() }; co_return std::nullopt;
} }
} }
catch (...) catch (...)