code: def test_sample(self):
      self._test_sample(self._tensor_distribution)
      self.assertEqual(
          self._tensor_distribution.greedy(4), [3, 2, 1, 0]
      )
      self._test_sample(self._array_distribution)
      self.assertEqual(self._array_distribution.greedy(4), [3, 2, 1, 0])
      self._test_sample(self._list_distribution)
      self.assertEqual(self._list_distribution.greedy(4), [3, 2, 1, 0])
      self._test_sample(self._map_distribution)
      self.assertEqual(self._map_distribution.greedy(4), [3, 2, 1, 0])
  
imports: import unittest
  from typing import Tuple, Union
  import numpy
  import torch
  from reagent.ope.estimators.types import ActionDistribution, TypeWrapper, Values
label_desc: Use image node_id 4 for calling the TestDistribution obj's underlying member method code with example usage: obj.test_sample() without return types