code: def test_wrapped_cartpole_specs(self):
      env = suite_dm_control.load("ball_in_cup", "catch")
  
      action_spec = env.action_spec()
      self.assertEqual((2,), action_spec.shape)
      np.testing.assert_array_almost_equal(
          [-1.0, -1.0], action_spec.minimum
      )
      np.testing.assert_array_almost_equal(
          [1.0, 1.0], action_spec.maximum
      )
  
      observation_spec = env.observation_spec()
      self.assertEqual((4,), observation_spec["position"].shape)
      self.assertEqual((4,), observation_spec["velocity"].shape)
  
file_path: agents/tf_agents/environments/dm_control_wrapper_test.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  from tf_agents.environments import suite_dm_control
  from tf_agents.utils import test_utils
label_desc: Use image node_id 2 for calling the DmControlWrapperTest obj's underlying member method code with example usage: obj.test_wrapped_cartpole_specs() without return types