##// END OF EJS Templates
Return a proper JSON object
Return a proper JSON object

File last commit:

r16580:de473a1c
r18065:bbf6cb02
Show More
test_tokenutil.py
63 lines | 1.7 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, cursor_pos):
token = token_at_cursor(cell, cursor_pos)
offset = 0
for line in cell.splitlines():
if offset + len(line) >= cursor_pos:
break
else:
offset += len(line)
column = cursor_pos - offset
line_with_cursor = '%s|%s' % (line[:column], 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'
start = cell.index(expected)
for i in range(start, start + len(expected)):
expect_token(expected, cell, i)
expected = 'there'
start = cell.index(expected)
for i in range(start, start + len(expected)):
expect_token(expected, cell, i)
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)