code: def test_spec_from_gym_space_tuple(self):
      tuple_space = gym.spaces.Tuple(
          (gym.spaces.Discrete(2), gym.spaces.Discrete(3))
      )
      spec = gym_wrapper.spec_from_gym_space(tuple_space)
  
      self.assertEqual(2, len(spec))
      self.assertEqual((), spec[0].shape)
      self.assertEqual(np.int64, spec[0].dtype)
      self.assertEqual(0, spec[0].minimum)
      self.assertEqual(1, spec[0].maximum)
  
      self.assertEqual((), spec[1].shape)
      self.assertEqual(np.int64, spec[1].dtype)
      self.assertEqual(0, spec[1].minimum)
      self.assertEqual(2, spec[1].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 11 for calling the GymWrapperSpecTest obj's underlying member method code with example usage: obj.test_spec_from_gym_space_tuple() without return types