code: def test_estimated_steps_in_epoch(self) -> None:
      input_dim = 2
      dataset_len = 20
      batch_size = 2
      dataloader_size = dataset_len / batch_size
  
      dataloader = generate_random_dataloader(
          dataset_len, input_dim, batch_size
      )
  
      self.assertEqual(
          estimated_steps_in_epoch(
              dataloader,
              num_steps_completed=0,
              max_steps=5,
              max_steps_per_epoch=5,
          ),
          5,
      )
      self.assertEqual(
          estimated_steps_in_epoch(
              dataloader,
              num_steps_completed=4,
              max_steps=5,
              max_steps_per_epoch=4,
          ),
          1,
      )
      self.assertEqual(
          estimated_steps_in_epoch(
              dataloader,
              num_steps_completed=0,
              max_steps=4,
              max_steps_per_epoch=10,
          ),
          4,
      )
      self.assertEqual(
          estimated_steps_in_epoch(
              dataloader,
              num_steps_completed=0,
              max_steps=None,
              max_steps_per_epoch=None,
          ),
          dataloader_size,
      )
      self.assertEqual(
          estimated_steps_in_epoch(
              dataloader,
              num_steps_completed=0,
              max_steps=None,
              max_steps_per_epoch=500,
          ),
          dataloader_size,
      )
  
file_path: tnt/tests/utils/test_progress.py
imports: import unittest
  from unittest.mock import patch
  from torchtnt.framework._test_utils import generate_random_dataloader, generate_random_iterable_dataloader
  from torchtnt.utils.progress import estimated_steps_in_epoch, estimated_steps_in_fit, estimated_steps_in_loop, Progress
label_desc: Use image node_id 2 for calling the ProgressTest obj's underlying member method code with example usage: obj.test_estimated_steps_in_epoch() without return types