code: def assert_info(
      n_steps, p_row_act, p_col_act, env, max_steps, CC, DD, CD, DC
  ):
      step_i = 0
      for _ in range(n_steps):
          step_i += 1
          actions = {
              "player_row": p_row_act[step_i - 1],
              "player_col": p_col_act[step_i - 1],
          }
          obs, reward, done, truncated, info = env.step(actions)
          check_obs(obs, env)
          assert_logger_buffer_size_two_players(env, n_steps=step_i)
          assert not done["__all__"] or (
              step_i == max_steps and done["__all__"]
          )
  
          if done["__all__"]:
              assert info["player_row"]["CC"] == CC
              assert info["player_col"]["CC"] == CC
              assert info["player_row"]["DD"] == DD
              assert info["player_col"]["DD"] == DD
              assert info["player_row"]["CD"] == CD
              assert info["player_col"]["CD"] == CD
              assert info["player_row"]["DC"] == DC
              assert info["player_col"]["DC"] == DC
  
              obs, info = env.reset()
              check_obs(obs, env)
              assert_logger_buffer_size_two_players(env, n_steps=0)
              step_i = 0
  
file_path: ray/rllib/examples/env/tests/test_matrix_sequential_social_dilemma.py
imports: import random
  from ray.rllib.examples.env.matrix_sequential_social_dilemma import IteratedPrisonersDilemma, IteratedChicken, IteratedStagHunt, IteratedBoS
label_desc: Use image node_id 8 for calling a global function with example usage: assert_info(n_steps, p_row_act, p_col_act, env, max_steps, CC, DD, CD, DC) without return types