code: def testBatesPDFisNormalized(self, total_count, bounds):
      low, high = tf.cast(bounds[0], tf.float64), tf.cast(
          bounds[1], tf.float64
      )
      d = bates.Bates(total_count=total_count, low=low, high=high)
      # This is about as high as JAX can go and still finish in time.
      nx = 100
      x = tf.linspace(low, high, nx)
      y = self.evaluate(d.prob(x))
      dx = self.evaluate(x[1] - x[0])
      self.assertAllClose(
          scipy.integrate.simps(y=y, dx=dx), 1.0, atol=5e-05, rtol=5e-05
      )
  
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 18 for calling the BatesTest obj's underlying member method code with example usage: obj.testBatesPDFisNormalized(total_count, bounds) without return types