code: def test_conditional_mean_and_variance(
      likelihood_setup: LikelihoodSetup,
      X: TensorType,
      mu: TensorType,
      var: TensorType,
  ) -> None:
      """
      Here we make sure that the conditional_mean and conditional_var functions
      give the same result as the predict_mean_and_var function if the prediction
      has no uncertainty.
      """
      mu1 = likelihood_setup.likelihood.conditional_mean(X, mu)
      var1 = likelihood_setup.likelihood.conditional_variance(X, mu)
      mu2, var2 = likelihood_setup.likelihood.predict_mean_and_var(
          X, mu, var
      )
      assert_allclose(
          mu1,
          mu2,
          rtol=likelihood_setup.rtol,
          atol=likelihood_setup.atol,
      )
      assert_allclose(
          var1,
          var2,
          rtol=likelihood_setup.rtol,
          atol=likelihood_setup.atol,
      )
  
imports: from typing import Sequence, Tuple
  import numpy
  import pytest
  import tensorflow
  from numpy.testing import assert_allclose
  import gpflow
  import gpflow.ci_utils
  from gpflow.base import TensorType
  from gpflow.config import default_float, default_int
  from gpflow.likelihoods import HeteroskedasticTFPConditional, Likelihood, MonteCarloLikelihood, MultiLatentLikelihood, MultiLatentTFPConditional, QuadratureLikelihood, ScalarLikelihood, Bernoulli, Beta, Exponential, Gamma, Gaussian, GaussianMC, MultiClass, Ordinal, Poisson, StudentT
label_desc: Use image node_id 4 for calling a global function with example usage: test_conditional_mean_and_variance(likelihood_setup, X, mu, var) without return types