code: def testGather(self):
      size = self.COMM.Get_size()
      rank = self.COMM.Get_rank()
      for array, typecode in arrayimpl.loop():
          for root in range(size):
              check = arrayimpl.scalar(root)
              count = root + 3
              if rank == root:
                  sbuf = MPI.IN_PLACE
                  buf = array(-1, typecode, (size, count))
                  s, e = rank * count, (rank + 1) * count
                  for i in range(s, e):
                      buf.flat[i] = check
                  rbuf = buf.as_mpi()
              else:
                  buf = array(root, typecode, count)
                  sbuf = buf.as_mpi()
                  rbuf = None
              self.COMM.Gather(sbuf, rbuf, root=root)
              for value in buf.flat:
                  self.assertEqual(value, check)
              if rank == root:
                  sbuf = None
              self.COMM.Gather(sbuf, rbuf, root=root)
              for value in buf.flat:
                  self.assertEqual(value, check)
  
imports: from mpi4py import MPI
  import mpiunittest
  import arrayimpl
  from functools import reduce
label_desc: Use image node_id 1 for calling the BaseTestCCOBufInplace obj's underlying member method code with example usage: obj.testGather() without return types