##// END OF EJS Templates
add utils.tokenutil for getting the token at a cursor offset
add utils.tokenutil for getting the token at a cursor offset

File last commit:

r16578:c21ac70b
r16578:c21ac70b
Show More
test_tokenutil.py
56 lines | 1.5 KiB | text/x-python | PythonLexer
"""Tests for tokenutil"""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import nose.tools as nt
from IPython.utils.tokenutil import token_at_cursor
def expect_token(expected, cell, column, line=0):
token = token_at_cursor(cell, column, line)
lines = cell.splitlines()
line_with_cursor = '%s|%s' % (lines[line][:column], lines[line][column:])
line
nt.assert_equal(token, expected,
"Excpected %r, got %r in: %s" % (
expected, token, line_with_cursor)
)
def test_simple():
cell = "foo"
for i in range(len(cell)):
expect_token("foo", cell, i)
def test_function():
cell = "foo(a=5, b='10')"
expected = 'foo'
for i in (6,7,8,10,11,12):
expect_token("foo", cell, i)
def test_multiline():
cell = '\n'.join([
'a = 5',
'b = hello("string", there)'
])
expected = 'hello'
for i in range(4,9):
expect_token(expected, cell, i, 1)
expected = 'there'
for i in range(21,27):
expect_token(expected, cell, i, 1)
def test_attrs():
cell = "foo(a=obj.attr.subattr)"
expected = 'obj'
idx = cell.find('obj')
for i in range(idx, idx + 3):
expect_token(expected, cell, i)
idx = idx + 4
expected = 'obj.attr'
for i in range(idx, idx + 4):
expect_token(expected, cell, i)
idx = idx + 5
expected = 'obj.attr.subattr'
for i in range(idx, len(cell)):
expect_token(expected, cell, i)