| """ |
| Tests for ui_pages/ai_middleware.py — the thin adapter that routes Quantum |
| Simulator telemetry (VQE/MD DataFrames) through the same vector-healing |
| shield used standalone on the Vector Healing page. No Streamlit import |
| needed (heal_telemetry is pure pandas/numpy), so this doesn't add a CI |
| dependency beyond what test_ia_healing.py already requires. |
| """ |
|
|
| import numpy as np |
| import pandas as pd |
|
|
| from ui_pages.ai_middleware import heal_telemetry |
|
|
|
|
| def test_heal_telemetry_empty_df(): |
| healed, meta = heal_telemetry(pd.DataFrame()) |
| assert healed.empty |
| assert meta == {'fallback_triggered': False, 'adaptive_radius_used': 0, 'reconstruction_error': 0.0} |
|
|
|
|
| def test_heal_telemetry_none(): |
| healed, meta = heal_telemetry(None) |
| assert healed.empty |
| assert meta['fallback_triggered'] is False |
|
|
|
|
| def test_heal_telemetry_clean_data_no_nan(): |
| rng = np.random.default_rng(42) |
| df = pd.DataFrame( |
| rng.normal(size=(50, 6)), |
| columns=["VQE_Energy", "Entropy", "Purity", "Gradient", "Noise_Factor", "Theta_Correction"], |
| ) |
| healed, meta = heal_telemetry(df) |
| assert healed.shape == df.shape |
| assert list(healed.columns) == list(df.columns) |
| assert not healed.isna().any().any() |
| assert np.isfinite(meta['reconstruction_error']) |
|
|
|
|
| def test_heal_telemetry_removes_injected_nan(): |
| rng = np.random.default_rng(7) |
| df = pd.DataFrame( |
| rng.normal(size=(40, 6)), |
| columns=["VQE_Energy", "Entropy", "Purity", "Gradient", "Noise_Factor", "Theta_Correction"], |
| ) |
| df.iloc[10, 2] = np.nan |
| df.iloc[20, 4] = np.inf |
|
|
| healed, meta = heal_telemetry(df) |
| assert not healed.isna().any().any() |
| assert np.isfinite(healed.to_numpy()).all() |
| assert np.isfinite(meta['reconstruction_error']) |
| assert not np.isnan(meta['reconstruction_error']) |
|
|
|
|
| def test_heal_telemetry_preserves_index(): |
| df = pd.DataFrame( |
| np.random.default_rng(1).normal(size=(10, 3)), |
| columns=["A", "B", "C"], |
| index=range(100, 110), |
| ) |
| healed, _ = heal_telemetry(df) |
| assert list(healed.index) == list(df.index) |
|
|