code: def test_len(self):
      # Generate an empty episode and ensure that `len()` raises an error.
      episode = MultiAgentEpisode()
      # Now raise an error.
      with self.assertRaises(AssertionError):
          len(episode)
  
      # Create an episode and environment and sample 100 timesteps.
      episode, env = self._mock_multi_agent_records_from_env()
      # Assert that the length is indeed 100.
      self.assertEqual(len(episode), 100)
      # Now, build a successor.
      successor = episode.cut()
      # Sample another 100 timesteps.
      successor, env = self._mock_multi_agent_records_from_env(
          episode=successor, env=env, init=False
      )
      # Ensure that the length of the successor is 100.
      self.assertTrue(len(successor), 100)
      # Now concatenate the two episodes.
      episode.concat_episode(successor)
      # Assert that the length is now 100.
      self.assertTrue(len(episode), 200)
  
imports: import gymnasium
  import numpy
  import unittest
  from typing import List, Optional, Tuple
  import ray
  from ray.rllib.env.multi_agent_env import MultiAgentEnv
  from ray.rllib.env.multi_agent_episode import MultiAgentEpisode
  from ray.rllib.utils.typing import MultiAgentDict
label_desc: Use image node_id 10 for calling the TestMultiAgentEpisode obj's underlying member method code with example usage: obj.test_len() without return types