code: def test_exog_to_direct_when_steps_len_exog_exog_DataFrame_3d_float_int_category():
      """
      Test exog_to_direct results when using steps len exog (5) and exog is a
      pandas DataFrame with 3 columns of float, int, category.
      """
      exog = pd.DataFrame(
          {
              "exog_1": pd.Series(np.arange(100, 103), dtype="float64"),
              "exog_2": pd.Series(np.arange(1000, 1003), dtype="int64"),
              "exog_3": pd.Categorical(range(100, 103)),
          }
      )
      results = exog_to_direct(exog=exog, steps=len(exog))
      expected = (
          pd.DataFrame(
              data=np.array(
                  [
                      [
                          100.0,
                          1000.0,
                          100.0,
                          101.0,
                          1001.0,
                          101.0,
                          102.0,
                          1002.0,
                          102.0,
                      ]
                  ]
              ),
              index=pd.RangeIndex(start=2, stop=3, step=1),
              columns=[
                  "exog_1_step_1",
                  "exog_2_step_1",
                  "exog_3_step_1",
                  "exog_1_step_2",
                  "exog_2_step_2",
                  "exog_3_step_2",
                  "exog_1_step_3",
                  "exog_2_step_3",
                  "exog_3_step_3",
              ],
          )
          .astype(
              {
                  "exog_1_step_1": "float64",
                  "exog_2_step_1": "int64",
                  "exog_3_step_1": "int64",
                  "exog_1_step_2": "float64",
                  "exog_2_step_2": "int64",
                  "exog_3_step_2": "int64",
                  "exog_1_step_3": "float64",
                  "exog_2_step_3": "int64",
                  "exog_3_step_3": "int64",
              }
          )
          .astype(
              {
                  "exog_3_step_1": CategoricalDtype(
                      categories=[100, 101, 102], ordered=False
                  ),
                  "exog_3_step_2": CategoricalDtype(
                      categories=[100, 101, 102], ordered=False
                  ),
                  "exog_3_step_3": CategoricalDtype(
                      categories=[100, 101, 102], ordered=False
                  ),
              }
          )
      )
  
      pd.testing.assert_frame_equal(results, expected)
  
file_path: skforecast/skforecast/utils/tests/test_exog_to_direct.py
imports: import re
  import pytest
  import numpy
  import pandas
  from skforecast.utils import exog_to_direct
  from pandas.api.types import CategoricalDtype
label_desc: Use image node_id 8 for calling a global function with example usage: test_exog_to_direct_when_steps_len_exog_exog_DataFrame_3d_float_int_category() without return types