mirror of
https://github.com/logos-blockchain/research.git
synced 2026-08-07 19:53:10 +00:00
25 lines
649 B
Python
25 lines
649 B
Python
|
|
import numpy as np
|
||
|
|
|
||
|
|
from pd.mixclock import mean_residual_ms, mix_wait
|
||
|
|
|
||
|
|
|
||
|
|
def test_zero_max_delay_is_zero():
|
||
|
|
rng = np.random.default_rng(0)
|
||
|
|
w = mix_wait(rng, 0, 1000)
|
||
|
|
assert np.all(w == 0.0)
|
||
|
|
|
||
|
|
|
||
|
|
def test_residual_within_bounds():
|
||
|
|
rng = np.random.default_rng(1)
|
||
|
|
m = 5
|
||
|
|
w = mix_wait(rng, m, 100000)
|
||
|
|
assert w.min() >= 0.0
|
||
|
|
assert w.max() <= m * 1000.0 + 1e-6 # residual within a covering interval (<= M seconds)
|
||
|
|
|
||
|
|
|
||
|
|
def test_mean_matches_analytic():
|
||
|
|
rng = np.random.default_rng(2)
|
||
|
|
for m in (1, 3, 8):
|
||
|
|
w = mix_wait(rng, m, 400000)
|
||
|
|
assert abs(w.mean() - mean_residual_ms(m)) < 0.03 * mean_residual_ms(m)
|