code: def test_properties(self) -> None:
      im = IterationManager(
          num_epochs=2,
          edge_paths=["A", "B", "C"],
          num_edge_chunks=4,
          iteration_idx=(0 * 3 + 1) * 4 + 2,
      )
      self.assertEqual(im.epoch_idx, 0)
      self.assertEqual(im.edge_path_idx, 1)
      self.assertEqual(im.edge_path, "B")
      self.assertEqual(im.edge_chunk_idx, 2)
      self.assertEqual(
          im.get_checkpoint_metadata(),
          {
              "iteration/num_epochs": 2,
              "iteration/epoch_idx": 0,
              "iteration/num_edge_paths": 3,
              "iteration/edge_path_idx": 1,
              "iteration/edge_path": "B",
              "iteration/num_edge_chunks": 4,
              "iteration/edge_chunk_idx": 2,
          },
      )
  
file_path: PyTorch-BigGraph/test/test_train.py
imports: from itertools import product
  from unittest import main, TestCase
  from torchbiggraph.train_cpu import IterationManager
label_desc: Use image node_id 4 for calling the TestIterationManager obj's underlying member method code with example usage: obj.test_properties() without return types