code: def test_cugraph_loader_basic(
      karate_gnn: Tuple[
          FeatureStore,
          Dict[Tuple[str, str, str], np.ndarray],
          Dict[str, int],
      ]
  ):
      F, G, N = karate_gnn
      cugraph_store = CuGraphStore(F, G, N, order="CSR")
      loader = CuGraphNeighborLoader(
          (cugraph_store, cugraph_store),
          torch.arange(N["type0"] + N["type1"], dtype=torch.int64),
          10,
          num_neighbors=[4, 4],
          random_state=62,
          replace=False,
      )
  
      samples = [s for s in loader]
  
      assert len(samples) == 3
      for sample in samples:
          if "type0" in sample:
              for prop in sample["type0"]["prop0"].tolist():
                  assert prop % 31 == 0
  
          if "type1" in sample:
              for prop in sample["type1"]["prop0"].tolist():
                  assert prop % 41 == 0
  
imports: import pytest
  import tempfile
  import os
  import cudf
  import cupy
  import numpy
  from cugraph_pyg.loader import CuGraphNeighborLoader
  from cugraph_pyg.loader import BulkSampleLoader
  from cugraph_pyg.data import CuGraphStore
  from cugraph_pyg.nn import SAGEConv
  from cugraph.gnn import FeatureStore
  from cugraph.utilities.utils import import_optional, MissingModule
  from typing import Dict, Tuple
label_desc: Use image node_id 1 for calling a global function with example usage: test_cugraph_loader_basic(karate_gnn) without return types