// Copyright (C) Stichting Deltares 2016. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using System.Globalization;
using Core.Common.Base;
using Core.Common.Base.Data;
using Ringtoets.Common.Data.Properties;
namespace Ringtoets.Common.Data.Probability
{
///
/// Class that holds helper methods for probabilities.
///
public static class ProbabilityHelper
{
private static readonly Range probabilityValidityRange = new Range(0, 1);
///
/// Checks whether the given is valid.
///
/// The probability to check.
/// Optional: false is should
/// be considered a valid value. Default is true.
/// true when is valid; false otherwise.
public static bool IsValidProbability(double probability, bool nanIsValid = false)
{
if (nanIsValid && double.IsNaN(probability))
{
return true;
}
return probabilityValidityRange.InRange(probability);
}
///
/// Checks if a argument is a valid probability value.
///
/// The value to be validated.
/// The name of the argument.
/// Optional: false is should
/// be considered a valid value. Default is true.
/// Thrown when
/// is not a valid probability value.
public static void ValidateProbability(double probability, string paramName, bool nanIsValid = false)
{
if (!IsValidProbability(probability, nanIsValid))
{
string message = string.Format(Resources.Probability_Must_be_in_Range_0_,
probabilityValidityRange.ToString(FormattableConstants.ShowAtLeastOneDecimal, CultureInfo.CurrentCulture));
throw new ArgumentOutOfRangeException(paramName, message);
}
}
}
}