code: def test_best_model(self):
      random.seed(1)
      sine_series = st(length=50, value_y_offset=50)
      linear_series = lt(length=50)
      series = sine_series + linear_series
      train_series, val_series = series.split_before(
          series.time_index[-10]
      )
      thetas = np.linspace(-3, 3, 30)
      best_model, _, _ = FourTheta.select_best_model(
          train_series, thetas
      )
      model = FourTheta(
          random.choice(thetas),
          model_mode=random.choice(list(ModelMode)),
          trend_mode=random.choice(list(TrendMode)),
          season_mode=random.choice(list(SeasonalityMode)),
      )
      model.fit(train_series)
      best_model.fit(train_series)
      forecast_random = model.predict(10)
      forecast_best = best_model.predict(10)
      assert mape(val_series, forecast_best) <= mape(
          val_series, forecast_random
      )
  
file_path: darts/darts/tests/models/forecasting/test_4theta.py
imports: import random
  import numpy
  import pytest
  from darts.metrics import mape
  from darts.models import FourTheta, Theta
  from darts.utils.timeseries_generation import linear_timeseries
  from darts.utils.timeseries_generation import random_walk_timeseries
  from darts.utils.timeseries_generation import sine_timeseries
  from darts.utils.utils import ModelMode, SeasonalityMode, TrendMode
label_desc: Use image node_id 5 for calling the TestFourTheta obj's underlying member method code with example usage: obj.test_best_model() without return types