code: def testStringNGramsBadDataSplits(self, splits):
      data = ["aa", "bb", "cc", "dd", "ee", "ff"]
      with self.assertRaisesRegex(
          errors.InvalidArgumentError,
          r"Invalid split value|First split value must be 0",
      ):
          self.evaluate(
              gen_string_ops.string_n_grams(
                  data=data,
                  data_splits=splits,
                  separator="",
                  ngram_widths=[2],
                  left_pad="",
                  right_pad="",
                  pad_width=0,
                  preserve_short_sequences=False,
              )
          )
  
imports: from absl.testing import parameterized
  from tensorflow.python.eager import context
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import gen_data_flow_ops
  from tensorflow.python.ops import gen_math_ops
  from tensorflow.python.ops import gen_string_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 7 for calling the RawOpsTest obj's underlying member method code with example usage: obj.testStringNGramsBadDataSplits(splits) without return types