code: def test_input_types(
      self, x_dtype, clip_value_min_dtype, clip_value_max_dtype
  ):
      # Tests combinations of input dtypes.
      stage = clipping.ClipByValueEncodingStage(
          tf.constant(-1.0, clip_value_min_dtype),
          tf.constant(1.0, clip_value_max_dtype),
      )
      x = tf.constant([-2.0, -1.0, 0.0, 1.0, 2.0], dtype=x_dtype)
      encode_params, decode_params = stage.get_params()
      encoded_x, decoded_x = self.encode_decode_x(
          stage, x, encode_params, decode_params
      )
      test_data = test_utils.TestData(x, encoded_x, decoded_x)
      test_data = self.evaluate_test_data(test_data)
  
      self.common_asserts_for_test_data(test_data)
      self.assertAllEqual([-2.0, -1.0, 0.0, 1.0, 2.0], test_data.x)
      self.assertAllClose(
          [-1.0, -1.0, 0.0, 1.0, 1.0], test_data.decoded_x
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import itertools
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_model_optimization.python.core.internal.tensor_encoding.stages.research import clipping
  from tensorflow_model_optimization.python.core.internal.tensor_encoding.testing import test_utils
label_desc: Use image node_id 8 for calling the ClipByValueEncodingStageTest obj's underlying member method code with example usage: obj.test_input_types(x_dtype, clip_value_min_dtype, clip_value_max_dtype) without return types