code: def test_run(self, graph, schema):
      df = nonlinear_sem_generator(
          graph=graph,
          schema=schema,
          kernel=RBF(1),
          default_type="continuous",
          noise_std=1.0,
          n_samples=1000,
          seed=13,
      )
  
      # test binary:
      assert df[0].nunique() == 2
      assert df[2].nunique() == 2
  
      # test categorical:
      for col in [f"1_{i}" for i in range(3)]:
          assert df[col].nunique() == 2
      assert (
          len(
              [
                  x
                  for x in df.columns
                  if isinstance(x, str) and "1_" in x
              ]
          )
          == 3
      )
  
      for col in [f"5_{i}" for i in range(5)]:
          assert df[col].nunique() == 2
      assert (
          len(
              [
                  x
                  for x in df.columns
                  if isinstance(x, str) and "5_" in x
              ]
          )
          == 5
      )
  
      # test continuous
      assert df[3].nunique() == 1000
      assert df[4].nunique() == 1000
  
imports: import operator
  from typing import Hashable, Tuple, Union
  import networkx
  import numpy
  import pandas
  import pytest
  from networkx.algorithms.dag import is_directed_acyclic_graph
  from sklearn.gaussian_process.kernels import RBF
  from causalnex.structure.data_generators.core import _sample_binary_from_latent, _sample_count_from_latent, _sample_poisson, generate_structure, nonlinear_sem_generator, sem_generator
  from causalnex.structure.structuremodel import StructureModel
label_desc: Use image node_id 1 for calling the TestNonlinearGenerator obj's underlying member method code with example usage: obj.test_run(graph, schema) without return types