code: def test_vector_angle(self):
      v1 = np.array([[-1, 0], [0, 1]])
      v2 = np.array([[1, 0], [0, 1]])
      angles = self.loss.vector_angle(v1, v2)
      self.assertTrue(
          np.allclose(angles, np.array([np.pi, 0]), atol=1e-3)
      )
  
file_path: mmocr/tests/test_models/test_textdet/test_module_losses/test_textsnake_module_loss.py
imports: from unittest import TestCase
  import numpy
  import torch
  from mmengine.structures import InstanceData
  from mmocr.models.textdet.module_losses import TextSnakeModuleLoss
  from mmocr.structures import TextDetDataSample
label_desc: Use image node_id 4 for calling the TestTextSnakeModuleLoss obj's underlying member method code with example usage: obj.test_vector_angle() without return types