code: def testShuffle(self):
      a10 = test_utils.DummyArtifact()
      a20 = test_utils.DummyArtifact()
      a31 = test_utils.DummyArtifact()
      a30 = test_utils.DummyArtifact()
      a40 = test_utils.DummyArtifact()
      a50 = test_utils.DummyArtifact()
  
      artifacts = [a10, a20, a31, a30, a40, a50]
  
      spans = [1, 2, 3, 3, 4, 5]
      versions = [0, 0, 1, 0, 0, 0]
      for dummy_artifact, span, version in zip(
          artifacts, spans, versions
      ):
          dummy_artifact.span = span
          dummy_artifact.version = version
  
      idxs = [1, 4, 3, 2, 0, 5]
      artifacts = [artifacts[i] for i in idxs]
  
      actual = self._shuffle(artifacts)
      self.assertCountEqual(actual, artifacts)
  
file_path: tfx/tfx/dsl/input_resolution/ops/shuffle_op_test.py
imports: import tensorflow
  from tfx.dsl.input_resolution.ops import ops
  from tfx.dsl.input_resolution.ops import test_utils
label_desc: Use image node_id 2 for calling the ShuffleOpTest obj's underlying member method code with example usage: obj.testShuffle() without return types