1import numpy as np23from wp39.inference import holm, paired_block_bootstrap, dm_gw_test456def test_bootstrap_is_seeded_and_centered():7 rng = np.random.default_rng(0)8 d = rng.normal(0.01, 0.1, 2000)9 blocks = np.repeat(np.arange(20), 100)10 a = paired_block_bootstrap(d, blocks, n_boot=300, seed=1)11 b = paired_block_bootstrap(d, blocks, n_boot=300, seed=1)12 assert a == b and a["ci_lo"] < a["mean"] < a["ci_hi"]131415def test_gw_test_rejects_clear_difference():16 d = np.full(2000, 0.05) + np.random.default_rng(1).normal(0, 0.02, 2000)17 blocks = np.repeat(np.arange(20), 100)18 assert dm_gw_test(d, blocks)["p"] < 0.001192021def test_holm_monotone():22 adj = holm({"a": 0.01, "b": 0.04, "c": 0.5})23 assert adj["a"] <= adj["b"] <= adj["c"] and adj["a"] == 0.0324