code: def testBatesCDFLowTotalCount(self):
      ns = np.array([1.0, 2.0])
      ls = np.array([0.0, 1.0])
      hs = np.array([1.0, 3.0])
      b = bates.Bates(
          total_count=tf.expand_dims(ns, -1),
          low=ls,
          high=hs,
          validate_args=True,
      )
      self.assertAllEqual([2, 2], self.evaluate(b.batch_shape_tensor()))
      xs = np.array([0.0, 0.25, 0.5, 1.1, 1.5, 2.0])
      cdfs = b.cdf(tf.reshape(xs, (6, 1, 1)))
      self.assertAllEqual([6, 2, 2], self.evaluate(tf.shape(cdfs)))
  
      def expected_cdf(n, l, h, x):
          if n == 1:
              left = right = (x - l) / (h - l)
          elif n == 2:
              left = 2 * np.power((x - l) / (h - l), 2)
              right = 1 - 2 * np.power((h - x) / (h - l), 2)
          else:
              raise ValueError("Compute your own damn cdfs")
          return np.where(
              x < l,
              0,
              np.where(
                  x > h, 1, np.where(x < (l + h) / 2.0, left, right)
              ),
          )
  
      expected = [
          [
              [expected_cdf(n, l, h, x) for l, h in zip(ls, hs)]
              for n in ns
          ]
          for x in xs
      ]
      self.assertAllClose(expected, self.evaluate(cdfs))
  
imports: import fractions
  import math
  import sys
  from absl.testing import parameterized
  import hypothesis
  import hypothesis.strategies
  import numpy
  import scipy
  import scipy.integrate
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import bates
  from tensorflow_probability.python.internal import hypothesis_testlib
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 20 for calling the BatesTest obj's underlying member method code with example usage: obj.testBatesCDFLowTotalCount() and returns: np