code: def testStringSplitWithNoSkipEmpty(self):
      strings = ["#a", "b#", "#c#"]
  
      with self.cached_session():
          tokens = string_ops.string_split(
              strings, "#", skip_empty=False
          )
          indices, values, shape = self.evaluate(tokens)
          self.assertAllEqual(
              indices,
              [[0, 0], [0, 1], [1, 0], [1, 1], [2, 0], [2, 1], [2, 2]],
          )
          self.assertAllEqual(
              values, [b"", b"a", b"b", b"", b"", b"c", b""]
          )
          self.assertAllEqual(shape, [3, 3])
  
      with self.cached_session():
          tokens = string_ops.string_split(strings, "#")
          indices, values, shape = self.evaluate(tokens)
          self.assertAllEqual(values, [b"a", b"b", b"c"])
          self.assertAllEqual(indices, [[0, 0], [1, 0], [2, 0]])
          self.assertAllEqual(shape, [3, 1])
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors_impl
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import string_ops
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_string_ops
  from tensorflow.python.platform import test
  from tensorflow.python.util import compat
label_desc: Use image node_id 8 for calling the StringSplitOpTest obj's underlying member method code with example usage: obj.testStringSplitWithNoSkipEmpty() without return types