code: def test_engine_properties(self):
      env = deepmind_lab.Lab(
          "tests/properties_test", [], config={"fps": "15"}
      )
      props = props_to_dictionary(env)
      self.assertEqual(props["engine"]["fps"], "15")
  
      with self.assertRaises(TypeError) as context:
          env.write_property("engine.fps", "bar")
      self.assertIn(
          "'engine.fps' not writable.", str(context.exception)
      )
  
      # Check engine.notReachable wasn't registered.
      self.assertNotIn("notReachable", props["engine"])
  
      # Try and write to root engine list.
      with self.assertRaises(TypeError) as context:
          env.write_property("engine", "foo")
      self.assertIn("'engine' not writable.", str(context.exception))
  
file_path: lab/python/tests/properties_test.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  from absl.testing import absltest
  import six
  import deepmind_lab
label_desc: Use image node_id 1 for calling the Properties obj's underlying member method code with example usage: obj.test_engine_properties() without return types