test: 增加测试

This commit is contained in:
2026-04-25 01:38:33 +08:00
parent b235651db5
commit 7f2bcf45de
23 changed files with 1573 additions and 1933 deletions

54
tests/conftest.py Normal file
View File

@@ -0,0 +1,54 @@
"""
Pytest shared fixtures for HeurAMS test suite.
Provides:
- timer_config: A ConfigDict with deterministic timer overrides for reproducible tests.
- timer_context: A ConfigContext that applies timer_config for the duration of a test.
- sample_algodata_sm2: A fresh SM-2 algodata dict.
- sample_algodata_nsp0: A fresh NSP-0 algodata dict.
"""
import pathlib
from copy import deepcopy
import pytest
from heurams.context import ConfigContext, config_var, workdir
from heurams.kernel.algorithms import algorithms, nsp0
from heurams.services.config import ConfigDict
@pytest.fixture
def timer_config():
"""A ConfigDict with deterministic timer overrides (daystamp=20000, timestamp=1e9).
This allows reproducible algorithm tests without relying on wall-clock time.
"""
# Use the real config path as base, then overlay timer overrides
config = ConfigDict(workdir / "data" / "config")
# Override timer values in-place via the nested ConfigDict
timer_cfg = config["services"]["timer"]
timer_cfg["daystamp_override"] = 20000
timer_cfg["timestamp_override"] = 1000000000.0
return config
@pytest.fixture
def timer_context(timer_config):
"""Context manager fixture that applies the timer overrides."""
with ConfigContext(timer_config):
yield
@pytest.fixture
def sample_algodata_sm2():
"""A fresh SM-2 algodata dict (pre-activation)."""
algo = algorithms["SM-2"]
return {algo.algo_name: deepcopy(algo.defaults)}
@pytest.fixture
def sample_algodata_nsp0():
"""A fresh NSP-0 algodata dict (pre-activation)."""
algo = algorithms["NSP-0"]
return {algo.algo_name: deepcopy(algo.defaults)}