code: def testAssertsValidImmutableParams(self):
      with self.assertRaisesOpError(
          "`concentration` must be non-negative"
      ):
          vmf = von_mises_fisher.VonMisesFisher(
              mean_direction=tf.math.l2_normalize([1.0, 2, 3], axis=-1),
              concentration=-1.0,
              validate_args=True,
              allow_nan_stats=False,
          )
          self.evaluate(vmf.mean())
  
      with self.assertRaisesOpError(
          "`mean_direction` may not have scalar event shape"
      ):
          vmf = von_mises_fisher.VonMisesFisher(
              mean_direction=[1.0],
              concentration=0.0,
              validate_args=True,
              allow_nan_stats=False,
          )
          self.evaluate(vmf.mean())
  
      with self.assertRaisesOpError(
          "`mean_direction` must be unit-length"
      ):
          vmf = von_mises_fisher.VonMisesFisher(
              mean_direction=tf.convert_to_tensor([1.0, 2, 3]),
              concentration=1.0,
              validate_args=True,
              allow_nan_stats=False,
          )
          self.evaluate(vmf.mean())
  
imports: from absl.testing import parameterized
  import numpy
  from scipy import special
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import spherical_uniform
  from tensorflow_probability.python.distributions import von_mises_fisher
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 14 for calling the VonMisesFisherTest obj's underlying member method code with example usage: obj.testAssertsValidImmutableParams() without return types