code: def testSpecs(self):
      lab = deepmind_lab.Lab("tests/empty_room_test", [])
      observation_spec = lab.observation_spec()
      observation_spec_names = {o["name"] for o in observation_spec}
      observation_spec_lookup = {o["name"]: o for o in observation_spec}
      action_names = {a["name"] for a in lab.action_spec()}
      observation_set = {
          "RGB_INTERLEAVED",
          "RGB",
          "RGBD_INTERLEAVED",
          "RGBD",
          "BGR_INTERLEAVED",
          "BGRD_INTERLEAVED",
      }
      self.assertGreaterEqual(observation_spec_names, observation_set)
      for k in observation_set:
          o = observation_spec_lookup[k]
          self.assertIn("shape", o)
          self.assertDictContainsSubset({"dtype": np.uint8}, o)
  
      self.assertSetEqual(
          action_names,
          {
              "LOOK_LEFT_RIGHT_PIXELS_PER_FRAME",
              "LOOK_DOWN_UP_PIXELS_PER_FRAME",
              "STRAFE_LEFT_RIGHT",
              "MOVE_BACK_FORWARD",
              "FIRE",
              "JUMP",
              "CROUCH",
          },
      )
  
      for a in lab.action_spec():
          self.assertIs(type(a["min"]), int)
          self.assertIs(type(a["max"]), int)
  
      self.assertTrue(lab.close())
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  from absl.testing import absltest
  import numpy
  import six
  import deepmind_lab
label_desc: Use image node_id 4 for calling the DeepMindLabTest obj's underlying member method code with example usage: obj.testSpecs() without return types