code: def _test_selector(self, test_name, expected_smapes):
      model0 = Arima(
          ArimaConfig(
              order=(6, 1, 2),
              max_forecast_steps=50,
              transform=TemporalResample("1h"),
          )
      )
      model1 = Arima(
          ArimaConfig(
              order=(24, 1, 0),
              max_forecast_steps=50,
              transform=TemporalResample("10min"),
          )
      )
      model2 = AutoProphet(
          config=AutoProphetConfig(
              target_seq_index=0,
              transform=BoxCoxTransform(lmbda=0),
              periodicity_strategy="Max",
              information_criterion="AICc",
          )
      )
      self.ensemble = ForecasterEnsemble(
          config=ForecasterEnsembleConfig(
              models=[model0, model1, model2],
              combiner=ModelSelector(metric=ForecastMetric.sMAPE),
              target_seq_index=0,
          )
      )
      self.run_test(test_name)
      # We expect the model selector to select Prophet because it gets the lowest validation sMAPE
      valid_smapes = np.asarray(self.ensemble.combiner.metric_values)
      self.assertAlmostEqual(
          np.nanmax(np.abs(valid_smapes - expected_smapes)), 0, delta=2
      )
      self.assertSequenceEqual(
          self.ensemble.models_used, [False, False, True]
      )
  
imports: import logging
  from os.path import abspath, dirname, join
  import sys
  import unittest
  import numpy
  import pandas
  from merlion.models.ensemble.forecast import ForecasterEnsemble, ForecasterEnsembleConfig
  from merlion.models.ensemble.combine import ModelSelector, Mean
  from merlion.evaluate.forecast import ForecastMetric
  from merlion.models.automl.autoprophet import AutoProphet, AutoProphetConfig
  from merlion.models.forecast.arima import Arima, ArimaConfig
  from merlion.models.factory import ModelFactory
  from merlion.transform.base import Identity
  from merlion.transform.normalize import BoxCoxTransform
  from merlion.transform.resample import TemporalResample
  from merlion.utils.data_io import csv_to_time_series, TimeSeries
label_desc: Use image node_id 3 for calling the TestForecastEnsemble obj's underlying member method code with example usage: obj._test_selector(test_name, expected_smapes) without return types