code: def test_empty_inputs(self):
      baseline_examples, test_examples, _ = get_test_input(
          include_skewed_features=True, include_close_floats=True
      )
  
      # Expect no skew results or sample in each case.
      expected_result = list()
  
      # Empty base collection.
      with beam.Pipeline(
          runner=beam_runner_util.get_test_runner()
      ) as p:
          baseline_examples_1 = p | "Create Base" >> beam.Create([])
          test_examples_1 = p | "Create Test" >> beam.Create(
              test_examples
          )
          skew_result_1, skew_sample_1 = _unpack_results(
              (baseline_examples_1, test_examples_1)
              | feature_skew_detector.DetectFeatureSkewImpl(
                  [_IDENTIFIER1, _IDENTIFIER2],
                  [_IGNORE_FEATURE],
                  sample_size=1,
              )
          )
          util.assert_that(
              skew_result_1,
              test_util.make_skew_result_equal_fn(
                  self, expected_result
              ),
              "CheckSkewResult",
          )
          util.assert_that(
              skew_sample_1,
              make_sample_equal_fn(self, 0, expected_result),
              "CheckSkewSample",
          )
  
      # Empty test collection.
      with beam.Pipeline(
          runner=beam_runner_util.get_test_runner()
      ) as p:
          baseline_examples_2 = p | "Create Base" >> beam.Create(
              baseline_examples
          )
          test_examples_2 = p | "Create Test" >> beam.Create([])
          skew_result_2, skew_sample_2 = _unpack_results(
              (baseline_examples_2, test_examples_2)
              | feature_skew_detector.DetectFeatureSkewImpl(
                  [_IDENTIFIER1, _IDENTIFIER2],
                  [_IGNORE_FEATURE],
                  sample_size=1,
              )
          )
          util.assert_that(
              skew_result_2,
              test_util.make_skew_result_equal_fn(
                  self, expected_result
              ),
              "CheckSkewResult",
          )
          util.assert_that(
              skew_sample_2,
              make_sample_equal_fn(self, 0, expected_result),
              "CheckSkewSample",
          )
  
      # Empty base and test collections.
      with beam.Pipeline(
          runner=beam_runner_util.get_test_runner()
      ) as p:
          baseline_examples_3 = p | "Create Base" >> beam.Create([])
          test_examples_3 = p | "Create Test" >> beam.Create([])
          skew_result_3, skew_sample_3 = _unpack_results(
              (baseline_examples_3, test_examples_3)
              | feature_skew_detector.DetectFeatureSkewImpl(
                  [_IDENTIFIER1, _IDENTIFIER2],
                  [_IGNORE_FEATURE],
                  sample_size=1,
              )
          )
          util.assert_that(
              skew_result_3,
              test_util.make_skew_result_equal_fn(
                  self, expected_result
              ),
              "CheckSkewResult",
          )
          util.assert_that(
              skew_sample_3,
              make_sample_equal_fn(self, 0, expected_result),
              "CheckSkewSample",
          )
  
imports: import traceback
  from absl.testing import absltest
  from absl.testing import parameterized
  import apache_beam
  from apache_beam.testing import util
  import tensorflow
  from tensorflow_data_validation.utils import beam_runner_util
  from tensorflow_data_validation.skew import feature_skew_detector
  from tensorflow_data_validation.skew.protos import feature_skew_results_pb2
  from tensorflow_data_validation.utils import test_util
  from google.protobuf import text_format
label_desc: Use image node_id 4 for calling the FeatureSkewDetectorTest obj's underlying member method code with example usage: obj.test_empty_inputs() without return types