tope_v1 / tests /test_generator_contract.py
tope1129's picture
cascade generator submission: king
7d83938 verified
Raw
History Blame Contribute Delete
4.42 kB
from __future__ import annotations
import importlib.util
from pathlib import Path
import numpy as np
REPO = Path(__file__).resolve().parents[1]
def _generator():
spec = importlib.util.spec_from_file_location("cascade_v2_generator", REPO / "generator.py")
module = importlib.util.module_from_spec(spec)
assert spec.loader is not None
spec.loader.exec_module(module)
return module.Generator(str(REPO), seed=123)
def _module():
spec = importlib.util.spec_from_file_location("cascade_v2_module", REPO / "generator.py")
module = importlib.util.module_from_spec(spec)
assert spec.loader is not None
spec.loader.exec_module(module)
return module
def test_exact_count_full_context_and_finite():
rows = list(_generator().generate(1031))
assert len(rows) == 1031
assert all(row.shape == (4096,) for row in rows)
assert all(row.dtype == np.float64 for row in rows)
assert all(np.isfinite(row).all() and row.std() > 1e-9 for row in rows)
def test_deterministic_across_instances():
left = list(_generator().generate(1030))
right = list(_generator().generate(1030))
assert all(np.array_equal(a, b) for a, b in zip(left, right, strict=True))
def test_requested_size_does_not_change_prefix():
short = list(_generator().generate(17))
long = list(_generator().generate(1030))
assert all(np.array_equal(a, b) for a, b in zip(short, long[:17], strict=True))
def test_nonpositive_request_is_empty():
assert list(_generator().generate(0)) == []
def test_ou_stochastic_vol_is_deterministic_finite_and_active():
module = _module()
left = module._ou_stochastic_vol(np.random.default_rng(77), 16, 512)
right = module._ou_stochastic_vol(np.random.default_rng(77), 16, 512)
assert np.array_equal(left, right)
assert np.isfinite(left).all()
assert (left.std(axis=1) > 1e-9).all()
assert "ou_stochastic_vol" in module._FAMILIES
assert module._DEFAULT_WEIGHTS["ou_stochastic_vol"] > 0
def test_physical_sensors_are_deterministic_finite_and_active():
module = _module()
left = module._physical_sensors(np.random.default_rng(91), 32, 512)
right = module._physical_sensors(np.random.default_rng(91), 32, 512)
assert np.array_equal(left, right)
assert np.isfinite(left).all()
assert (left.std(axis=1) > 1e-9).all()
assert "physical_sensors" in module._FAMILIES
assert module._DEFAULT_WEIGHTS["physical_sensors"] > 0
def test_seasonal_counts_are_deterministic_integer_and_active():
module = _module()
left = module._seasonal_counts(np.random.default_rng(109), 32, 512)
right = module._seasonal_counts(np.random.default_rng(109), 32, 512)
assert np.array_equal(left, right)
assert np.isfinite(left).all()
assert (left >= 0).all()
assert np.array_equal(left, np.round(left))
assert (left.std(axis=1) > 1e-9).all()
assert "seasonal_counts" in module._FAMILIES
assert module._DEFAULT_WEIGHTS["seasonal_counts"] > 0
def test_event_family_has_real_flat_runs_and_recovery():
module = _module()
left = module._pulse_outlier(np.random.default_rng(131), 32, 512)
right = module._pulse_outlier(np.random.default_rng(131), 32, 512)
assert np.array_equal(left, right)
assert np.isfinite(left).all()
assert (left.std(axis=1) > 1e-9).all()
assert np.any(np.diff(left, axis=1) == 0.0)
def test_measurement_artifacts_are_deterministic_finite_and_shape_safe():
module = _module()
raw = module._trend_seasonal_ar(np.random.default_rng(149), 64, 512)
left = module._measurement_artifacts(
np.random.default_rng(151), raw, preserve_nonnegative=False
)
right = module._measurement_artifacts(
np.random.default_rng(151), raw, preserve_nonnegative=False
)
assert np.array_equal(left, right)
assert left.shape == raw.shape
assert np.isfinite(left).all()
assert (left.std(axis=1) > 1e-9).all()
def test_weekly_demand_is_deterministic_nonnegative_and_active():
module = _module()
left = module._weekly_demand(np.random.default_rng(173), 32, 512)
right = module._weekly_demand(np.random.default_rng(173), 32, 512)
assert np.array_equal(left, right)
assert np.isfinite(left).all()
assert (left >= 0).all()
assert (left.std(axis=1) > 1e-9).all()
assert "weekly_demand" in module._FAMILIES
assert module._DEFAULT_WEIGHTS["weekly_demand"] > 0