code: def test_simulation(self):
      def run_tests(
          n_cases,
          n_features,
          sparse,
          exposure_type,
          distribution,
          time_drift,
      ):
          n_intervals = 5
          n_lags = np.repeat(2, n_features).astype("uint64")
          sim = SimuSCCS(
              n_cases,
              n_intervals,
              n_features,
              n_lags,
              time_drift,
              exposure_type,
              distribution,
              sparse,
              verbose=False,
          )
          X, X_c, y, c, coeffs = sim.simulate()
          self.assertEqual(len(X), n_cases)
          self.assertEqual(len(y), n_cases)
          self.assertEqual(X[0].shape, (n_intervals, n_features))
          self.assertEqual(y[0].shape, (n_intervals,))
          self.assertEqual(c.shape, (n_cases,))
          [
              self.assertEqual(co.shape, (int(n_lags[i] + 1),))
              for i, co in enumerate(coeffs)
          ]
          self.assertEqual(np.sum([1 for f in X if f.sum() <= 0]), 0)
          self.assertEqual(np.sum([1 for f in X_c if f.sum() <= 0]), 0)
  
      n_features = [1, 3]
      exposure_type = ["single_exposure", "multiple_exposures"]
      distribution = ["multinomial", "poisson"]
      sparse = [True, False]
      time_drift = [None, lambda x: np.log(np.sin(x * 2) + 5)]
      for n_feat, e, d, td in itertools.product(
          n_features, exposure_type, distribution, time_drift
      ):
          if e == "multiple_exposures":
              for s in sparse:
                  run_tests(10, n_feat, s, e, d, td)
          else:
              run_tests(10, n_feat, True, e, d, td)
  
file_path: tick/tick/survival/tests/simu_sccs_test.py
imports: import unittest
  import numpy
  import itertools
  from tick.survival import SimuSCCS
label_desc: Use image node_id 4 for calling the Test obj's underlying member method code with example usage: obj.test_simulation() without return types