class_docstr: Tests shape-related utility functions.
      
docstr: Test :func:`texar.tf.utils.shapes.pad_and_concat`.
          
code: def test_pad_and_concat(self):
      """Test :func:`texar.tf.utils.shapes.pad_and_concat`."""
      a = tf.ones([3, 10, 2])
      b = tf.ones([4, 20, 3])
      c = tf.ones([5, 1, 4])
  
      t = shapes.pad_and_concat([a, b, c], 0)
      self.assertEqual(t.shape, [3 + 4 + 5, 20, 4])
      t = shapes.pad_and_concat([a, b, c], 1)
      self.assertEqual(t.shape, [5, 10 + 20 + 1, 4])
      t = shapes.pad_and_concat([a, b, c], 2)
      self.assertEqual(t.shape, [5, 20, 2 + 3 + 4])
  
      d = tf.placeholder(dtype=tf.float32, shape=[6, None, 1])
      t = shapes.pad_and_concat([a, b, c, d], 0)
      with self.test_session() as sess:
          t_ = sess.run(t, feed_dict={d: np.ones([6, 2, 1])})
          self.assertEqual(list(t_.shape), [3 + 4 + 5 + 6, 20, 4])
  
file_path: texar/tests/utils/shapes_test.py
imports: import numpy
  import tensorflow
  from texar.tf.utils import shapes
label_desc: Use image node_id 3 for calling the ShapesTest obj's underlying member method code with example usage: obj.test_pad_and_concat() without return types