code: def test_smoke(self, device, dtype):
      q = Quaternion.from_coeffs(1.0, 0.0, 0.0, 0.0)
      q = q.to(device, dtype)
      q_data = torch.tensor(
          [1.0, 0.0, 0.0, 0.0], device=device, dtype=dtype
      )
      assert isinstance(q, Quaternion)
      assert q.shape == (4,)
      self.assert_close(q.data, q_data)
      self.assert_close(q.q, q_data)
      self.assert_close(q.real, q_data[..., 0])
      self.assert_close(q.scalar, q_data[..., 0])
      self.assert_close(q.vec, q_data[..., 1:])
  
imports: import pytest
  import torch
  from kornia.geometry.quaternion import Quaternion
  from kornia.testing import assert_close
label_desc: Use image node_id 3 for calling the TestQuaternion obj's underlying member method code with example usage: obj.test_smoke(device, dtype) without return types