12using Microsoft.VisualStudio.TestTools.UnitTesting;
 
   16using TestCategory = 
NUnit.Framework.CategoryAttribute;
 
   34            Console.WriteLine(
"Verifying that we can safely post a new " +
 
   35                $"ParametricLossSet with a reference to this {posted.GetType().NiceTypeName()}");
 
   62                    "does not appear to be Continuous or Discrete. Unsure how to use it.");
 
 
   77                    "because it can only be tested as a frequency distribution, and its " +
 
   78                    "profile suggests that it might generate a negative number of occurrences:\n" +
 
   84                Console.WriteLine(
"Cannot safely determine whether this distribution can be simulated, " +
 
   85                    "because it can only be tested as a frequency distribution, and its " +
 
   86                    "profile suggests that it would generate a large number of occurrences:\n" +
 
   97                Console.WriteLine(
"Cannot safely determine that this distribution can be simulated, " +
 
   98                    "because it can only be tested as a frequency distribution, and its " +
 
   99                    "profile gives no indication of how many occurrences it might generate:\n" +
 
 
 
  107    #region CustomDistribution Derived Types Test Classes 
  112        #region Set Up and Configuration 
  113        private const string TypeName = 
"CustomFrequencyDistribution";
 
  118        #endregion Set Up and Configuration 
 
  125        #region Set Up and Configuration 
  126        private const string TypeName = 
"CustomSeasonalityDistribution";
 
  131        #endregion Set Up and Configuration 
 
  138        #region Set Up and Configuration 
  139        private const string TypeName = 
"CustomSeverityDistribution";
 
  144        #endregion Set Up and Configuration 
 
  146    #endregion CustomDistribution Derived Types Test Classes 
  148    #region Other Distribution Test Classes 
  153        #region Set Up and Configuration 
  154        private const string TypeName = 
"BinomialDistribution";
 
  157        #endregion Set Up and Configuration 
 
  203        #region Set Up and Configuration 
  204        private const string TypeName = 
"LogNormalDistribution";
 
  207        #endregion Set Up and Configuration 
  211        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  214            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
  217        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  220            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
  244        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  247            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
 
  276        #region Set Up and Configuration 
  277        private const string TypeName = 
"NegativeBinomialDistribution";
 
  280        #endregion Set Up and Configuration 
 
  331        #region Set Up and Configuration 
  332        private const string TypeName = 
"NormalDistribution";
 
  335        #endregion Set Up and Configuration 
  339        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  343            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
  346        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  350            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
  371        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  375            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
 
  403        #region Set Up and Configuration 
  404        private const string TypeName = 
"DiracDistribution";
 
  407        #endregion Set Up and Configuration 
 
  435        #region Set Up and Configuration 
  436        private const string TypeName = 
"ParetoDistribution";
 
  439        #endregion Set Up and Configuration 
  443        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  447            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
  470        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  474            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
 
  502        #region Set Up and Configuration 
  503        private const string TypeName = 
"PoissonDistribution";
 
  507        #endregion Set Up and Configuration 
  519        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  524                "should not be equal to zero (but API allows it).");
 
 
 
  545        #region Set Up and Configuration 
  546        private const string TypeName = 
"UniformDistribution";
 
  549        #endregion Set Up and Configuration 
  566            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
  583            Skip.
Indefinitely(
"ARE-6046: +/-Inf in distributions cause internal errors.");
 
 
 
  615        #region Set Up and Configuration 
  616        private const string TypeName = 
"UniformIntDistribution";
 
  619        #endregion Set Up and Configuration 
  631        [
TestMethod, TestCategory(TypeName), TestCategory(
"Skipped")]
 
  635                "less than 1 is allowed, but causes internal errors.");
 
 
 
  659    #endregion Other Distribution Test Classes 
  661    #region Abstract Base Test Classes 
  669        private const string TypeName = 
