code: def test_norm_correct_random(self):
      rand_dual_quaternion = (
          test_helpers.generate_random_test_dual_quaternions()
      )
      norms = dual_quaternion.norm(rand_dual_quaternion)
      tensor_shape = rand_dual_quaternion.shape[:-1]
      norms_gt = np.array((1.0, 0.0), dtype=np.float32)
      norms_gt = np.tile(norms_gt, tensor_shape + (1,))
  
      self.assertAllClose(norms, norms_gt, rtol=1e-3)
  
imports: from absl.testing import flagsaver
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow_graphics.geometry.transformation import dual_quaternion
  from tensorflow_graphics.geometry.transformation import quaternion
  from tensorflow_graphics.geometry.transformation import rotation_matrix_3d
  from tensorflow_graphics.geometry.transformation.tests import test_helpers
  from tensorflow_graphics.util import test_case
label_desc: Use image node_id 19 for calling the DualQuaternionTest obj's underlying member method code with example usage: obj.test_norm_correct_random() without return types