code: def test_cached_code(self):
      in1 = cupy.random.uniform(-1, 1, 100).astype(cupy.float32)
      in2 = cupy.random.uniform(-1, 1, 100).astype(cupy.float32)
      user_kernel_1 = cupy.ElementwiseKernel(
          "T x, T y",
          "T z",
          """
                  z = x + y;
              """,
          "uesr_kernel_1",
      )
      assert len(user_kernel_1._cached_codes) == 0
      user_kernel_1(in1, in2)
      assert len(user_kernel_1._cached_codes) == 1
      user_kernel_1(in1, in2)
      assert len(user_kernel_1._cached_codes) == 1
      user_kernel_1(in1.astype(cupy.float64), in2.astype(cupy.float64))
      assert len(user_kernel_1._cached_codes) == 2
  
imports: import unittest
  import numpy
  import pytest
  import cupy
  from cupy import testing
  from cupy.cuda import runtime
  from cupy.cuda.texture import ChannelFormatDescriptor, CUDAarray, ResourceDescriptor, TextureDescriptor, TextureObject
label_desc: Use image node_id 4 for calling the TestUserkernel obj's underlying member method code with example usage: obj.test_cached_code() without return types