code: def test_compute_advantage(self):
      sample_actions = np.random.randint(
          self.action_size, size=self.batch_size
      )
      greedy_actions = self.q_values.argmax(axis=1)
      ret = self.qout.compute_advantage(sample_actions)
      self.assertIsInstance(ret, chainer.Variable)
      for b in range(self.batch_size):
          if sample_actions[b] == greedy_actions[b]:
              self.assertAlmostEqual(ret.array[b], 0)
          else:
              # An advantage to the optimal policy must be always negative
              self.assertLess(ret.array[b], 0)
              q = self.q_values[b, sample_actions[b]]
              v = self.q_values[b, greedy_actions[b]]
              adv = q - v
              self.assertAlmostEqual(ret.array[b], adv)
  
imports: import unittest
  import chainer
  import chainer.functions
  from chainer import testing
  import numpy
  from chainerrl import action_value
label_desc: Use image node_id 5 for calling the TestDiscreteActionValue obj's underlying member method code with example usage: obj.test_compute_advantage() without return types