old_contents: import jedi
  
  def test_add_to_end():
      """
      fast_parser doesn't parse everything again. It just updates with the
      help of caches, this is an example that didn't work.
      """
  
      a = """
  class Abc():
      def abc(self):
          self.x = 3
  
  class Two(Abc):
      def h(self):
          self
  """  #      ^ here is the first completion
  
      b = "    def g(self):\n" \
          "        self."
      assert jedi.Script(a, 8, 12, 'example.py').completions()
      assert  jedi.Script(a + b, path='example.py').completions()
  
      a = a[:-1] + '.\n'
      assert jedi.Script(a, 8, 13, 'example.py').completions()
      assert  jedi.Script(a + b, path='example.py').completions()
  
  
  def test_class_in_docstr():
      """
      Regression test for a problem with classes in docstrings.
      """
      a = '"\nclasses\n"'
      jedi.Script(a, 1, 0)._parser
  
      b = a + '\nimport os'
      assert jedi.Script(b, 4, 8).goto_assignments()
  
new_contents: from textwrap import dedent
  
  import jedi
  from jedi.parser.fast import FastParser
  
  
  def test_add_to_end():
      """
      fast_parser doesn't parse everything again. It just updates with the
      help of caches, this is an example that didn't work.
      """
  
      a = """
  class Abc():
      def abc(self):
          self.x = 3
  
  class Two(Abc):
      def h(self):
          self
  """  #      ^ here is the first completion
  
      b = "    def g(self):\n" \
          "        self."
      assert jedi.Script(a, 8, 12, 'example.py').completions()
      assert  jedi.Script(a + b, path='example.py').completions()
  
      a = a[:-1] + '.\n'
      assert jedi.Script(a, 8, 13, 'example.py').completions()
      assert  jedi.Script(a + b, path='example.py').completions()
  
  
  def test_class_in_docstr():
      """
      Regression test for a problem with classes in docstrings.
      """
      a = '"\nclasses\n"'
      jedi.Script(a, 1, 0)._parser
  
      b = a + '\nimport os'
      assert jedi.Script(b, 4, 8).goto_assignments()
  
  
  def test_carriage_return_splitting():
      source = dedent('''
  
  
  
          "string"
  
          class Foo():
              pass
          ''')
      source = source.replace('\n', '\r\n')
      p = FastParser(source)
      assert [str(n) for n in p.module.get_defined_names()] == ['Foo']
  
subject: test for carriage return issues. fast parser seems to be counting characters wrong when carriage returns are involved. see #402