code: def testScaling(self):
      layout = Layout([(0, 0, 1), (0, 1, 0), (1, 0, 0), (2, 1, 3)])
      layout.scale(1.5)
      self.assertEqual(
          layout.coords,
          [
              [0.0, 0.0, 1.5],
              [0.0, 1.5, 0.0],
              [1.5, 0.0, 0.0],
              [3.0, 1.5, 4.5],
          ],
      )
  
      layout = Layout([(0, 0, 1), (0, 1, 0), (1, 0, 0), (2, 1, 3)])
      layout.scale(1, 1, 3)
      self.assertEqual(
          layout.coords, [[0, 0, 3], [0, 1, 0], [1, 0, 0], [2, 1, 9]]
      )
  
      layout = Layout([(0, 0, 1), (0, 1, 0), (1, 0, 0), (2, 1, 3)])
      layout.scale((2, 2, 1))
      self.assertEqual(
          layout.coords, [[0, 0, 1], [0, 2, 0], [2, 0, 0], [4, 2, 3]]
      )
  
      self.assertRaises(ValueError, layout.scale, 2, 3)
  
imports: import unittest
  from math import hypot
  from igraph import Graph, Layout, BoundingBox, InternalError
  from igraph import umap_compute_weights
label_desc: Use image node_id 3 for calling the LayoutTests obj's underlying member method code with example usage: obj.testScaling() without return types