code: def test_get_feature_names_out(df_time):
      # input features
      original_features = [
          "ambient_temp",
          "module_temp",
          "irradiation",
          "color",
      ]
  
      # case 1: 1 window, multiple variables, multiple functions
      tr = WindowFeatures(window=3, functions=["mean", "sum"])
      tr.fit(df_time)
  
      # expected
      output = [
          "ambient_temp_window_3_mean",
          "ambient_temp_window_3_sum",
          "module_temp_window_3_mean",
          "module_temp_window_3_sum",
          "irradiation_window_3_mean",
          "irradiation_window_3_sum",
      ]
      output = original_features + output
      assert tr.get_feature_names_out(input_features=None) == output
      assert (
          tr.get_feature_names_out(input_features=original_features)
          == output
      )
  
      with pytest.raises(ValueError):
          # get error when a user passes a string instead of list
          tr.get_feature_names_out(input_features=["ambient_temp"])
  
      with pytest.raises(ValueError):
          # assert error when uses passes features that were not transformed
          tr.get_feature_names_out(input_features=["color"])
  
      # case 2: 1 window, 1 variable, multiple functions
      tr = WindowFeatures(
          variables="ambient_temp",
          window=2,
          functions=["sum", "mean", "count"],
      )
      tr.fit(df_time)
  
      # expected
      output = [
          "ambient_temp_window_2_sum",
          "ambient_temp_window_2_mean",
          "ambient_temp_window_2_count",
      ]
      output = original_features + output
      assert tr.get_feature_names_out(input_features=None) == output
      assert (
          tr.get_feature_names_out(input_features=df_time.columns)
          == output
      )
  
      # case 3: multiple windows, multiple variables, multiple functions
      tr = WindowFeatures(window=[2, 3], functions=["mean", "sum"])
      tr.fit(df_time)
  
      # expected
      output = [
          "ambient_temp_window_2_mean",
          "ambient_temp_window_2_sum",
          "module_temp_window_2_mean",
          "module_temp_window_2_sum",
          "irradiation_window_2_mean",
          "irradiation_window_2_sum",
          "ambient_temp_window_3_mean",
          "ambient_temp_window_3_sum",
          "module_temp_window_3_mean",
          "module_temp_window_3_sum",
          "irradiation_window_3_mean",
          "irradiation_window_3_sum",
      ]
      output = original_features + output
      assert tr.get_feature_names_out(input_features=None) == output
      assert (
          tr.get_feature_names_out(input_features=original_features)
          == output
      )
  
      # case 4: 1 window, multiple variables, 1 function
      tr = WindowFeatures(window=2, functions=["mean"])
      tr.fit(df_time)
  
      # expected
      output = [
          "ambient_temp_window_2_mean",
          "module_temp_window_2_mean",
          "irradiation_window_2_mean",
      ]
      output = original_features + output
      assert tr.get_feature_names_out(input_features=None) == output
  
      # case 5: When function is a string
      tr = WindowFeatures(window=2, functions="mean")
      tr.fit(df_time)
  
      # expected
      output = [
          "ambient_temp_window_2_mean",
          "module_temp_window_2_mean",
          "irradiation_window_2_mean",
      ]
      output = original_features + output
      assert tr.get_feature_names_out(input_features=None) == output
      assert (
          tr.get_feature_names_out(input_features=original_features)
          == output
      )
  
      # case 6: drop_original is True
      tr = WindowFeatures(
          window=2, functions="mean", drop_original=True
      )
      tr.fit(df_time)
  
      # expected
      output = [
          "ambient_temp_window_2_mean",
          "module_temp_window_2_mean",
          "irradiation_window_2_mean",
      ]
      assert (
          tr.get_feature_names_out(input_features=None)
          == ["color"] + output
      )
      assert (
          tr.get_feature_names_out(input_features=original_features)
          == ["color"] + output
      )
  
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 6 for calling a global function with example usage: test_get_feature_names_out(df_time) without return types