code: def test_should_compute_tokenization_shift(self):
      # Given
      text = "  hello?   world"
      tokens = tokenize(text, "en")
  
      # When
      shifts = _compute_char_shifts(tokens)
  
      # Then
      expected_shifts = [
          -2,
          -2,
          -2,
          -2,
          -2,
          -1,
          -1,
          -3,
          -3,
          -3,
          -3,
          -3,
          -3,
      ]
      self.assertListEqual(expected_shifts, shifts)
  
imports: from __future__ import unicode_literals
  from pathlib import Path
  from mock import patch
  from snips_nlu.constants import STEMS
  from snips_nlu.dataset import validate_and_format_dataset
  from snips_nlu.entity_parser import CustomEntityParser
  from snips_nlu.entity_parser.custom_entity_parser import CustomEntityParserUsage, _compute_char_shifts, _create_custom_entity_parser_configuration
  from snips_nlu.preprocessing import tokenize
  from snips_nlu.tests.utils import FixtureTest
label_desc: Use image node_id 8 for calling the TestCustomEntityParser obj's underlying member method code with example usage: obj.test_should_compute_tokenization_shift() without return types