"CustomDistribution";
 
  701        #endregion interpolate 
  724        #endregion interpolate 
 
  732        private const string TypeName = 
"Distribution";
 
 
  770    #endregion Abstract Base Test Classes 
Tests for a stored resource collection which do not require an instance of that resource to be define...
 
virtual T TestResource
The resource used for all unit tests that require a valid prepared but unPOSTed resource.
 
Exposes the various sample CSV files as strings.
 
static string CustomFrequencyDistribution_Data
 
static string CustomSeasonalityDistribution_Data
 
static string CustomSeverityDistribution_Data
 
Exposes sample resource objects, with built-in methods for injecting dependencies.
 
IInjectableResource< NegativeBinomialDistribution > Distribution_NegativeBinomialDistribution
 
IInjectableResource< CustomSeasonalityDistribution > Distribution_CustomSeasonalityDistribution
 
IInjectableResource< PoissonDistribution > Distribution_PoissonDistribution
 
IInjectableResource< NormalDistribution > Distribution_NormalDistribution
 
IInjectableResource< LogNormalDistribution > Distribution_LogNormalDistribution
 
IInjectableResource< CustomSeverityDistribution > Distribution_CustomSeverityDistribution
 
IInjectableResource< UniformDistribution > Distribution_UniformDistribution
 
IInjectableResource< ParametricLossSet > LossSet_ParametricLossSet
 
IInjectableResource< ParetoDistribution > Distribution_ParetoDistribution
 
IInjectableResource< UniformIntDistribution > Distribution_UniformIntDistribution
 
IInjectableResource< DiracDistribution > Distribution_DiracDistribution
 
IInjectableResource< BinomialDistribution > Distribution_BinomialDistribution
 
IInjectableResource< CustomFrequencyDistribution > Distribution_CustomFrequencyDistribution
 
Includes tests that affect all types of CustomDistribution. Because these have a data endpoint,...
 
void Test_CustomDistribution_PUT_Modulo_Null()
 
void Test_CustomDistribution_PUT_Modulo()
 
void Test_CustomDistribution_PUT_Interpolate()
 
void Test_Distribution_POST_Modulo_InvalidDomain()
 
void Test_Distribution_POST_Modulo_Null()
 
void Test_Distribution_POST_Modulo_ValidDomain()
 
override void AdditionalValidResourceWithDataTests(T posted)
 
override IResourceCollection< IDistribution > collection_source
 
static void Test_Distribution_Simulatable(Distribution posted)
Helper method that asserts that a distribution can be included in a layer_view and simulated without ...
 
static bool IsFrequencyDistributionSafeToSimulate(IDiscreteDistribution frequencyDistribution)
We should not attempt to simulate a frequency distribution that might generate a huge number of occur...
 
static double MaxSafeFrequencyDistributionMean
An number chosen to avoid testing frequency distributions whose mean is too large,...
 
void Test_BinomialDistribution_POST_P_ValidDomain()
 
void Test_BinomialDistribution_POST_P_InvalidDomain()
 
void Test_BinomialDistribution_POST_N_InvalidDomain()
 
override IInjectableResource< BinomialDistribution > TestInjectableResource
 
void Test_BinomialDistribution_POST_N_ValidDomain()
 
override IInjectableResource< CustomFrequencyDistribution > TestInjectableResource
 
override IInjectableResource< CustomSeasonalityDistribution > TestInjectableResource
 
override IInjectableResource< CustomSeverityDistribution > TestInjectableResource
 
override IInjectableResource< DiracDistribution > TestInjectableResource
 
void Test_DiracDistribution_POST_Value_ValidDomain()
 
void Test_DiracDistribution_POST_Value_InvalidDomain()
 
void Test_LogNormalDistribution_POST_Location_MinValue()
 
void Test_LogNormalDistribution_POST_Location_ValidDomain()
 
void Test_LogNormalDistribution_POST_Location_MaxValue()
 
