code: def test_track(self):
      tracker = SegmentationTracker(MockDataset())
      model = MockModel()
      tracker.track(model)
      metrics = tracker.get_metrics()
      for k in ["train_acc", "train_miou", "train_macc"]:
          self.assertAlmostEqual(metrics[k], 100, 5)
  
      model.iter += 1
      tracker.track(model)
      metrics = tracker.get_metrics()
      for k in ["train_acc", "train_macc"]:
          self.assertEqual(metrics[k], 50)
      self.assertAlmostEqual(metrics["train_miou"], 25, 5)
      self.assertEqual(metrics["train_loss_1"], 1.5)
  
      tracker.reset("test")
      model.iter += 1
      tracker.track(model)
      metrics = tracker.get_metrics()
      for k in ["test_acc", "test_miou", "test_macc"]:
          self.assertAlmostEqual(metrics[k], 0, 5)
  
imports: import unittest
  import os
  import torch
  import sys
  import numpy
  import numpy.testing
  from torch_geometric.data import Data
  from torch_points3d.core.data_transform import SaveOriginalPosId
  from torch_points3d.metrics.segmentation_tracker import SegmentationTracker
  from torch_points3d.metrics.segmentation_helpers import SegmentationVoter
  from torch_points3d.metrics.classification_tracker import ClassificationTracker
  from torch_points3d.metrics.s3dis_tracker import S3DISTracker
label_desc: Use image node_id 1 for calling the TestSegmentationTracker obj's underlying member method code with example usage: obj.test_track() without return types