code: def test_NDArrayIter():
      dtype_list = ["NDArray", "ndarray"]
      tested_data_type = [False, True]
      for dtype in dtype_list:
          for is_image in tested_data_type:
              data, labels = _init_NDArrayIter_data(dtype, is_image)
              _test_last_batch_handle(data, labels, is_image)
              _test_last_batch_handle([data, data], labels, is_image)
              _test_last_batch_handle(
                  data=[data, data], is_image=is_image
              )
              _test_last_batch_handle(
                  {"data1": data, "data2": data}, labels, is_image
              )
              _test_last_batch_handle(
                  data={"data1": data, "data2": data}, is_image=is_image
              )
              _test_last_batch_handle(data, [], is_image)
              _test_last_batch_handle(data=data, is_image=is_image)
              _test_shuffle(data, labels)
              _test_shuffle([data, data], labels)
              _test_shuffle([data, data])
              _test_shuffle({"data1": data, "data2": data}, labels)
              _test_shuffle({"data1": data, "data2": data})
              _test_shuffle(data, [])
              _test_shuffle(data)
      _test_corner_case()
  
imports: import mxnet
  import mxnet.ndarray
  from mxnet.test_utils import *
  from mxnet.base import MXNetError
  import numpy
  import os
  import gzip
  import pickle
  import time
  import sys
  from common import assertRaises
  import pytest
  from itertools import zip_longest
label_desc: Use image node_id 10 for calling a global function with example usage: test_NDArrayIter() without return types