def testToWhitespaceLine(self): set_text(self.view, '\n \n\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 5)
def testToWordStart(self): set_text(self.view, '\nfoo\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 4)
def testToPunctuationStart(self): set_text(self.view, '\n (foo)\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 3)
def testToOneCharWord(self): set_text(self.view, ':a bar\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 1)
def testToOneCharLineWithLeadingWhitespace(self): set_text(self.view, ':\n a\n\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 1)
def testToEmptyLine(self): set_text(self.view, ':\n\n\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 1)
def testToOneCharLine(self): set_text(self.view, 'foo\na\n\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 3)
def testToOneWordLineWithLeadingWhitespace(self): set_text(self.view, 'foo\n bar\nbaz') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 3)
def testToEofWithNewline(self): set_text(self.view, '\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 1)
def testMove1ToEol(self): set_text(self.view, 'x\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = word_starts(self.view, r.b, internal=True, count=1) self.assertEqual(pt, 1)
def testToOneWordLine(self): set_text(self.view, 'foo\nbar\nbaz') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 3)
def testToWordStart(self): set_text(self.view, ':foo\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 5)
def testMove2ToEol(self): set_text(self.view, 'foo bar\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 7)
def testToEmptyLine(self): set_text(self.view, ':\n\n\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 2)
def testToOneWordLineWithLeadingWhitespace(self): set_text(self.view, ':\n bar\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 2)
def testToWordStart(self): set_text(self.view, '(foo) bar\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 6)
def testMove2ToLineWithLeadingWhiteSpaceFromWordStart(self): set_text(self.view, '(foo)\n\nbar\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 7)
def testMove2ToWhitespacelineFollowedByLeadingWhitespaceFromWordStart(self): set_text(self.view, '(foo)\n \n ccc\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 14)
def testMove2ToWhitespaceline(self): set_text(self.view, '(foo)\n \nccc\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 12)
def testMove2ToOneWordLineFromWord(self): set_text(self.view, '(foo)\nbar\nccc\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 9)
def testMove10(self): set_text(self.view, ''.join(('(foo) bar\n',) * 5)) r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, count=9) self.assertEqual(pt, 46)
def testMove3AndSwallowLastNewlineChar(self): set_text(self.view, '\nfoo\n (bar)\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, internal=True, count=3) self.assertEqual(pt, 12)
def testMove1ToWhitespaceLine(self): set_text(self.view, '\n \n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, count=1, internal=True) self.assertEqual(pt, 1)
def testMove2ToLineWithLeadingWhiteSpace(self): set_text(self.view, '\n (bar)') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, count=2, internal=True) self.assertEqual(pt, 6)
def testToWhitespaceLine(self): set_text(self.view, '\n ') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b, internal=True) self.assertEqual(pt, 0)
def testToPunctuationStart(self): set_text(self.view, '(foo) (bar)\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 6)
def testToOneWordLineWithLeadingWhitespace(self): set_text(self.view, '\n bar') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b, internal=True) self.assertEqual(pt, 0)
def testToEof(self): set_text(self.view, 'foo') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_word_end(self.view, r.b) self.assertEqual(pt, 3)
def testToWhitespaceLine(self): set_text(self.view, '(foo)\n \n\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 6)
def testToOneCharWord(self): set_text(self.view, ' a foo bar\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_word_start(self.view, r.b) self.assertEqual(pt, 2)
def testMove2ToOneWordLineFromWordStart(self): set_text(self.view, 'foo\nbar\nccc\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 8)
def testMove2ToEmptyLineFromWord(self): set_text(self.view, 'foo\n\nbar\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 4)
def testMove2ToLineWithLeadingWhiteSpace(self): set_text(self.view, '\nfoo\n \n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 5)
def testMove2(self): set_text(self.view, '(foo) bar fizz\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, count=2) self.assertEqual(pt, 10)
def testMove1(self): set_text(self.view, '(foo) bar\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b) self.assertEqual(pt, 6)
def testToOneCharWord(self): set_text(self.view, '::a bar\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 4)
def testToOneCharLineWithLeadingWhitespace(self): set_text(self.view, '::\n a\n\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 3)
def testToOneWordLine(self): set_text(self.view, '::\nbar\n') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 3)
def testToEof(self): set_text(self.view, '::') r = self.R((0, 1), (0, 1)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 2)
def testToOneCharLine(self): set_text(self.view, '\na\n\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 1)
def testToEofWithNewline(self): set_text(self.view, '\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = next_big_word_start(self.view, r.b) self.assertEqual(pt, 1)
def testCaretEndsInExpectedRegion(self): set_text(self.view, ''.join(('foo bar\nfoo bar\nfoo bar\n', ))) add_sel(self.view, self.R((1, 3), (1, 0))) VintageState(self.view).mode = MODE_VISUAL self.view.run_command('vi_enter_normal_mode', {}) self.assertEqual(self.R((1, 0), (1, 0)), first_sel(self.view))
def testMove2ToWhitespacelineFollowedByLeadingWhitespaceFromWordStart( self): set_text(self.view, '(foo)\n \n ccc\n') r = self.R((0, 0), (0, 0)) add_sel(self.view, r) pt = big_word_starts(self.view, r.b, internal=True, count=2) self.assertEqual(pt, 14)
def testDeletesWholeLine(self): set_text(self.view, ''.join(('foo bar\nfoo bar\nfoo bar\n', ))) add_sel(self.view, self.R((1, 0), (1, 7))) self.view.run_command('_vi_big_s_action', {'mode': _MODE_INTERNAL_NORMAL}) self.assertEqual(self.view.substr(self.R(0, self.view.size())), 'foo bar\n\nfoo bar\n')
def testMoveOne(self): set_text(self.view, 'foo\nbar\nbaz\n') add_sel(self.view, self.R((1, 1), (1, 2))) self.view.run_command('_vi_k', {'mode': MODE_VISUAL, 'count': 1, 'xpos': 2}) expected = self.R((1, 2), (0, 2)) self.assertEqual(expected, first_sel(self.view))
def testMoveOppositeEndGreaterWithSelOfSize1(self): set_text(self.view, 'foo\nbar\nbaz\n') add_sel(self.view, self.R((2, 1), (2, 2))) self.view.run_command('_vi_k', {'mode': MODE_VISUAL, 'count': 1, 'xpos': 2}) expected = self.R((2, 2), (1, 2)) self.assertEqual(expected, first_sel(self.view))
def testKeepsLeadingWhitespace(self): set_text(self.view, ''.join(('foo bar\n\t foo bar\nfoo bar\n', ))) add_sel(self.view, self.R((1, 0), (1, 10))) self.view.run_command('_vi_big_s_action', {'mode': _MODE_INTERNAL_NORMAL}) self.assertEqual(self.view.substr(self.R(0, self.view.size())), 'foo bar\n\t \nfoo bar\n')
def testMoveFromEmptyLineToEmptyLine(self): set_text(self.view, '\n\n\n') add_sel(self.view, self.R((1, 0), (1, 0))) self.view.run_command('_vi_k', {'mode': MODE_NORMAL, 'count': 1, 'xpos': 0}) expected = self.R((0, 0), (0, 0)) self.assertEqual(expected, first_sel(self.view))
def testMoveMany(self): set_text(self.view, 'abc\nabc\nabc') add_sel(self.view, self.R(2, 1), (2, 1)) self.view.run_command('_vi_k', {'mode': MODE_NORMAL, 'count': 2, 'xpos': 1}) expected = self.R((0, 1), (0, 1)) self.assertEqual(expected, first_sel(self.view))
def testMoveOntoShorterLine(self): set_text(self.view, 'foo\nfoo bar') add_sel(self.view, self.R((1, 5), (1, 5))) self.view.run_command('_vi_k', {'mode': MODE_NORMAL, 'count': 1, 'xpos': 5}) expected = self.R((0, 2), (0, 2)) self.assertEqual(expected, first_sel(self.view))
def testMoveTooFar(self): set_text(self.view, 'foo\nbar\nbaz\n') add_sel(self.view, self.R((2, 1), (2, 1))) self.view.run_command('_vi_k', {'mode': MODE_NORMAL, 'count': 100, 'xpos': 1}) expected = self.R((0, 1), (0, 1)) self.assertEqual(expected, first_sel(self.view))
def testMoveBackToSameLine_OppositeEndHasGreaterXpos(self): set_text(self.view, 'foo\nbar\nbaz\n') add_sel(self.view, self.R((0, 2), (1, 0))) self.view.run_command('_vi_k', {'mode': MODE_VISUAL, 'count': 1, 'xpos': 0}) expected = self.R((0, 3), (0, 0)) self.assertEqual(expected, first_sel(self.view))
def testMove_OppositeEndSmaller_DifferentLines_CrossOver_XposAt0(self): set_text(self.view, 'foo\nbar\nbaz\n') add_sel(self.view, self.R((1, 0), (2, 1))) self.view.run_command('_vi_k', {'mode': MODE_VISUAL, 'count': 2, 'xpos': 0}) expected = self.R((1, 1), (0, 0)) self.assertEqual(expected, first_sel(self.view))
def testMove_OppositeEndSmaller_DifferentLines_CrossOver_Non0Xpos(self): set_text(self.view, 'foo bar\nfoo bar\nfoo bar\n') add_sel(self.view, self.R((1, 4), (2, 4))) self.view.run_command('_vi_k', {'mode': MODE_VISUAL, 'count': 2, 'xpos': 4}) expected = self.R((1, 5), (0, 4)) self.assertEqual(expected, first_sel(self.view))
def testMoveMany_OppositeEndGreater_DifferentLines(self): set_text(self.view, ''.join(('foo\n',) * 50)) add_sel(self.view, self.R((21, 2), (20, 1))) self.view.run_command('_vi_k', {'mode': MODE_VISUAL, 'count': 10, 'xpos': 1}) expected = self.R((21, 2), (10, 1)) self.assertEqual(expected, first_sel(self.view))
def testMoveOppositeEndSmallerWithSelOfSize3(self): set_text(self.view, 'foobar\nbarfoo\nbuzzfizz\n') add_sel(self.view, self.R((1, 1), (1, 4))) self.view.run_command('_vi_k', {'mode': MODE_VISUAL, 'count': 1, 'xpos': 3}) expected = self.R((1, 2), (0, 3)) self.assertEqual(expected, first_sel(self.view))
def testCanMoveInModeVisualLine(self): set_text(self.view, 'abc\nabc\n') add_sel(self.view, a=0, b=4) self.view.run_command('_vi_big_g', { 'mode': MODE_VISUAL_LINE, 'count': 1 }) self.assertEqual(self.R(0, 8), first_sel(self.view))
def testCanMoveInInternalNormalModeWithCount(self): set_text(self.view, 'abc\nabc\nabc\nabc\n') add_sel(self.view, a=0, b=0) self.view.run_command('_vi_dollar', { 'mode': _MODE_INTERNAL_NORMAL, 'count': 3 }) self.assertEqual(self.R(0, 12), first_sel(self.view))
def testCanMoveInModeInternalNormal(self): set_text(self.view, 'abc\nabc\n') add_sel(self.view, a=0, b=0) self.view.run_command('_vi_big_g', { 'mode': _MODE_INTERNAL_NORMAL, 'count': 1 }) self.assertEqual(self.R(0, 8), first_sel(self.view))
def testCanMoveInVisualLineModeWithCount(self): set_text(self.view, 'abc\nabc\nabc\nabc\n') add_sel(self.view, a=0, b=4) self.view.run_command('_vi_dollar', { 'mode': MODE_VISUAL_LINE, 'count': 3 }) self.assertEqual(self.R(0, 12), first_sel(self.view))