code: def test_hawkes_em_get_kernel_values(self):
      kernel_support = 4
      kernel_size = 10
      em = HawkesEM(
          kernel_support=kernel_support,
          kernel_size=kernel_size,
          n_threads=2,
          max_iter=11,
          verbose=False,
      )
      em.fit(self.events)
  
      # Test 0
      self.assertEqual(
          em.kernel.shape,
          (self.n_nodes, self.n_nodes, kernel_size),
          "Estimated kernel has wrong shape"
          f"Expected shape: {(self.n_nodes, self.n_nodes, kernel_size)}\n"
          f"Shape of estimated kernel: {em.kernel.shape}\n",
      )
      # Test 1
      self.assertTrue(
          np.all(em.kernel >= 0.0),
          "Error: kernel cannot take negative values!",
      )
  
      # Test 2
      # The method `get_kernel_values` when evaluated at the
      # discrtetization point of the kernel must yield the values stored in `kernel`
      for i in range(self.n_nodes):
          for j in range(self.n_nodes):
              vals = em.get_kernel_values(
                  i, j, em.kernel_discretization[1:]
              )
              self.assertTrue(np.allclose(vals, em.kernel[i, j, :]))
  
imports: import unittest
  import numpy
  from tick.hawkes.inference import HawkesEM
  from tick.hawkes.model.tests.model_hawkes_test_utils import hawkes_intensities, hawkes_log_likelihood
  from tick.hawkes import SimuHawkes, HawkesKernelTimeFunc, HawkesKernelExp, SimuHawkesExpKernels
  from tick.base import TimeFunction
label_desc: Use image node_id 11 for calling the Test obj's underlying member method code with example usage: obj.test_hawkes_em_get_kernel_values() without return types