code: def testAssertsNonNegativeRateAfterMutation(self):
      rate = tf.Variable([1.0, 2.0, 3.0])
      self.evaluate(rate.initializer)
      dist = self._make_poisson(rate=rate, validate_args=True)
      self.evaluate(dist.mean())
      with self.assertRaisesOpError(
          "Argument `rate` must be non-negative."
      ):
          with tf.control_dependencies([rate.assign([1.0, 2.0, -3.0])]):
              self.evaluate(dist.sample(seed=test_util.test_seed()))
  
imports: import numpy
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import poisson
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import implementation_selection
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 26 for calling the PoissonTest obj's underlying member method code with example usage: obj.testAssertsNonNegativeRateAfterMutation() without return types