code: def testBuildTensorInfoSparse(self):
      x = array_ops.sparse_placeholder(
          dtypes.float32, [42, 69], name="x"
      )
      x_tensor_info = utils.build_tensor_info(x)
      self.assertEqual(
          x.values.name, x_tensor_info.coo_sparse.values_tensor_name
      )
      self.assertEqual(
          x.indices.name, x_tensor_info.coo_sparse.indices_tensor_name
      )
      self.assertEqual(
          x.dense_shape.name,
          x_tensor_info.coo_sparse.dense_shape_tensor_name,
      )
      self.assertEqual(types_pb2.DT_FLOAT, x_tensor_info.dtype)
      self.assertEqual(2, len(x_tensor_info.tensor_shape.dim))
      self.assertEqual(42, x_tensor_info.tensor_shape.dim[0].size)
      self.assertEqual(69, x_tensor_info.tensor_shape.dim[1].size)
  
imports: from tensorflow.core.framework import types_pb2
  from tensorflow.core.protobuf import struct_pb2
  from tensorflow.python.eager import context
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import control_flow_ops
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.platform import test
  from tensorflow.python.saved_model import nested_structure_coder
  from tensorflow.python.saved_model import utils
label_desc: Use image node_id 3 for calling the UtilsTest obj's underlying member method code with example usage: obj.testBuildTensorInfoSparse() without return types