code: def testRun(self, preserve, trailing_in, trailing_out):
      rng = np.random.RandomState(0)
      input_shape = preserve + trailing_in
      output_shape = (
          preserve + np.zeros(trailing_in).reshape(trailing_out).shape
      )
      input_spec = tf.TensorSpec(input_shape, tf.float32)
      mod = reshape.Reshape(
          output_shape=trailing_out, preserve_dims=len(preserve)
      )
      cf = tf.function(mod).get_concrete_function(input_spec)
      (output,) = cf.outputs
      self.assertEqual(output.shape.as_list(), list(output_shape))
  
      actual_input_shape = [13 if i is None else i for i in input_shape]
      expected_output_shape = [
          13 if i is None else i for i in output_shape
      ]
      actual_input = rng.rand(*actual_input_shape).astype(np.float32)
      expected_output = actual_input.reshape(expected_output_shape)
      actual_output = cf(tf.convert_to_tensor(actual_input))
      self.assertAllEqual(actual_output, expected_output)
  
imports: from absl.testing import parameterized
  import numpy
  from sonnet.src import reshape
  from sonnet.src import test_utils
  import tensorflow
label_desc: Use image node_id 15 for calling the ReshapeTest obj's underlying member method code with example usage: obj.testRun(preserve, trailing_in, trailing_out) without return types