193 lines
5.1 KiB
Python
193 lines
5.1 KiB
Python
import importlib
|
|
import textwrap
|
|
|
|
import normalizeSelection
|
|
|
|
|
|
def test_dictionary_mouse_mover():
|
|
"""Having the mouse cursor on second line, 'my_dict = {' and pressing shift+enter should bring the mouse cursor to line 6, on and to be able to run 'print('only send the dictionary')'."""
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
not_dictionary = 'hi'
|
|
my_dict = {
|
|
"key1": "value1",
|
|
"key2": "value2"
|
|
}
|
|
print('only send the dictionary')
|
|
"""
|
|
)
|
|
|
|
result = normalizeSelection.traverse_file(src, 2, 2, was_highlighted=False)
|
|
|
|
assert result["which_line_next"] == 6
|
|
|
|
|
|
def test_beginning_func():
|
|
"""Pressing shift+enter on the very first line, of function definition, such as 'my_func():'.
|
|
|
|
It should properly skip the comment and assert the next executable line to be
|
|
executed is line 5 at 'my_dict = {'.
|
|
"""
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
def my_func():
|
|
print("line 2")
|
|
print("line 3")
|
|
# Skip line 4 because it is a comment
|
|
my_dict = {
|
|
"key1": "value1",
|
|
"key2": "value2"
|
|
}
|
|
"""
|
|
)
|
|
|
|
result = normalizeSelection.traverse_file(src, 1, 1, was_highlighted=False)
|
|
|
|
assert result["which_line_next"] == 5
|
|
|
|
|
|
def test_cursor_forloop():
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
lucid_dream = ["Corgi", "Husky", "Pomsky"]
|
|
for dogs in lucid_dream: # initial starting position
|
|
print(dogs)
|
|
print("I wish I had a dog!")
|
|
|
|
print("This should be the next block that should be ran")
|
|
"""
|
|
)
|
|
|
|
result = normalizeSelection.traverse_file(src, 2, 2, was_highlighted=False)
|
|
|
|
assert result["which_line_next"] == 6
|
|
|
|
|
|
def test_inside_forloop():
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
for food in lucid_dream:
|
|
print("We are starting") # initial starting position
|
|
print("Next cursor should be here!")
|
|
|
|
"""
|
|
)
|
|
|
|
result = normalizeSelection.traverse_file(src, 2, 2, was_highlighted=False)
|
|
|
|
assert result["which_line_next"] == 3
|
|
|
|
|
|
def test_skip_sameline_statements():
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
print("Audi");print("BMW");print("Mercedes")
|
|
print("Next line to be run is here!")
|
|
"""
|
|
)
|
|
result = normalizeSelection.traverse_file(src, 1, 1, was_highlighted=False)
|
|
|
|
assert result["which_line_next"] == 2
|
|
|
|
|
|
def test_skip_multi_comp_lambda():
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
(
|
|
my_first_var
|
|
for my_first_var in range(1, 10)
|
|
if my_first_var % 2 == 0
|
|
)
|
|
|
|
my_lambda = lambda x: (
|
|
x + 1
|
|
)
|
|
"""
|
|
)
|
|
|
|
result = normalizeSelection.traverse_file(src, 1, 1, was_highlighted=False)
|
|
# Shift enter from the very first ( should make
|
|
# next executable statement as the lambda expression
|
|
assert result["which_line_next"] == 7
|
|
|
|
|
|
def test_move_whole_class():
|
|
"""Shift+enter on a class definition should move the cursor after running whole class."""
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
class Stub(object):
|
|
def __init__(self):
|
|
self.calls = []
|
|
|
|
def add_call(self, name, args=None, kwargs=None):
|
|
self.calls.append((name, args, kwargs))
|
|
print("We should be here after running whole class")
|
|
"""
|
|
)
|
|
result = normalizeSelection.traverse_file(src, 1, 1, was_highlighted=False)
|
|
|
|
assert result["which_line_next"] == 7
|
|
|
|
|
|
def test_def_to_def():
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
def my_dogs():
|
|
print("Corgi")
|
|
print("Husky")
|
|
print("Corgi2")
|
|
print("Husky2")
|
|
print("no dogs")
|
|
|
|
# Skip here
|
|
def next_func():
|
|
print("Not here but above")
|
|
"""
|
|
)
|
|
result = normalizeSelection.traverse_file(src, 1, 1, was_highlighted=False)
|
|
|
|
assert result["which_line_next"] == 9
|
|
|
|
|
|
def test_try_catch_move():
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
try:
|
|
1+1
|
|
except:
|
|
print("error")
|
|
|
|
print("Should be here afterwards")
|
|
"""
|
|
)
|
|
|
|
result = normalizeSelection.traverse_file(src, 1, 1, was_highlighted=False)
|
|
assert result["which_line_next"] == 6
|
|
|
|
|
|
def test_skip_nested():
|
|
importlib.reload(normalizeSelection)
|
|
src = textwrap.dedent(
|
|
"""\
|
|
for i in range(1, 6):
|
|
for j in range(1, 6):
|
|
for x in range(1, 5):
|
|
for y in range(1, 5):
|
|
for z in range(1,10):
|
|
print(i, j, x, y, z)
|
|
|
|
print("Cursor should be here after running line 1")
|
|
"""
|
|
)
|
|
result = normalizeSelection.traverse_file(src, 1, 1, was_highlighted=False)
|
|
assert result["which_line_next"] == 8
|