code: def testDotShapeInference(self):
      a = array_ops.placeholder(np.float32, shape=(1, 2, 3, 4))
      b = array_ops.placeholder(np.float32, shape=(4, 5, 2, 6))
  
      dim_nums = xla_data_pb2.DotDimensionNumbers()
      dim_nums.lhs_contracting_dimensions.append(1)
      dim_nums.rhs_contracting_dimensions.append(2)
      dim_nums.lhs_batch_dimensions.append(3)
      dim_nums.rhs_batch_dimensions.append(0)
  
      c = xla.dot_general(a, b, dim_nums)
      self.assertEqual(
          c.shape, tensor_shape.TensorShape([4, 1, 3, 5, 6])
      )
  
imports: import functools
  from absl.testing import parameterized
  import numpy
  from tensorflow.compiler.tests import xla_test
  from tensorflow.compiler.tf2xla.ops import gen_xla_ops
  from tensorflow.compiler.tf2xla.python import xla
  from local_xla.xla import xla_data_pb2
  from tensorflow.python.eager import def_function
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import function
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import array_ops_stack
  from tensorflow.python.ops import random_ops_util
  from tensorflow.python.platform import googletest
label_desc: Use image node_id 1 for calling the XlaOpsShapeInferenceTest obj's underlying member method code with example usage: obj.testDotShapeInference() without return types