code: def test_parse_loads():
      N = ReferenceFrame("N")
      po = Point("po")
      assert _parse_load(Force(po, N.z)) == (po, N.z)
      assert _parse_load(Torque(N, N.x)) == (N, N.x)
      f1 = _parse_load((po, N.x))  # Test whether a force is recognized
      assert isinstance(f1, Force)
      assert f1 == Force(po, N.x)
      t1 = _parse_load((N, N.y))  # Test whether a torque is recognized
      assert isinstance(t1, Torque)
      assert t1 == Torque(N, N.y)
      # Bodies should be undetermined (even in case of a Particle)
      raises(ValueError, lambda: _parse_load((Particle("pa", po), N.x)))
      raises(
          ValueError, lambda: _parse_load((RigidBody("pa", po, N), N.x))
      )
      # Invalid tuple length
      raises(ValueError, lambda: _parse_load((po, N.x, po, N.x)))
      # Invalid type
      raises(TypeError, lambda: _parse_load([po, N.x]))
  
file_path: sympy/sympy/physics/mechanics/tests/test_loads.py
imports: from pytest import raises
  from sympy import symbols
  from sympy.physics.mechanics import RigidBody, Particle, ReferenceFrame, Point, outer, dynamicsymbols, Force, Torque
  from sympy.physics.mechanics.loads import gravity, _parse_load
label_desc: Use image node_id 4 for calling a global function with example usage: test_parse_loads() without return types