| Test |
Method name |
Duration |
Result |
| Untruncated: CDF matches known Φ values at easy points (μ=0, σ=1) |
cdfMatchesKnownValues() |
0.001s |
passed |
| CDF/PMF consistency: CDF(k) ≈ sum_{i<=k} PMF(i) |
cdfMatchesPmfSum() |
0s |
passed |
| Constructor validation: sigma > 0, finite params, truncation bounds |
constructorValidation() |
0.003s |
passed |
| Degenerate truncated: when Z≈0, distribution becomes a point mass at clamped rounded mean |
degenerateTruncatedBecomesPointMass() |
0s |
passed |
| Determinism by seed: same seed -> identical sequence |
determinismBySeed() |
0.003s |
passed |
| Seed determinism for truncated variant |
determinismDifferentParams() |
0.003s |
passed |
| Extreme CDF bounds: MIN_VALUE -> 0, MAX_VALUE -> 1 (untruncated) |
extremeCdfBounds() |
0s |
passed |
| Half-integer mean: pmf(k) = pmf(k+1) symmetry about μ=0.5 |
halfIntegerSymmetry() |
0.009s |
passed |
| Monte Carlo moments track mean() and variance() (untruncated) |
monteCarloMoments() |
0.006s |
passed |
| Constructor: null RNG throws NPE |
nullRngThrows() |
0s |
passed |
| PMF non-negative, sum to ~1 over a wide window; CDF monotone in [0,1] |
pmfCdfProperties() |
0.009s |
passed |
| Untruncated: PMF at 0 equals Φ(0.5) - Φ(-0.5) |
pmfCentralValue() |
0.001s |
passed |
| Support reports unbounded for untruncated and [lower,upper] for truncated |
supportReportedCorrectly() |
0s |
passed |
| Symmetry: for integer mean, pmf is symmetric around mean |
symmetryAroundIntegerMean() |
0s |
passed |
| Truncated: sum of PMF over [lower, upper] is 1; CDF clamps at edges |
truncatedMassIsOne() |
0.001s |
passed |
| Truncated moments match PMF-derived mean/variance |
truncatedMomentsConsistency() |
0.001s |
passed |
| Truncation: samples stay within [lower, upper], CDF clamps to 0/1 |
truncationBounds() |
0.016s |
passed |