public void ConstructorTest()
{
var dist = new DegenerateDistribution(value: 2);
double mean = dist.Mean; // 2
double median = dist.Median; // 2
double mode = dist.Mode; // 2
double var = dist.Variance; // 1
double cdf1 = dist.DistributionFunction(k: 1); // 0
double cdf2 = dist.DistributionFunction(k: 2); // 1
double pdf1 = dist.ProbabilityMassFunction(k: 1); // 0
double pdf2 = dist.ProbabilityMassFunction(k: 2); // 1
double pdf3 = dist.ProbabilityMassFunction(k: 3); // 0
double lpdf = dist.LogProbabilityMassFunction(k: 2); // 0
double ccdf = dist.ComplementaryDistributionFunction(k: 2); // 0.0
int icdf1 = dist.InverseDistributionFunction(p: 0.0); // 3
int icdf2 = dist.InverseDistributionFunction(p: 0.7); // 3
int icdf3 = dist.InverseDistributionFunction(p: 1.0); // 2
double hf = dist.HazardFunction(x: 0); // 0.0
double chf = dist.CumulativeHazardFunction(x: 0); // 0.0
string str = dist.ToString(CultureInfo.InvariantCulture); // Degenerate(x; k0 = 2)
Assert.AreEqual(2, mean);
Assert.AreEqual(2, median);
Assert.AreEqual(2, mode);
Assert.AreEqual(0, var);
Assert.AreEqual(0, chf);
Assert.AreEqual(0, cdf1);
Assert.AreEqual(1, cdf2);
Assert.AreEqual(0, pdf1);
Assert.AreEqual(1, pdf2);
Assert.AreEqual(0, pdf3);
Assert.AreEqual(0, lpdf);
Assert.AreEqual(0, hf);
Assert.AreEqual(0, ccdf);
Assert.AreEqual(1, icdf1);
Assert.AreEqual(3, icdf2);
Assert.AreEqual(2, icdf3);
Assert.AreEqual("Degenerate(x; k0 = 2)", str);
var range1 = dist.GetRange(0.95);
var range2 = dist.GetRange(0.99);
var range3 = dist.GetRange(0.01);
Assert.AreEqual(1.0, range1.Min);
Assert.AreEqual(3.0, range1.Max);
Assert.AreEqual(1.0, range2.Min);
Assert.AreEqual(3.0, range2.Max);
Assert.AreEqual(1.0, range3.Min);
Assert.AreEqual(3.0, range3.Max);
}