code: def testCircle(self):
      def test_is_proper_circular_layout(graph, layout):
          xs, ys = list(zip(*layout))
          n = graph.vcount()
          self.assertEqual(n, len(xs))
          self.assertEqual(n, len(ys))
          self.assertAlmostEqual(0, sum(xs))
          self.assertAlmostEqual(0, sum(ys))
          for x, y in zip(xs, ys):
              self.assertAlmostEqual(1, x**2 + y**2)
  
      g = Graph.Ring(8)
      layout = g.layout("circle")
      test_is_proper_circular_layout(g, g.layout("circle"))
  
      order = [0, 2, 4, 6, 1, 3, 5, 7]
      ordered_layout = g.layout("circle", order=order)
      test_is_proper_circular_layout(g, g.layout("circle"))
      for v, w in enumerate(order):
          self.assertAlmostEqual(layout[v][0], ordered_layout[w][0])
          self.assertAlmostEqual(layout[v][1], ordered_layout[w][1])
  
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 2 for calling the LayoutAlgorithmTests obj's underlying member method code with example usage: obj.testCircle() without return types