code: def test_fit_max_steps(self) -> None:
      max_steps = 3
      input_dim = 2
      dataset_len = 8
      batch_size = 2
      expected_eval_steps_per_epoch = dataset_len / batch_size
  
      my_unit = DummyFitUnit(2)
      train_dl = generate_random_dataloader(
          dataset_len, input_dim, batch_size
      )
      eval_dl = generate_random_dataloader(
          dataset_len, input_dim, batch_size
      )
      fit(
          my_unit,
          train_dataloader=train_dl,
          eval_dataloader=eval_dl,
          max_steps=max_steps,
      )
  
      self.assertEqual(
          my_unit.train_progress.num_steps_completed, max_steps
      )
      self.assertEqual(
          my_unit.eval_progress.num_steps_completed,
          expected_eval_steps_per_epoch,
      )
  
imports: import math
  import unittest
  from typing import Tuple
  from unittest.mock import MagicMock
  import torch
  from torch import nn
  from torchtnt.framework._test_utils import DummyFitUnit, generate_random_dataloader
  from torchtnt.framework.callback import Callback
  from torchtnt.framework.fit import fit
  from torchtnt.framework.state import ActivePhase, State
  from torchtnt.framework.unit import EvalUnit, TrainUnit, TTrainUnit
  from torchtnt.utils.timer import Timer
label_desc: Use image node_id 4 for calling the FitTest obj's underlying member method code with example usage: obj.test_fit_max_steps() without return types