code: def test_getitem(self):
      cat_datasets = ConcatDataset(
          datasets=[deepcopy(self.dataset_a), deepcopy(self.dataset_b)],
          pipeline=[dict(type="MockTransform", return_value=3)],
      )
      for datum in cat_datasets:
          self.assertEqual(datum, 3)
  
      cat_datasets = ConcatDataset(
          datasets=[
              deepcopy(self.dataset_a_with_pipeline),
              deepcopy(self.dataset_b),
          ],
          pipeline=[dict(type="MockTransform", return_value=3)],
          force_apply=True,
      )
      for datum in cat_datasets:
          self.assertEqual(datum, 3)
  
      cat_datasets = ConcatDataset(
          datasets=[
              deepcopy(self.dataset_a_with_pipeline),
              deepcopy(self.dataset_b_with_pipeline),
          ]
      )
      self.assertEqual(cat_datasets[0], 1)
      self.assertEqual(cat_datasets[-1], 2)
  
file_path: mmocr/tests/test_datasets/test_dataset_wrapper.py
imports: import os.path
  from copy import deepcopy
  from unittest import TestCase
  from unittest.mock import MagicMock
  from mmengine.registry import init_default_scope
  from mmocr.datasets import ConcatDataset, OCRDataset
  from mmocr.registry import TRANSFORMS
label_desc: Use image node_id 3 for calling the TestConcatDataset obj's underlying member method code with example usage: obj.test_getitem() without return types