code: def test_loop_run(self):
      raw_env = rl_environment.Environment("tic_tac_toe")
      env = open_spiel_wrapper.OpenSpielWrapper(raw_env)
      env = wrappers.SinglePrecisionWrapper(env)
      environment_spec = acme.make_environment_spec(env)
  
      actors = []
      for _ in range(env.num_players):
          actors.append(RandomActor(environment_spec))
  
      loop = open_spiel_environment_loop.OpenSpielEnvironmentLoop(
          env, actors
      )
      result = loop.run_episode()
      self.assertIn("episode_length", result)
      self.assertIn("episode_return", result)
      self.assertIn("steps_per_second", result)
  
      loop.run(num_episodes=10)
      loop.run(num_steps=100)
  
file_path: acme/acme/environment_loops/open_spiel_environment_loop_test.py
imports: import unittest
  import acme
  from acme import core
  from acme import specs
  from acme import types
  from acme import wrappers
  import dm_env
  import numpy
  import tree
  from absl.testing import absltest
  from absl.testing import parameterized
label_desc: Use image node_id 1 for calling the OpenSpielEnvironmentLoopTest obj's underlying member method code with example usage: obj.test_loop_run() without return types