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,...