code: def test_init(self, device, dtype, batch_size, cdtype):
      z1 = self._make_rand_data(device, cdtype, (batch_size,))
      z2 = self._make_rand_data(device, cdtype, (batch_size, 1))
      z3_real = self._make_rand_data(device, dtype, (batch_size,))
      z3_imag = self._make_rand_data(device, dtype, (batch_size,))
      z3 = torch.complex(z3_real, z3_imag)
      s1 = So2(z1)
      s2 = So2(s1.z)
      assert isinstance(s2, So2)
      self.assert_close(s1.z, s2.z)
      self.assert_close(So2(z1).z, z1)
      self.assert_close(So2(z2).z, z2)
      self.assert_close(So2(z3).z, z3)
  
imports: import pytest
  import torch
  from kornia.geometry.liegroup import So2
  from kornia.geometry.vector import Vector2
  from kornia.testing import BaseTester
label_desc: Use image node_id 9 for calling the TestSo2 obj's underlying member method code with example usage: obj.test_init(device, dtype, batch_size, cdtype) without return types