code: def test_LRU_cache8(self):
      # test if Plan1d and PlanNd can coexist in the same cache
      cache = config.get_plan_cache()
      assert cache.get_curr_size() == 0 <= cache.get_size()
  
      # do a 1D FFT
      a = testing.shaped_random((10,), cupy, cupy.float32)
      cupy.fft.fft(a)
      assert cache.get_curr_size() == 1 <= cache.get_size()
      assert isinstance(next(iter(cache))[1].plan, cufft.Plan1d)
  
      # then a 3D FFT
      a = testing.shaped_random((8, 8, 8), cupy, cupy.complex128)
      cupy.fft.fftn(a)
      assert cache.get_curr_size() == 2 <= cache.get_size()
      iterator = iter(cache)
  
      # the cached order is 1. PlanNd, 2. Plan1d
      assert isinstance(next(iterator)[1].plan, cufft.PlanNd)
      assert isinstance(next(iterator)[1].plan, cufft.Plan1d)
  
imports: import contextlib
  import io
  import queue
  import threading
  import unittest
  import pytest
  import cupy
  from cupy import testing
  from cupy.cuda import cufft
  from cupy.cuda import device
  from cupy.cuda import runtime
  from cupy.fft import config
  from .test_fft import multi_gpu_config, _skip_multi_gpu_bug
label_desc: Use image node_id 10 for calling the TestPlanCache obj's underlying member method code with example usage: obj.test_LRU_cache8() without return types