@@ -22,6 +22,7 @@ def test_forecaster_forecast(models, freq, h):
2222 df = generate_series (n_series = n_uids , freq = freq , min_length = 30 )
2323 forecaster = TimeCopilotForecaster (models = models )
2424 fcst_df = forecaster .forecast (df = df , h = h , freq = freq )
25+ assert len (fcst_df .columns ) == 2 + len (models )
2526 assert len (fcst_df ) == h * n_uids
2627 for model in models :
2728 assert model .alias in fcst_df .columns
@@ -45,10 +46,40 @@ def test_forecaster_cross_validation(models, freq, h, n_windows, step_size):
4546 n_windows = n_windows ,
4647 step_size = step_size ,
4748 )
49+ assert len (fcst_df .columns ) == 4 + len (models )
4850 uids = df ["unique_id" ].unique ()
4951 for uid in uids : # noqa: B007
5052 fcst_df_uid = fcst_df .query ("unique_id == @uid" )
5153 assert fcst_df_uid ["cutoff" ].nunique () == n_windows
5254 assert len (fcst_df_uid ) == n_windows * h
5355 for model in models :
5456 assert model .alias in fcst_df .columns
57+
58+
59+ def test_forecaster_forecast_with_level (models ):
60+ n_uids = 3
61+ level = [80 , 90 ]
62+ df = generate_series (n_series = n_uids , freq = "D" , min_length = 30 )
63+ forecaster = TimeCopilotForecaster (models = models )
64+ fcst_df = forecaster .forecast (df = df , h = 2 , freq = "D" , level = level )
65+ assert len (fcst_df ) == 2 * n_uids
66+ assert len (fcst_df .columns ) == 2 + len (models ) * (1 + 2 * len (level ))
67+ for model in models :
68+ assert model .alias in fcst_df .columns
69+ for lv in level :
70+ assert f"{ model .alias } -lo-{ lv } " in fcst_df .columns
71+ assert f"{ model .alias } -hi-{ lv } " in fcst_df .columns
72+
73+
74+ def test_forecaster_forecast_with_quantiles (models ):
75+ n_uids = 3
76+ quantiles = [0.1 , 0.9 ]
77+ df = generate_series (n_series = n_uids , freq = "D" , min_length = 30 )
78+ forecaster = TimeCopilotForecaster (models = models )
79+ fcst_df = forecaster .forecast (df = df , h = 2 , freq = "D" , quantiles = quantiles )
80+ assert len (fcst_df ) == 2 * n_uids
81+ assert len (fcst_df .columns ) == 2 + len (models ) * (1 + len (quantiles ))
82+ for model in models :
83+ assert model .alias in fcst_df .columns
84+ for q in quantiles :
85+ assert f"{ model .alias } -q-{ int (100 * q )} " in fcst_df .columns
0 commit comments