code: def test_reorder():
      b, y, c, d, z = symbols("b, y, c, d, z", integer=True)
  
      assert Product(x * y, (x, a, b), (y, c, d)).reorder(
          (0, 1)
      ) == Product(x * y, (y, c, d), (x, a, b))
      assert Product(x, (x, a, b), (x, c, d)).reorder(
          (0, 1)
      ) == Product(x, (x, c, d), (x, a, b))
      assert Product(
          x * y + z, (x, a, b), (z, m, n), (y, c, d)
      ).reorder((2, 0), (0, 1)) == Product(
          x * y + z, (z, m, n), (y, c, d), (x, a, b)
      )
      assert Product(
          x * y * z, (x, a, b), (y, c, d), (z, m, n)
      ).reorder((0, 1), (1, 2), (0, 2)) == Product(
          x * y * z, (x, a, b), (z, m, n), (y, c, d)
      )
      assert Product(
          x * y * z, (x, a, b), (y, c, d), (z, m, n)
      ).reorder((x, y), (y, z), (x, z)) == Product(
          x * y * z, (x, a, b), (z, m, n), (y, c, d)
      )
      assert Product(x * y, (x, a, b), (y, c, d)).reorder(
          (x, 1)
      ) == Product(x * y, (y, c, d), (x, a, b))
      assert Product(x * y, (x, a, b), (y, c, d)).reorder(
          (y, x)
      ) == Product(x * y, (y, c, d), (x, a, b))
  
imports: from sympy.concrete.products import Product, product
  from sympy.concrete.summations import Sum
  from sympy.core.function import Derivative, Function, diff
  from sympy.core.numbers import Rational, oo, pi
  from sympy.core.singleton import S
  from sympy.core.symbol import Dummy, Symbol, symbols
  from sympy.functions.combinatorial.factorials import rf, factorial
  from sympy.functions.elementary.exponential import exp, log
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import cos, sin
  from sympy.functions.special.tensor_functions import KroneckerDelta
  from sympy.simplify.combsimp import combsimp
  from sympy.simplify.simplify import simplify
  from sympy.testing.pytest import raises
label_desc: Use image node_id 14 for calling a global function with example usage: test_reorder() without return types