code: def _test_strided(self, combiner):
      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]
              esize = etype.size
              index1 = [0, 2, 4, 6]
              index2 = [1, 3, 5]
              if combiner in (
                  MPI.COMBINER_VECTOR,
                  MPI.COMBINER_HVECTOR,
              ):
                  if combiner == MPI.COMBINER_VECTOR:
                      ftype1 = etype.Create_vector(4, 1, 2).Commit()
                  if combiner == MPI.COMBINER_HVECTOR:
                      ftype1 = etype.Create_hvector(
                          4, 1, esize * 2
                      ).Commit()
                  fbase2 = etype.Create_indexed([1] * 3, index2)
                  ftype2 = fbase2.Create_resized(
                      0, ftype1.extent
                  ).Commit()
                  fbase2.Free()
              if combiner in (
                  MPI.COMBINER_INDEXED,
                  MPI.COMBINER_INDEXED_BLOCK,
                  MPI.COMBINER_HINDEXED,
                  MPI.COMBINER_HINDEXED_BLOCK,
              ):
                  INDEXED = MPI.COMBINER_INDEXED
                  INDEXED_BLOCK = MPI.COMBINER_INDEXED_BLOCK
                  HINDEXED = MPI.COMBINER_HINDEXED
                  HINDEXED_BLOCK = MPI.COMBINER_HINDEXED_BLOCK
                  if combiner == INDEXED:
                      Create = MPI.Datatype.Create_indexed
                  if combiner == HINDEXED:
                      Create = MPI.Datatype.Create_hindexed
                  if combiner == INDEXED_BLOCK:
                      Create = MPI.Datatype.Create_indexed_block
                  if combiner == HINDEXED_BLOCK:
                      Create = MPI.Datatype.Create_hindexed_block
                  if combiner in (INDEXED, HINDEXED):
                      blens1 = [1] * 4
                      blens2 = [1] * 3
                  if combiner in (INDEXED_BLOCK, HINDEXED_BLOCK):
                      blens1 = 1
                      blens2 = 1
                  if combiner in (INDEXED, INDEXED_BLOCK):
                      disps1 = index1
                      disps2 = index2
                  if combiner in (HINDEXED, HINDEXED_BLOCK):
                      disps1 = [esize * i for i in index1]
                      disps2 = [esize * i for i in index2]
                  ftype1 = Create(etype, blens1, disps1).Commit()
                  fbase2 = Create(etype, blens2, disps2)
                  ftype2 = fbase2.Create_resized(
                      0, ftype1.extent
                  ).Commit()
                  fbase2.Free()
              if combiner == MPI.COMBINER_STRUCT:
                  ftype1 = MPI.Datatype.Create_struct(
                      [1] * 4,
                      [esize * i for i in index1],
                      [etype] * 4,
                  ).Commit()
                  fbase2 = MPI.Datatype.Create_struct(
                      [1] * 3,
                      [esize * i for i in index2],
                      [etype] * 3,
                  )
                  ftype2 = fbase2.Create_resized(
                      0,
                      ftype1.extent,
                  ).Commit()
                  fbase2.Free()
              #
              fh.Set_view(0, etype, ftype1)
              for i in range(3):
                  wval = 10 * (rank + 1) + i
                  warg = [wval + j for j in range(0, 7, 2)]
                  wbuf = array(warg, typecode)
                  fh.Write_ordered(wbuf.as_raw())
              fh.Set_view(0, etype, ftype2)
              for i in range(3):
                  wval = 10 * (rank + 1) + i
                  warg = [wval + j for j in range(1, 7, 2)]
                  wbuf = array(warg, typecode)
                  fh.Write_ordered(wbuf.as_raw())
              fh.Sync()
              comm.Barrier()
              fh.Set_view(0, etype, ftype1)
              for i in range(3):
                  rval = 10 * (rank + 1) + i
                  rbuf = array(0, typecode, 4)
                  fh.Read_ordered(rbuf.as_raw())
                  for value, j in zip(rbuf, range(0, 7, 2)):
                      self.assertEqual(value, scalar(rval + j))
              fh.Set_view(0, etype, ftype2)
              for i in range(3):
                  rval = 10 * (rank + 1) + i
                  rbuf = array(0, typecode, 3)
                  fh.Read_ordered(rbuf.as_raw())
                  for value, j in zip(rbuf, range(1, 7, 2)):
                      self.assertEqual(value, scalar(rval + j))
              ftype1.Free()
              ftype2.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)
                      fh.Read_all(rbuf.as_raw())
                      for j, value in enumerate(rbuf):
                          self.assertEqual(value, scalar(rval + j))
  
imports: from mpi4py import MPI
  import mpiunittest
  import arrayimpl
  import os, tempfile
  import platform
label_desc: Use image node_id 2 for calling the BaseTestIOView obj's underlying member method code with example usage: obj._test_strided(combiner) without return types