code: def test_spec_from_gym_space_multi_discrete(self):
      multi_discrete_space = gym.spaces.MultiDiscrete([1, 2, 3, 4])
      spec = gym_wrapper.spec_from_gym_space(multi_discrete_space)
  
      self.assertEqual((4,), spec.shape)
      self.assertEqual(np.int32, spec.dtype)
      np.testing.assert_array_equal(
          np.array([0], dtype=int), spec.minimum
      )
      np.testing.assert_array_equal(
          np.array([0, 1, 2, 3], dtype=int), spec.maximum
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  from absl.testing.absltest import mock
  import gym
  import gym.spaces
  import numpy
  from tf_agents.environments import gym_wrapper
  from tf_agents.utils import test_utils
label_desc: Use image node_id 2 for calling the GymWrapperSpecTest obj's underlying member method code with example usage: obj.test_spec_from_gym_space_multi_discrete() without return types