void Test_LogNormalDistribution_POST_Scale_MaxValue()
 
void Test_LogNormalDistribution_POST_Scale_InvalidDomain()
 
void Test_LogNormalDistribution_POST_Location_InvalidDomain()
 
void Test_LogNormalDistribution_POST_Scale_ValidDomain()
 
override IInjectableResource< LogNormalDistribution > TestInjectableResource
 
void Test_NegativeBinomialDistribution_POST_R_InvalidDomain()
 
override IInjectableResource< NegativeBinomialDistribution > TestInjectableResource
 
void Test_NegativeBinomialDistribution_POST_R_ValidDomain()
 
void Test_NegativeBinomialDistribution_POST_P_ValidDomain()
 
void Test_NegativeBinomialDistribution_POST_P_InvalidDomain()
 
void Test_NormalDistribution_POST_Mean_InvalidDomain()
 
void Test_NormalDistribution_POST_Mean_MaxValue()
 
void Test_NormalDistribution_POST_Stddev_ValidDomain()
 
void Test_NormalDistribution_POST_Stddev_InvalidDomain()
 
override IInjectableResource< NormalDistribution > TestInjectableResource
 
void Test_NormalDistribution_POST_Stddev_MaxValue()
 
void Test_NormalDistribution_POST_Mean_MinValue()
 
void Test_NormalDistribution_POST_Mean_ValidDomain()
 
void Test_ParetoDistribution_POST_Scale_MaxValue()
 
void Test_ParetoDistribution_POST_Shape_ValidDomain()
 
void Test_ParetoDistribution_POST_Scale_InvalidDomain()
 
void Test_ParetoDistribution_POST_Shape_MaxValue()
 
void Test_ParetoDistribution_POST_Shape_InvalidDomain()
 
void Test_ParetoDistribution_POST_Scale_ValidDomain()
 
override IInjectableResource< ParetoDistribution > TestInjectableResource
 
void Test_PoissonDistribution_POST_Mean_Zero()
 
void Test_PoissonDistribution_POST_Mean_ValidDomain()
 
override IInjectableResource< PoissonDistribution > TestInjectableResource
 
void Test_PoissonDistribution_POST_Mean_InvalidDomain()
 
Includes tests that affect all types of Distribution.
 
override void AdditionalValidResourceTests(T posted)
Deriving classes can optionally override this function to perform additional validation on every succ...
 
const double LargeNegativeDoubleValue
 
const double SmallPositiveDoubleValue
 
const double HighPrecisionValue
 
const double LargePostiveDoubleValue
 
void Test_Distribution_POST_Modulo_ValidDomain()
 
const double SmallNegativeDoubleValue
 
void Test_Distribution_POST_Modulo_Null()
 
void Test_Distribution_POST_Modulo_InvalidDomain()
 
A helper class containing default skip dates.
 
static void Validation(string ticket=null)
Skip a test due to a validation-related issue, possibly with no insight into when this issue is likel...
 
Class used in unit tests to mark tests as skipped by using Assert.Inconclusive() method.
 
static void Indefinitely(string ticket=null)
Skip the specified test.
 
Describes a collection of resources which can be listed.
 
API methods / requests made available to the user.
 
static readonly ResourceCollection< IDistribution > Distributions
The collection of Distributions on the server.
 
Abstract representation of a distribution, used for parametric loss sets.
 
Custom Distribution that allows the user to upload CSV data. Can be treated as a Discrete or Continuo...
 
Custom Distribution that describes a parametric loss set's frequency.
 
Custom Distribution that describes a parametric loss set's seasonality.
 
Custom Distribution that describes a parametric loss set's severity.
 
Representation of a Parametric loss set.
 
T Unposted
The unPOSTed resource definition.
 
Represents any distribution that is continuous. With a continuous probability distribution,...
 
Represents any distribution that is discrete. With a discrete probability distribution,...