code: def test_multiple_windows(df_time):
      # Case 1: automatically select variables
      transformer = WindowFeatures(
          window=[2, 3],
          functions=["sum", "mean"],
          periods=15,
          freq="min",
      )
      df_time_tr = transformer.fit_transform(df_time)
  
      # Expected
      X = df_time.copy()
      num_vars = ["ambient_temp", "module_temp", "irradiation"]
      tmp = (
          X[num_vars]
          .rolling(2)
          .agg(["sum", "mean"])
          .shift(periods=15, freq="min")
      )
      X_tr = X.merge(tmp, left_index=True, right_index=True, how="left")
      tmp = (
          X[num_vars]
          .rolling(3)
          .agg(["sum", "mean"])
          .shift(periods=15, freq="min")
      )
      X_tr = X_tr.merge(
          tmp, left_index=True, right_index=True, how="left"
      )
      X_tr.columns = transformer.get_feature_names_out()
  
      assert df_time_tr.equals(X_tr)
  
      # Case 2: user indicates multiple variables
      transformer = WindowFeatures(
          variables=["ambient_temp", "irradiation"],
          window=[2, 3],
          functions=["sum", "mean"],
          freq="30min",
      )
      df_time_tr = transformer.fit_transform(df_time)
  
      # Expected
      X = df_time.copy()
      tmp = (
          X[["ambient_temp", "irradiation"]]
          .rolling(2)
          .agg(["sum", "mean"])
          .shift(freq="30min")
      )
      X_tr = X.merge(tmp, left_index=True, right_index=True, how="left")
      tmp = (
          X[["ambient_temp", "irradiation"]]
          .rolling(3)
          .agg(["sum", "mean"])
          .shift(freq="30min")
      )
      X_tr = X_tr.merge(
          tmp, left_index=True, right_index=True, how="left"
      )
      X_tr.columns = transformer.get_feature_names_out()
  
      assert df_time_tr.equals(X_tr)
  
      # Case 4: user indicates 1 variable
      transformer = WindowFeatures(
          variables=["irradiation"],
          window=[2, 3],
          functions="std",
          periods=1,
      )
      df_time_tr = transformer.fit_transform(df_time)
  
      # Expected
      X = df_time.copy()
      tmp = X["irradiation"].rolling(2).agg("std").shift(periods=1)
      X_tr = X.merge(tmp, left_index=True, right_index=True, how="left")
      tmp = X["irradiation"].rolling(3).agg("std").shift(periods=1)
      X_tr = X_tr.merge(
          tmp, left_index=True, right_index=True, how="left"
      )
      X_tr.columns = transformer.get_feature_names_out()
  
      assert df_time_tr.equals(X_tr)
  
file_path: feature_engine/tests/test_time_series/test_forecasting/test_window_features.py
imports: import numpy
  import pandas
  import pytest
  from pandas.testing import assert_frame_equal
  from feature_engine.timeseries.forecasting import WindowFeatures
label_desc: Use image node_id 9 for calling a global function with example usage: test_multiple_windows(df_time) without return types