code: def test_op_works(self) -> None:
      seq = list(range(1, 10))
  
      pipeline = read_sequence(seq).shuffle(100).and_return()
  
      for _ in range(2):
          with tmp_rng_seed(CPU, seed=1234):
              assert list(pipeline) == [8, 9, 3, 7, 5, 4, 2, 6, 1]
  
              pipeline.reset()
  
      pipeline = read_sequence(seq).shuffle(0).and_return()
  
      for _ in range(2):
          with tmp_rng_seed(CPU, seed=1234):
              assert list(pipeline) == [8, 9, 3, 7, 5, 4, 2, 6, 1]
  
              pipeline.reset()
  
      pipeline = read_sequence(seq).shuffle(4).and_return()
  
      for _ in range(2):
          with tmp_rng_seed(CPU, seed=1234):
              assert list(pipeline) == [2, 1, 3, 4, 5, 7, 8, 6, 9]
  
              pipeline.reset()
  
      pipeline = read_sequence(seq).shuffle(1).and_return()
  
      for _ in range(2):
          with tmp_rng_seed(CPU, seed=1234):
              assert list(pipeline) == [1, 2, 3, 4, 5, 6, 7, 8, 9]
  
              pipeline.reset()
  
file_path: fairseq2/tests/unit/data/data_pipeline/test_shuffle.py
imports: from itertools import islice
  import pytest
  from fairseq2.data import read_sequence
  from fairseq2.typing import CPU
  from tests.common import tmp_rng_seed
label_desc: Use image node_id 1 for calling the TestShuffleOp obj's underlying member method code with example usage: obj.test_op_works() without return types