-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
282 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
language: python | ||
|
||
python: | ||
- "2.7" | ||
env: | ||
global: | ||
- PACKAGE="sublime_jump_along_indent" | ||
matrix: | ||
- SUBLIME_TEXT_VERSION="3" | ||
|
||
before_install: | ||
- curl -OL https://raw.githubusercontent.com/randy3k/UnitTesting/master/sbin/travis.sh | ||
|
||
install: | ||
- sh travis.sh bootstrap | ||
|
||
before_script: | ||
- export DISPLAY=:99.0 | ||
- sh -e /etc/init.d/xvfb start | ||
|
||
script: | ||
- sh travis.sh run_tests | ||
|
||
notifications: | ||
email: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
import sublime, sys, json, sublime_plugin | ||
from unittest import TestCase | ||
|
||
class TestHelper(TestCase): | ||
def setUp(self): | ||
self.view = sublime.active_window().new_file() | ||
|
||
def tearDown(self): | ||
if self.view: | ||
self.view.set_scratch(True) | ||
self.view.window().run_command('close_file') | ||
|
||
def set_text(self, lines): | ||
for line in lines: | ||
self.view.run_command('move_to', { 'to': 'bol', 'extend': True }) | ||
self.view.run_command('insert', { 'characters': line + "\n" }) | ||
|
||
def check_command(self, text, start, end, extend_selection=False): | ||
self.set_text(text) | ||
self.view.sel().clear() | ||
self.view.sel().add(sublime.Region(start[0], start[1])) | ||
self.view.run_command(self.command(), { 'extend_selection': extend_selection }) | ||
|
||
self.assertEqual(self.view.sel()[0], sublime.Region(end[0], end[1])) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
from test_helper import TestHelper | ||
|
||
class TestJumpNextIndent(TestHelper): | ||
def command(self): | ||
return 'jump_next_indent' | ||
|
||
def test_empty_lines(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
'', | ||
'', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
starting_selection = [0, 0] | ||
ending_selection = [29, 29] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_indented_lines(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [0, 0] | ||
ending_selection = [85, 85] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_end_of_file(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [0, 0] | ||
ending_selection = [0, 0] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_maintain_column(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [12, 12] | ||
ending_selection = [66, 66] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_jump_to_shorter_line(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet', | ||
'', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [53, 53] | ||
ending_selection = [81, 81] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_jump_to_first_intersection(self): | ||
lines = [ | ||
' Lorem ipsum dolor sit amet', | ||
'', | ||
' Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [3, 3] | ||
ending_selection = [35, 35] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_create_selection(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [0, 0] | ||
ending_selection = [0, 85] | ||
|
||
self.check_command(lines, starting_selection, ending_selection, extend_selection = True) | ||
|
||
def test_extend_selection(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [0, 27] | ||
ending_selection = [0, 85] | ||
|
||
self.check_command(lines, starting_selection, ending_selection, extend_selection = True) | ||
|
||
def test_subtract_selection(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [111, 0] | ||
ending_selection = [111, 85] | ||
|
||
self.check_command(lines, starting_selection, ending_selection, extend_selection = True) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
from test_helper import TestHelper | ||
|
||
class TestJumpPrevIndent(TestHelper): | ||
def command(self): | ||
return 'jump_prev_indent' | ||
|
||
def test_empty_lines(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
'', | ||
'', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
starting_selection = [29, 29] | ||
ending_selection = [0, 0] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_indented_lines(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [85, 85] | ||
ending_selection = [0, 0] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_beginning_of_file(self): | ||
lines = [ | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [58, 58] | ||
ending_selection = [58, 58] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_maintain_column(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [66, 66] | ||
ending_selection = [12, 12] | ||
|
||
def test_jump_to_shorter_line(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
'', | ||
'Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [81, 81] | ||
ending_selection = [26, 26] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_jump_to_first_intersection(self): | ||
lines = [ | ||
' Lorem ipsum dolor sit amet', | ||
'', | ||
' Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [33, 33] | ||
ending_selection = [3, 3] | ||
|
||
self.check_command(lines, starting_selection, ending_selection) | ||
|
||
def test_create_selection(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [85, 85] | ||
ending_selection = [85, 0] | ||
|
||
self.check_command(lines, starting_selection, ending_selection, extend_selection = True) | ||
|
||
def test_extend_selection(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [85, 56] | ||
ending_selection = [85, 0] | ||
|
||
self.check_command(lines, starting_selection, ending_selection, extend_selection = True) | ||
|
||
def test_subtract_selection(self): | ||
lines = [ | ||
'Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
' Lorem ipsum dolor sit amet', | ||
'Lorem ipsum dolor sit amet' | ||
] | ||
|
||
starting_selection = [0, 85] | ||
ending_selection = [0, 0] | ||
|
||
self.check_command(lines, starting_selection, ending_selection, extend_selection = True) | ||
|