test_tokenutil.py
56 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
MinRK
|
r16578 | """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) | ||||