Skip to content

Commit

Permalink
Add tests and Travis config
Browse files Browse the repository at this point in the history
  • Loading branch information
mwean committed Jul 26, 2014
1 parent 0e6dda0 commit c5966d9
Show file tree
Hide file tree
Showing 4 changed files with 282 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .travis.yml
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
24 changes: 24 additions & 0 deletions tests/test_helper.py
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]))
117 changes: 117 additions & 0 deletions tests/test_jump_next_indent.py
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)
116 changes: 116 additions & 0 deletions tests/test_jump_prev_indent.py
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)

0 comments on commit c5966d9

Please sign in to comment.