11"""Tests for weather fault rules."""
22
3+ from pathlib import Path
4+
35import pandas as pd
46import pytest
57
68from open_fdd .engine import RuleRunner
7- from pathlib import Path
9+
10+ # Weather rules use Brick class names; test DataFrame uses Open-Meteo column names.
11+ # Pass this column_map so the runner resolves Brick -> actual df columns.
12+ WEATHER_COLUMN_MAP = {
13+ "Humidity_Sensor" : "rh_pct" ,
14+ "Wind_Gust_Speed_Sensor" : "gust_mph" ,
15+ "Wind_Speed_Sensor" : "wind_mph" ,
16+ "Outside_Air_Temperature_Sensor" : "temp_f" ,
17+ }
818
919
1020@pytest .fixture
@@ -43,6 +53,7 @@ def test_weather_rules_load(weather_df):
4353 "tolerance" : 0.2 ,
4454 "window" : 6 ,
4555 },
56+ column_map = WEATHER_COLUMN_MAP ,
4657 skip_missing_columns = True ,
4758 )
4859 assert "fault_rh_out_of_range" in result .columns
@@ -59,11 +70,19 @@ def test_weather_rh_out_of_range(weather_df):
5970 r for r in runner ._rules if r .get ("name" ) == "weather_rh_out_of_range"
6071 ]
6172
62- result = runner .run (weather_df , params = {"rh_min" : 0 , "rh_max" : 100 })
73+ result = runner .run (
74+ weather_df ,
75+ params = {"rh_min" : 0 , "rh_max" : 100 },
76+ column_map = WEATHER_COLUMN_MAP ,
77+ )
6378 # All rh in 50-86, within [0,100]
6479 assert result ["fault_rh_out_of_range" ].sum () == 0
6580
66- result2 = runner .run (weather_df , params = {"rh_min" : 70 , "rh_max" : 85 })
81+ result2 = runner .run (
82+ weather_df ,
83+ params = {"rh_min" : 70 , "rh_max" : 85 },
84+ column_map = WEATHER_COLUMN_MAP ,
85+ )
6786 # Some rh < 70 or > 85
6887 assert result2 ["fault_rh_out_of_range" ].sum () > 0
6988
@@ -81,5 +100,5 @@ def test_weather_gust_lt_wind(weather_df):
81100 r for r in runner ._rules if r .get ("name" ) == "weather_gust_lt_wind"
82101 ]
83102
84- result = runner .run (df )
103+ result = runner .run (df , column_map = WEATHER_COLUMN_MAP )
85104 assert result ["fault_gust_lt_wind" ].sum () >= 2
0 commit comments