class_docstr: Test the abstract base class behaviors.
class_docstr_tok: ["Test","the","abstract","base","class","behaviors","."]
code: def testStaticShapesAndValuesOfSum(self):
      k0 = TestKernel(PARAMS_0)
      k1 = TestKernel(PARAMS_1)
      k2 = TestKernel(PARAMS_2)
      k21 = TestKernel(PARAMS_21)
  
      x, y, _ = self.createKernelInputs()
      sum_kernel = k0 + k1 + k2 + k21
      self.assertAllEqual([2, 2], sum_kernel.batch_shape)
      self.assertEqual(tf.float32, sum_kernel.dtype)
      self.assertAllEqual(
          sum(
              [
                  self.evaluate(k.matrix(x, y))
                  for k in sum_kernel.kernels
              ]
          ),
          self.evaluate(sum_kernel.matrix(x, y)),
      )
  
      self.assertAllEqual([2], sum_kernel[..., 1].batch_shape)
      self.assertAllEqual(
          sum(
              [
                  self.evaluate(k.matrix(x, y))
                  for k in sum_kernel[..., 1].kernels
              ]
          ),
          self.evaluate(sum_kernel[..., 1].matrix(x, y)),
      )
  
imports: import functools
  import operator
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math.psd_kernels import positive_semidefinite_kernel
  from tensorflow_probability.python.math.psd_kernels.internal import test_util
  from tensorflow_probability.python.math.psd_kernels.internal import util
label_desc: Use image node_id 17 for calling the PositiveSemidefiniteKernelTest obj's underlying member method code with example usage: obj.testStaticShapesAndValuesOfSum() without return types