code: def test_log_dir_visdom(self, mock_visdom, mock_writer, _):
      state = {torchbearer.MODEL: nn.Sequential(nn.Conv2d(3, 3, 3))}
      mock_writer.__delete__ = Mock()
  
      tboard = TensorBoardImages(
          visdom=True, log_dir="./test", comment="torchbearer"
      )
  
      tboard.on_start(state)
      tboard.on_end(state)
  
      self.assertEqual(mock_visdom.call_count, 1)
      self.assertTrue(
          mock_visdom.call_args[1]["log_to_filename"]
          == os.path.join("./test", "Sequential_torchbearer", "log.log")
      )
  
imports: import os
  from unittest import TestCase
  import warnings
  import torch
  import torch.nn
  from mock import patch, Mock, ANY, MagicMock
  import torchbearer
  from torchbearer.callbacks import TensorBoard, TensorBoardImages, TensorBoardProjector, TensorBoardText
label_desc: Use image node_id 2 for calling the TestTensorBoardImages obj's underlying member method code with example usage: obj.test_log_dir_visdom(mock_visdom, mock_writer, _) without return types