code: def test_reduce_batch_minus_min_and_max(
      self,
      x,
      expected_x_minus_min,
      expected_x_max,
      reduce_instance_dims,
      input_signature,
      function_handler,
  ):
      @function_handler(input_signature=input_signature)
      def _reduce_batch_minus_min_and_max(x):
          result = tf_utils.reduce_batch_minus_min_and_max(
              x, reduce_instance_dims=reduce_instance_dims
          )
          # Verify that the output shapes are maintained.
          if not reduce_instance_dims and not isinstance(
              x, tf.RaggedTensor
          ):
              for tensor in result:
                  self.assertEqual(
                      x.get_shape()[1:].as_list(),
                      tensor.get_shape().as_list(),
                  )
          return result
  
      x_minus_min, x_max = _reduce_batch_minus_min_and_max(x)
  
      self.assertAllEqual(x_minus_min, expected_x_minus_min)
      self.assertAllEqual(x_max, expected_x_max)
  
imports: import os
  import numpy
  from packaging import version
  import tensorflow
  from tensorflow_transform import analyzers
  from tensorflow_transform import annotators
  from tensorflow_transform import tf_utils
  from tensorflow_transform import test_case
  from tensorflow.python.framework import composite_tensor
label_desc: Use image node_id 20 for calling the TFUtilsTest obj's underlying member method code with example usage: obj.test_reduce_batch_minus_min_and_max(x, expected_x_minus_min, expected_x_max, reduce_instance_dims, input_signature, function_handler) and returns: result