code: def test_simple_datasets(self):
      opt = Options()
      opt.dataset_name = os.path.join(os.getcwd(), "test")
      opt.dataroot = os.path.join(os.getcwd(), "test")
  
      class SimpleDataset(BaseDataset):
          def __init__(self, dataset_opt):
              super(SimpleDataset, self).__init__(dataset_opt)
  
              self.train_dataset = CustomMockDataset(10, 1, 3, 10)
              self.test_dataset = CustomMockDataset(10, 1, 3, 10)
  
      dataset = SimpleDataset(opt)
  
      model_config = MockModelConfig()
      model_config.conv_type = "dense"
      model = MockModel(model_config)
      dataset.create_dataloaders(model, 5, True, 0, False)
  
      self.assertEqual(dataset.pre_transform, None)
      self.assertEqual(dataset.test_transform, None)
      self.assertEqual(dataset.train_transform, None)
      self.assertEqual(dataset.val_transform, None)
      self.assertNotEqual(dataset.train_dataset, None)
      self.assertNotEqual(dataset.test_dataset, None)
      self.assertTrue(dataset.has_test_loaders)
      self.assertFalse(dataset.has_val_loader)
  
imports: import unittest
  from omegaconf import DictConfig, OmegaConf
  import os
  import sys
  from glob import glob
  import torch
  import numpy
  from torch_geometric.data.data import Data
  import torch_geometric.transforms
  from test.mockdatasets import MockDataset, MockDatasetConfig
  from test.mock_models import MockModel, MockModelConfig
  from torch_points3d.datasets.base_dataset import BaseDataset
  from torch_points3d.models.model_factory import instantiate_model
  from torch_points3d.utils.model_building_utils.model_definition_resolver import resolve_model
  from torch_points3d.utils.enums import ConvolutionFormat
  import torch_points3d.core.data_transform
label_desc: Use image node_id 2 for calling the TestDataset obj's underlying member method code with example usage: obj.test_simple_datasets() without return types