code: def test_deterministic_split(self) -> None:
      num_vals = 1000
      datapipe = _DummyDataReader(num_vals)
      with patch("random.Random", new=lambda a: _FakeRandom(num_vals)):
          train_datapipe, val_datapipe = rand_split_train_val(
              datapipe, 0.8
          )
          self.assertEqual(len(list(train_datapipe)), num_vals * 0.8)
          self.assertEqual(len(list(val_datapipe)), num_vals * 0.2)
          self.assertEqual(
              len(set(train_datapipe).intersection(set(val_datapipe))),
              0,
          )
  
imports: import random
  import unittest
  from typing import Any, Iterator, List, Tuple
  from unittest.mock import Mock, patch
  from torch.utils.data import IterDataPipe
  from torchrec.datasets.utils import idx_split_train_val, ParallelReadConcat, rand_split_train_val
label_desc: Use image node_id 1 for calling the TestRandSplitTrainVal obj's underlying member method code with example usage: obj.test_deterministic_split() without return types