code: def test_basic_functionality(daily_data):
      """Tests __init__ and attributes set during fit"""
      coverage = 0.90
      model = OneByOneEstimator(
          estimator="SimpleSilverkiteEstimator",
          forecast_horizon=3,
          estimator_map=True,
          score_func=mean_squared_error,
          coverage=coverage,
          null_model_params=None,
          estimator_params={
              "autoreg_dict": "auto",
              "yearly_seasonality": 2,
              "feature_sets_enabled": False,
          },
      )
  
      # Initialization.
      assert model.score_func == mean_squared_error
      assert model.coverage == coverage
      assert model.null_model_params is None
      assert model.estimator == "SimpleSilverkiteEstimator"
      assert model.forecast_horizon == 3
      assert model.estimator_map is True
      assert model.estimator_params == {
          "autoreg_dict": "auto",
          "yearly_seasonality": 2,
          "feature_sets_enabled": False,
      }
  
      assert model.estimators is None
      assert model.estimator_map_list is None
      assert model.estimator_param_names is None
      assert model.estimator_class is None
      assert model.model_results is None
      assert model.pred_indices is None
      assert model.train_end_date is None
  
      # Attributes are set during fit.
      train_df = daily_data.get("train_df").copy()
      model.fit(train_df)
      assert model.estimator_map_list == [1, 1, 1]
      assert model.estimator_class == SimpleSilverkiteEstimator
      assert len(model.estimators) == 3
      assert len(model.model_results) == 3
      assert model.pred_indices == [0, 1, 2, 3]
      assert (
          model.train_end_date == pd.to_datetime(train_df["ts"]).max()
      )
  
      assert model.estimators[0].autoreg_dict == "auto"
      assert model.estimators[1].yearly_seasonality == 2
      assert model.estimators[2].feature_sets_enabled is False
  
      # Coverage provided, prediction intervals should present.
      test_df = daily_data.get("test_df").copy()
      predict = model.predict(test_df.iloc[:3])
      assert cst.PREDICTED_LOWER_COL in predict.columns
      assert cst.PREDICTED_UPPER_COL in predict.columns
      assert model.estimators[0].forecast.shape[0] == 1
      assert model.estimators[1].forecast.shape[0] == 1
      assert model.estimators[2].forecast.shape[0] == 1
      assert model.forecast.shape[0] == 3
  
      # Prediction on both training and testing.
      model.predict(
          pd.concat([train_df, test_df.iloc[:3]], axis=0).reset_index(
              drop=True
          )
      )
      assert model.forecast.shape[0] == train_df.shape[0] + 3
  
file_path: greykite/greykite/tests/sklearn/estimator/test_one_by_one_estimator.py
imports: import datetime
  import sys
  import pandas
  import pytest
  from sklearn.metrics import mean_squared_error
  import greykite.common.constants
  from greykite.common.testing_utils import generate_df_for_tests
  from greykite.sklearn.estimator.one_by_one_estimator import OneByOneEstimator
  from greykite.sklearn.estimator.simple_silverkite_estimator import SimpleSilverkiteEstimator
label_desc: Use image node_id 2 for calling a global function with example usage: test_basic_functionality(daily_data) without return types