| | import sys
|
| | import os
|
| | import pandas as pd
|
| | import numpy as np
|
| | import json
|
| |
|
| |
|
| | sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
| |
|
| | from core.calculators.kpi import analyze_breaker_data
|
| | from core.calculators.cbhi import compute_cbhi
|
| |
|
| | def create_mock_df():
|
| |
|
| | t = np.linspace(0, 200, 2000)
|
| |
|
| |
|
| |
|
| | travel = np.zeros_like(t)
|
| | travel[t < 50] = 0
|
| | travel[(t >= 50) & (t < 150)] = 100
|
| | travel[t >= 150] = 0
|
| |
|
| | for i in range(len(t)):
|
| | if 40 < t[i] < 60:
|
| | travel[i] = (t[i] - 40) * 5
|
| | elif 140 < t[i] < 160:
|
| | travel[i] = 100 - (t[i] - 140) * 5
|
| |
|
| |
|
| | resistance = np.ones_like(t) * 10000
|
| | resistance[(t >= 55) & (t < 145)] = 50
|
| |
|
| |
|
| | close_coil = np.zeros_like(t)
|
| | close_coil[(t > 10) & (t < 30)] = 2.0
|
| |
|
| | trip_coil_1 = np.zeros_like(t)
|
| | trip_coil_1[(t > 110) & (t < 130)] = 2.0
|
| |
|
| | trip_coil_2 = np.zeros_like(t)
|
| |
|
| | df = pd.DataFrame({
|
| | "Time_ms": t,
|
| | "Resistance": resistance,
|
| | "Travel": travel,
|
| | "Close_Coil": close_coil,
|
| | "Trip_Coil_1": trip_coil_1,
|
| | "Trip_Coil_2": trip_coil_2
|
| | })
|
| |
|
| | return df
|
| |
|
| | def test_integration():
|
| | print("Creating mock DataFrame...")
|
| | df = create_mock_df()
|
| |
|
| | print("Running analyze_breaker_data...")
|
| | kpi_result = analyze_breaker_data(df)
|
| |
|
| | assert "kpis" in kpi_result
|
| | kpis_list = kpi_result["kpis"]
|
| | print("KPIs:", json.dumps(kpis_list, indent=2))
|
| |
|
| |
|
| | expected_names = [
|
| | "Closing Time", "Opening Time", "DLRO Value", "Peak Resistance",
|
| | "Main Wipe", "Arc Wipe", "Contact Travel Distance", "Contact Speed",
|
| | "Peak Close Coil Current", "Peak Trip Coil 1 Current", "Peak Trip Coil 2 Current",
|
| | "Ambient Temperature"
|
| | ]
|
| |
|
| | found_names = [item['name'] for item in kpis_list]
|
| | for name in expected_names:
|
| | assert name in found_names, f"Missing KPI: {name}"
|
| |
|
| | print("Running compute_cbhi...")
|
| | score = compute_cbhi(kpis_list)
|
| | print(f"CBHI Score: {score}")
|
| |
|
| | assert isinstance(score, (int, float))
|
| | assert 0 <= score <= 100
|
| |
|
| | print("Verification SUCCESS!")
|
| |
|
| | if __name__ == "__main__":
|
| | test_integration()
|
| |
|
| |
|