code: def test_empirical_cdfs_with_duplicates(self):
      # A batch of sorted samples with nontrivial repetition.
      # There are repetitions across batch members, which should not
      # confuse the CDF computation.
      # Shape: [num_samples, batch_size]
      samples = np.array([[1, 1, 1], [1, 2, 3], [2, 3, 3], [2, 4, 3]])
      expected_low_cdf_values = np.array(
          [
              [0, 0, 0.5, 0.5],
              [0, 0.25, 0.5, 0.75],
              [0, 0.25, 0.25, 0.25],
          ]
      )
      expected_low_cdf_values = np.array(
          [
              [0, 0, 0],
              [0, 0.25, 0.25],
              [0.5, 0.5, 0.25],
              [0.5, 0.75, 0.25],
          ]
      )
      low_empirical_cdfs = self.evaluate(
          st.empirical_cdfs(samples, samples, continuity="left")
      )
      self.assertAllEqual(expected_low_cdf_values, low_empirical_cdfs)
      expected_high_cdf_values = np.array(
          [[0.5, 0.5, 1, 1], [0.25, 0.5, 0.75, 1], [0.25, 1, 1, 1]]
      )
      expected_high_cdf_values = np.array(
          [[0.5, 0.25, 0.25], [0.5, 0.5, 1], [1, 0.75, 1], [1, 1, 1]]
      )
      high_empirical_cdfs = self.evaluate(
          st.empirical_cdfs(samples, samples, continuity="right")
      )
      self.assertAllEqual(expected_high_cdf_values, high_empirical_cdfs)
  
imports: import functools
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 4 for calling the StatisticalTestingTest obj's underlying member method code with example usage: obj.test_empirical_cdfs_with_duplicates() without return types