class_docstr: Tests of input validation and output correctness of function `generate_shift_rule`.
class_docstr_tok: ["Tests","of","input","validation","and","output","correctness","of","function","`","generate_shift_rule","`","."]
docstr: Test that the second order shift rule is correct and
  properly simplified for generators with 4-term rules
code: def test_second_order_four_term_shift_rule(self):
      """Test that the second order shift rule is correct and
      properly simplified for generators with 4-term rules"""
      frequencies = (0.5, 1)
      generated_terms = generate_shift_rule(frequencies, order=2)
      correct_terms = [
          [-0.375, 0],
          [0.25, -np.pi],
          [0.25, np.pi],
          [-0.125, -2 * np.pi],
      ]
      assert np.allclose(generated_terms, correct_terms)
  
imports: import pytest
  import numpy
  import pennylane
  from pennylane.gradients.general_shift_rules import eigvals_to_frequencies, frequencies_to_period, generate_shift_rule, _get_shift_rule, generate_multi_shift_rule, generate_shifted_tapes, generate_multishifted_tapes, _iterate_shift_rule_with_multipliers
label_desc: Use image node_id 12 for calling the TestGenerateShiftRule obj's underlying member method code with example usage: obj.test_second_order_four_term_shift_rule() without return types