code: def test_concat(self):
      def callback_a(indices, key_indices):
          self.assertEqual(indices, self.expected_indices_a)
          self.assertIsNone(key_indices)
  
      dataset_a = dummy_dataset.DummyDataset(
          keys=("a", "b", "c") if self.mode_b else ("a",),
          mode=self.mode_a,
          return_array=self.return_array,
          callback=callback_a,
          convert=True,
      )
  
      def callback_b(indices, key_indices):
          self.assertEqual(indices, self.expected_indices_b)
          self.assertIsNone(key_indices)
  
      dataset_b = dummy_dataset.DummyDataset(
          size=5,
          keys=("a", "b", "c") if self.mode_a else ("a",),
          mode=self.mode_b,
          return_array=self.return_array,
          callback=callback_b,
      )
  
      view = dataset_a.concat(dataset_b)
      self.assertIsInstance(view, chainer.dataset.TabularDataset)
      self.assertEqual(len(view), len(dataset_a) + len(dataset_b))
      self.assertEqual(view.keys, dataset_a.keys)
      self.assertEqual(view.mode, dataset_a.mode)
  
      output = view.get_examples(self.indices, None)
  
      data = np.hstack((dataset_a.data, dataset_b.data))
      if self.indices is not None:
          data = data[:, self.indices]
  
      for out, d in six.moves.zip_longest(output, data):
          np.testing.assert_equal(out, d)
          if self.return_array and operator.xor(
              hasattr(self, "expected_indices_a"),
              hasattr(self, "expected_indices_b"),
          ):
              self.assertIsInstance(out, np.ndarray)
          else:
              self.assertIsInstance(out, list)
  
      self.assertEqual(view.convert(output), "converted")
  
file_path: chainer/tests/chainer_tests/dataset_tests/tabular_tests/test_concat.py
imports: import operator
  import unittest
  import numpy
  import six
  import chainer
  from chainer import testing
  from chainer_tests.dataset_tests.tabular_tests import dummy_dataset
label_desc: Use image node_id 1 for calling the TestConcat obj's underlying member method code with example usage: obj.test_concat() without return types