code: def testVariableOperations(self):
      var = mtf.Variable(
          self.mesh,
          "test_variable",
          self.ab_shape,
          mtf.VariableDType(tf.int32, tf.int32, tf.int32),
          initializer=tf.zeros_initializer(),
          trainable=True,
      )
  
      self.assertEqual(var.splittable_dims, frozenset(["a", "b"]))
      self.assertEqual(var.unsplittable_dims, frozenset())
  
      read_variable = mtf.ReadVariable(var)
      self.assertEqual(
          read_variable.splittable_dims, frozenset(["a", "b"])
      )
      self.assertEqual(read_variable.unsplittable_dims, frozenset())
  
      assign = mtf.Assign([var], [self.x])
      self.assertEqual(assign.splittable_dims, frozenset(["a", "b"]))
      self.assertEqual(assign.unsplittable_dims, frozenset())
  
      depend = mtf.Depend(read_variable.outputs[0], [assign])
      self.assertEqual(depend.splittable_dims, frozenset(["a", "b"]))
      self.assertEqual(depend.unsplittable_dims, frozenset())
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl.testing import parameterized
  import mesh_tensorflow
  from mesh_tensorflow import test_utils
  import numpy
  import tensorflow.compat.v1
  from tensorflow.python.framework import test_util
label_desc: Use image node_id 21 for calling the OperationSplittabilityTest obj's underlying member method code with example usage: obj.testVariableOperations() without return types