code: def testFft(self, inverse, real, hermitian, shape, dtype, n, axis):
      rng = jtu.rand_default(self.rng())
      args_maker = lambda: (rng(shape, dtype),)
      name = "fft"
      if real:
          name = "r" + name
      elif hermitian:
          name = "h" + name
      if inverse:
          name = "i" + name
      jnp_op = getattr(jnp.fft, name)
      np_op = getattr(np.fft, name)
      jnp_fn = lambda a: jnp_op(a, n=n, axis=axis)
      np_fn = lambda a: np_op(a, n=n, axis=axis)
      # Numpy promotes to complex128 aggressively.
      self._CheckAgainstNumpy(
          np_fn, jnp_fn, args_maker, check_dtypes=False, tol=1e-4
      )
      self._CompileAndCheck(jnp_op, args_maker)
  
imports: import itertools
  import numpy
  from absl.testing import absltest
  from absl.testing import parameterized
  import jax
  from jax import lax
  from jax import numpy
  from jax._src import config
  from jax._src import dtypes
  from jax._src import test_util
  from jax._src.numpy.util import promote_dtypes_complex
label_desc: Use image node_id 8 for calling the FftTest obj's underlying member method code with example usage: obj.testFft(inverse, real, hermitian, shape, dtype, n, axis) without return types