code: def testSubarray(self):
      comm = self.COMM
      size = comm.Get_size()
      rank = comm.Get_rank()
      fh = self.FILE
      for array, typecode in arrayimpl_loop_io():
          with arrayimpl.test(self):
              comm.Barrier()
              fh.Set_size(0)
              etype = array.TypeMap[typecode]
              ftype = etype.Create_subarray(
                  [size * 7, 5],
                  [7, 5],
                  [rank * 7, 0],
              ).Commit()
              fh.Set_view(0, etype, ftype)
              for i in range(3):
                  wval = 10 * (rank + 1) + i
                  wbuf = array(wval, typecode, 7 * 5)
                  fh.Write_all(wbuf.as_raw())
              fh.Sync()
              comm.Barrier()
              fh.Set_view(0, etype, ftype)
              for i in range(3):
                  rval = 10 * (rank + 1) + i
                  rbuf = array(0, typecode, 7 * 5)
                  fh.Read_all(rbuf.as_raw())
                  for value in rbuf:
                      self.assertEqual(value, scalar(rval))
              ftype.Free()
              fh.Set_view(0, etype, etype)
              for i in range(3):
                  for r in range(size):
                      rval = 10 * (r + 1) + i
                      rbuf = array(0, typecode, 7 * 5)
                      fh.Read_all(rbuf.as_raw())
                      for value in rbuf:
                          self.assertEqual(value, scalar(rval))
  
imports: from mpi4py import MPI
  import mpiunittest
  import arrayimpl
  import os, tempfile
  import platform
label_desc: Use image node_id 13 for calling the BaseTestIOView obj's underlying member method code with example usage: obj.testSubarray() without return types