commit af81f1d9a02a58de4b5394df8db44ce33ef49e93
parent 28a239c663da1f8551c01e2851c0e4f0433d7d74
Author: Kaleb Luedtke <trenlymc@gmail.com>
Date: Wed, 19 Feb 2025 15:22:01 -0600
Don't rely on parameter order when creating VersionRange (#5213)
Instead of relying on the parameters to be in the correct order for
minimum and maximum when creating a VersionRange, the code can instead
just put them in the right order.
Diffstat:
2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/AppInstallerCLITests/Versions.cpp b/src/AppInstallerCLITests/Versions.cpp
@@ -373,7 +373,7 @@ TEST_CASE("VersionRange", "[versions]")
// Create
REQUIRE_NOTHROW(VersionRange{ Version{ "1.0" }, Version{ "2.0" } });
REQUIRE_NOTHROW(VersionRange{ Version{ "1.0" }, Version{ "1.0" } });
- REQUIRE_THROWS(VersionRange{ Version{ "2.0" }, Version{ "1.0" } });
+ REQUIRE_NOTHROW(VersionRange{ Version{ "2.0" }, Version{ "1.0" } });
// Overlaps
REQUIRE(VersionRange{ Version{ "1.0" }, Version{ "2.0" } }.Overlaps(VersionRange{ Version{ "2.0" }, Version{ "3.0" } }));
diff --git a/src/AppInstallerSharedLib/Versions.cpp b/src/AppInstallerSharedLib/Versions.cpp
@@ -533,11 +533,18 @@ namespace AppInstaller::Utility
return m_buildMetadata;
}
- VersionRange::VersionRange(Version minVersion, Version maxVersion)
+ VersionRange::VersionRange(Version first, Version second)
{
- THROW_HR_IF(E_INVALIDARG, minVersion > maxVersion);
- m_minVersion = std::move(minVersion);
- m_maxVersion = std::move(maxVersion);
+ if (first < second)
+ {
+ m_minVersion = std::move(first);
+ m_maxVersion = std::move(second);
+ }
+ else
+ {
+ m_minVersion = std::move(second);
+ m_maxVersion = std::move(first);
+ }
}
bool VersionRange::Overlaps(const VersionRange& other) const