Artifex/tests/test_feature_parity_harness_v1.py

48 lines
1.6 KiB
Python
Raw Permalink Normal View History

from __future__ import annotations
import numpy as np
import pytest
from control_plane.trading_studio.indicators.parity_harness_v1 import (
FeatureVersion,
ParityStatus,
compare_array,
compare_state,
enumerate_native_evaluators,
load_frozen_engineering_map,
parity_manifest,
recompute_coverage,
)
pytestmark = pytest.mark.django_db
def test_manifest_is_pinned_to_the_frozen_engineering_map():
assert load_frozen_engineering_map()["counts"]["primitives"] == 711
assert parity_manifest()["comparison"]["tolerance_by_engineering_family"] == {}
def test_comparisons_record_exact_dtype_nan_and_state_key_failures():
record = compare_array(
"feature", np.array([np.nan, 1.0]), np.array([np.nan, 1.0], dtype=np.float32)
)
assert record.status == ParityStatus.FAIL
assert record.expected_dtype == "float64"
assert record.nan_mask_mismatches == 0
state = compare_state(
{"trend": np.array([1], dtype=np.int8)},
{"signal": np.array([1], dtype=np.int8)},
)
assert {item.reason for item in state} == {"state_key_mismatch"}
def test_native_enumeration_and_coverage_use_only_submitted_versions():
passed = FeatureVersion("v1", "p1", "trend", 9, lambda _: np.array([1]), ParityStatus.PASS)
failed = FeatureVersion("v2", "p2", "trend", 1, None, ParityStatus.FAIL)
assert enumerate_native_evaluators([passed, failed]) == (passed,)
assert recompute_coverage([passed, failed]) == {
"submitted_feature_versions": 2, "passed_feature_versions": 1,
"submitted_usage_slots": 10, "passed_usage_slots": 9,
"coverage_percent": 90.0, "feature_versions": ["v1"],
}