code: def testLocalVarName(self):
      self.assertEqual(
          "y_()", layout_optimizer._local_var_name(frozenset(), {})
      )
      self.assertEqual(
          "y_(channel:y,hidden:x)",
          layout_optimizer._local_var_name(
              frozenset(["channel", "hidden"]),
              {"hidden": "x", "channel": "y"},
          ),
      )
      self.assertEqual(
          "y_(channel:y,hidden)",
          layout_optimizer._local_var_name(
              frozenset(["channel", "hidden"]), {"channel": "y"}
          ),
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import mesh_tensorflow
  from mesh_tensorflow.auto_mtf import layout_optimizer
  from mesh_tensorflow.auto_mtf import memory_estimator
  import six
  import tensorflow.compat.v1
label_desc: Use image node_id 2 for calling the VariableNamesTest obj's underlying member method code with example usage: obj.testLocalVarName() without return types