Files
HeurAMS/tests/test_base_algorithm.py
2026-04-25 01:36:52 +08:00

59 lines
1.8 KiB
Python

"""Tests for heurams.kernel.algorithms.base.BaseAlgorithm"""
from copy import deepcopy
import pytest
from heurams.kernel.algorithms import BaseAlgorithm
from heurams.services import timer
class TestBaseAlgorithmDefaults:
def test_defaults_have_required_keys(self):
required = {
"real_rept",
"rept",
"interval",
"last_date",
"next_date",
"is_activated",
"last_modify",
}
assert required.issubset(BaseAlgorithm.defaults.keys())
def test_defaults_last_modify_is_reasonable(self):
# defaults is evaluated at module import, not test time
ts = BaseAlgorithm.defaults["last_modify"]
assert isinstance(ts, float)
assert ts > 1e9 # reasonable UNIX timestamp
class TestBaseAlgorithmMethods:
def test_revisor_does_nothing(self):
d = {"SM-2": {"rept": 0}}
BaseAlgorithm.revisor(d, feedback=5)
# Base.revisor is a no-op — dict unchanged
assert d["SM-2"]["rept"] == 0
def test_is_due_returns_one(self):
assert BaseAlgorithm.is_due({}) == 1
def test_get_rating_returns_empty(self):
assert BaseAlgorithm.get_rating({}) == ""
def test_nextdate_returns_negative_one(self):
assert BaseAlgorithm.nextdate({}) == -1
class TestBaseAlgorithmIntegrity:
def test_check_integrity_valid(self, sample_algodata_sm2):
# BaseAlgorithm.algo_name is "BaseAlgorithm", not "SM-2"
data = {"BaseAlgorithm": sample_algodata_sm2["SM-2"]}
assert BaseAlgorithm.check_integrity(data) == 1
def test_check_integrity_invalid(self):
assert BaseAlgorithm.check_integrity({"SM-2": {}}) == 0
def test_check_integrity_missing_key(self):
assert BaseAlgorithm.check_integrity({}) == 0