code: def test_unsupported_evaluation_hook():
      class UnsupportedEvaluationHook(
          pfrl.experiments.evaluation_hooks.EvaluationHook
      ):
          support_train_agent = True
          support_train_agent_batch = True
          support_train_agent_async = False
  
          def __call__(
              self,
              env,
              agent,
              evaluator,
              step,
              eval_stats,
              agent_stats,
              env_stats,
          ):
              pass
  
      unsupported_evaluation_hook = UnsupportedEvaluationHook()
  
      with pytest.raises(ValueError) as exception:
          pfrl.experiments.train_agent_async(
              outdir=mock.Mock(),
              processes=mock.Mock(),
              make_env=mock.Mock(),
              evaluation_hooks=[unsupported_evaluation_hook],
          )
  
      assert str(
          exception.value
      ) == "{} does not support train_agent_async().".format(
          unsupported_evaluation_hook
      )
  
file_path: pfrl/tests/experiments_tests/test_train_agent_async.py
imports: import os
  import tempfile
  import unittest
  from unittest import mock
  import pytest
  import torch.multiprocessing
  import pfrl
  from pfrl.experiments.train_agent_async import train_loop
label_desc: Use image node_id 2 for calling a global function with example usage: test_unsupported_evaluation_hook() without return types