code: def testMakeOutputSplitNames(self):
      split_names = utils.generate_output_split_names(
          input_config=example_gen_pb2.Input(
              splits=[
                  example_gen_pb2.Input.Split(
                      name="train", pattern="train/*"
                  ),
                  example_gen_pb2.Input.Split(
                      name="eval", pattern="eval/*"
                  ),
              ]
          ),
          output_config=example_gen_pb2.Output(),
      )
      self.assertListEqual(["train", "eval"], split_names)
  
      split_names = utils.generate_output_split_names(
          input_config=example_gen_pb2.Input(
              splits=[
                  example_gen_pb2.Input.Split(
                      name="single", pattern="single/*"
                  )
              ]
          ),
          output_config=example_gen_pb2.Output(
              split_config=example_gen_pb2.SplitConfig(
                  splits=[
                      example_gen_pb2.SplitConfig.Split(
                          name="train", hash_buckets=2
                      ),
                      example_gen_pb2.SplitConfig.Split(
                          name="eval", hash_buckets=1
                      ),
                  ]
              )
          ),
      )
      self.assertListEqual(["train", "eval"], split_names)
  
imports: import os
  import re
  import tensorflow
  from tfx.components.example_gen import utils
  from tfx.dsl.io import fileio
  from tfx.orchestration import data_types
  from tfx.proto import example_gen_pb2
  from tfx.proto import range_config_pb2
  from tfx.utils import io_utils
  from tfx.utils import json_utils
label_desc: Use image node_id 3 for calling the UtilsTest obj's underlying member method code with example usage: obj.testMakeOutputSplitNames() without return types