code: def test_target_zero(self, exact, tree):
      record1 = tf.constant(8.5)
      record2 = tf.constant(7.25)
  
      query = _make_quantile_estimator_query(
          initial_estimate=10.0,
          target_quantile=0.0,
          learning_rate=1.0,
          below_estimate_stddev=0.0,
          expected_num_records=(None if exact else 2.0),
          geometric_update=False,
          tree_aggregation=tree,
      )
  
      global_state = query.initial_global_state()
  
      initial_estimate = global_state.current_estimate
      self.assertAllClose(initial_estimate, 10.0)
  
      # On the first two iterations, both records are below, so the estimate goes
      # down by 1.0 (the learning rate). When the estimate reaches 8.0, only one
      # record is below, so the estimate goes down by only 0.5. After two more
      # iterations, both records are below, and the estimate stays there (at 7.0).
  
      expected_estimates = [9.0, 8.0, 7.5, 7.0, 7.0]
      for expected_estimate in expected_estimates:
          actual_estimate, global_state = test_utils.run_query(
              query, [record1, record2], global_state
          )
  
          self.assertAllClose(
              actual_estimate.numpy(), expected_estimate
          )
  
file_path: privacy/tensorflow_privacy/privacy/dp_query/quantile_estimator_query_test.py
imports: from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import quantile_estimator_query
  from tensorflow_privacy.privacy.dp_query import test_utils
label_desc: Use image node_id 1 for calling the QuantileEstimatorQueryTest obj's underlying member method code with example usage: obj.test_target_zero(exact, tree) without return types