code: def test_tensor_info(self):
      self.assertEqual(
          features_lib.TensorInfo(shape=(None, 3), dtype=tf.string),
          features_lib.TensorInfo(shape=(None, 3), dtype=tf.string),
      )
  
      self.assertEqual(
          features_lib.TensorInfo(shape=(None, 3), dtype=np.object_),
          features_lib.TensorInfo(shape=(None, 3), dtype=np.object_),
      )
  
      self.assertNotEqual(
          features_lib.TensorInfo(shape=(None, 3), dtype=tf.string),
          features_lib.TensorInfo(shape=(None, 3), dtype=tf.int32),
      )
  
      self.assertNotEqual(
          features_lib.TensorInfo(shape=(2, 3), dtype=tf.string),
          features_lib.TensorInfo(shape=(5, 3), dtype=tf.string),
      )
  
      self.assertNotEqual(
          features_lib.TensorInfo(shape=(2, 3), dtype=np.object_),
          features_lib.TensorInfo(shape=(5, 3), dtype=np.object_),
      )
  
      t = features_lib.TensorInfo(shape=(None, 3), dtype=tf.string)
      self.assertEqual(t, features_lib.TensorInfo.copy_from(t))
  
imports: import pathlib
  import sys
  import textwrap
  from unittest import mock
  from absl import logging
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_datasets import testing
  from tensorflow_datasets.core import features
label_desc: Use image node_id 1 for calling the FeatureDictTest obj's underlying member method code with example usage: obj.test_tensor_info() without return types