diff --git a/common/ScalingSettings.cpp b/common/ScalingSettings.cpp index 2016afba5..8b70c6ac9 100644 --- a/common/ScalingSettings.cpp +++ b/common/ScalingSettings.cpp @@ -90,7 +90,7 @@ std::optional ScalingSettings::GetRotationWedgeForScaling() const { } ScalingSettings &ScalingSettings::MinPartiality(double input) { - if (min_partiality < 0.0 || min_partiality > 1.0) + if (!(input >= 0.0 && input <= 1.0)) throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Min partiality must be between 0 and 1"); min_partiality = input; return *this; diff --git a/tests/MergeScaleTest.cpp b/tests/MergeScaleTest.cpp index 0d42c77aa..c2c930911 100644 --- a/tests/MergeScaleTest.cpp +++ b/tests/MergeScaleTest.cpp @@ -1143,3 +1143,12 @@ TEST_CASE("MergeOnTheFly_CaptureTermDownweightsPartials") { CHECK(with < without); CHECK(with < 1.08f); } + +// The setter checks the value it is given, not the one it replaces. +TEST_CASE("ScalingSettings_MinPartialityRange") { + ScalingSettings s; + CHECK_THROWS(s.MinPartiality(1.5)); + CHECK_THROWS(s.MinPartiality(-0.1)); + CHECK_NOTHROW(s.MinPartiality(0.5)); + CHECK(s.GetMinPartiality() == 0.5); +}