code: def test_constant_epsilon_greedy(self):
      random_action_func_count = [0]
      greedy_action_func_count = [0]
  
      def random_action_func():
          random_action_func_count[0] += 1
          return 0
  
      def greedy_action_func():
          greedy_action_func_count[0] += 1
          return 0
  
      explorer = epsilon_greedy.ConstantEpsilonGreedy(
          0.1, random_action_func
      )
  
      explorer.logger.addHandler(logging.StreamHandler())
      explorer.logger.setLevel(logging.DEBUG)
  
      self.assertAlmostEqual(explorer.epsilon, 0.1)
  
      for t in range(100):
          explorer.select_action(t, greedy_action_func)
  
      self.assertAlmostEqual(explorer.epsilon, 0.1)
  
imports: import logging
  import unittest
  from chainerrl.explorers import epsilon_greedy
label_desc: Use image node_id 2 for calling the TestEpsilonGreedy obj's underlying member method code with example usage: obj.test_constant_epsilon_greedy() and returns: int, int