code: def test_round_robin_smallest_dataset_exhausted(self) -> None:
      dataloader_1 = DataLoader(RandomDataset(32, 8), batch_size=8)
      dataloader_2 = DataLoader(RandomDataset(32, 16), batch_size=8)
  
      round_robin = RoundRobin(
          stopping_mechanism=StoppingMechanism.SMALLEST_DATASET_EXHAUSTED
      )
      multi_dataloader = iter(
          MultiDataLoader(
              self._get_dataloaders_dict(dataloader_1, dataloader_2),
              round_robin,
          )
      )
  
      # default iteration order
      iteration_order = ["1", "2"]
  
      # Since first dataset is exhausted in the first iteration,
      # it goes through only one full cycle.
      for index in range(2):
          batch = next(multi_dataloader)
          self.assertTrue(len(batch) == 1)
          self.assertTrue(iteration_order[index % 2] in batch)
  
      # Raises StopIteration after the first cycle
      with self.assertRaises(StopIteration):
          batch = next(multi_dataloader)
  
imports: import random
  import unittest
  from collections import Counter
  from typing import Any, cast, Dict, Iterable, Iterator, List, Mapping, Union
  import torch
  from torch.utils.data import DataLoader, Dataset
  from torchtnt.utils.data.iterators import AllDatasetBatches, DataIterationStrategy, InOrder, MultiIterator, RandomizedBatchSampler, RoundRobin, StoppingMechanism
  from torchtnt.utils.data.multi_dataloader import MultiDataLoader
label_desc: Use image node_id 1 for calling the TestMultiDataLoader obj's underlying member method code with example usage: obj.test_round_robin_smallest_dataset_exhausted() without return types