code: def test_multi_output_to_featurebase():
      df = generate_fake_dataframe(
          col_defs=[
              ("idx", "Double", {"index"}),
              ("f_1", "NaturalLanguage"),
          ],
      )
      es = EntitySet(id="test")
      es.add_dataframe(df, df.ww.name)
  
      origin_features = schema_to_features(df.ww.schema)
      f_1 = [f for f in origin_features if f.name == "f_1"][0]
      features = generate_features_from_primitives(
          [f_1], [MultiOutputPrimitiveForTest()]
      )
  
      lsa_features = [
          f for f in features if f.get_primitive_name() == "test_mo"
      ]
      assert len(lsa_features) == 2
  
      # Test Single LiteFeature
      fb = _convert_feature_to_featurebase(lsa_features[0], df, {})
      assert isinstance(fb, TransformFeature)
      assert fb.get_name() == "TEST_MO(f_1)"
      assert len(fb.base_features) == 1
      assert set(fb.get_feature_names()) == set(
          ["TEST_MO(f_1)[0]", "TEST_MO(f_1)[1]"]
      )
      assert fb.base_features[0].get_name() == "f_1"
  
      # Test that feature gets consolidated
      fb_list = convert_feature_list_to_featurebase_list(
          lsa_features, df
      )
      assert len(fb_list) == 1
      assert fb_list[0].get_name() == "TEST_MO(f_1)"
      assert len(fb_list[0].base_features) == 1
      assert set(fb_list[0].get_feature_names()) == set(
          ["TEST_MO(f_1)[0]", "TEST_MO(f_1)[1]"],
      )
      assert fb_list[0].base_features[0].get_name() == "f_1"
  
      lsa_features[0].set_alias("f_2")
      lsa_features[1].set_alias("f_3")
  
      fb = _convert_feature_to_featurebase(lsa_features[0], df, {})
      assert isinstance(fb, TransformFeature)
      assert len(fb.base_features) == 1
      assert set(fb.get_feature_names()) == set(["f_2", "f_3"])
      assert fb.base_features[0].get_name() == "f_1"
  
      # Test that feature gets consolidated
      fb_list = convert_feature_list_to_featurebase_list(
          lsa_features, df
      )
      assert len(fb_list) == 1
      assert len(fb_list[0].base_features) == 1
      assert set(fb_list[0].get_feature_names()) == set(["f_2", "f_3"])
      assert fb_list[0].base_features[0].get_name() == "f_1"
  
file_path: featuretools/featuretools/tests/feature_discovery/test_convertors.py
imports: from woodwork.logical_types import Double, NaturalLanguage
  from featuretools.entityset.entityset import EntitySet
  from featuretools.feature_base.feature_base import FeatureBase, IdentityFeature, TransformFeature
  from featuretools.feature_discovery.convertors import _convert_feature_to_featurebase, convert_feature_list_to_featurebase_list, convert_featurebase_list_to_feature_list
  from featuretools.feature_discovery.feature_discovery import generate_features_from_primitives, schema_to_features
  from featuretools.feature_discovery.LiteFeature import LiteFeature
  from featuretools.primitives import Absolute, AddNumeric, Lag
  from featuretools.synthesis import dfs
  from featuretools.tests.feature_discovery.test_feature_discovery import MultiOutputPrimitiveForTest
  from featuretools.tests.testing_utils.generate_fake_dataframe import generate_fake_dataframe
label_desc: Use image node_id 4 for calling a global function with example usage: test_multi_output_to_featurebase() without return types