Home | History | Annotate | Download | only in cindex
      1 from clang.cindex import CursorKind
      2 from clang.cindex import Index
      3 from clang.cindex import SourceLocation
      4 from clang.cindex import SourceRange
      5 from clang.cindex import TokenKind
      6 from nose.tools import eq_
      7 from nose.tools import ok_
      8 
      9 from .util import get_tu
     10 
     11 def test_token_to_cursor():
     12     """Ensure we can obtain a Cursor from a Token instance."""
     13     tu = get_tu('int i = 5;')
     14     r = tu.get_extent('t.c', (0, 9))
     15     tokens = list(tu.get_tokens(extent=r))
     16 
     17     assert len(tokens) == 5
     18     assert tokens[1].spelling == 'i'
     19     assert tokens[1].kind == TokenKind.IDENTIFIER
     20 
     21     cursor = tokens[1].cursor
     22     assert cursor.kind == CursorKind.VAR_DECL
     23     assert tokens[1].cursor == tokens[2].cursor
     24 
     25 def test_token_location():
     26     """Ensure Token.location works."""
     27 
     28     tu = get_tu('int foo = 10;')
     29     r = tu.get_extent('t.c', (0, 11))
     30 
     31     tokens = list(tu.get_tokens(extent=r))
     32     eq_(len(tokens), 4)
     33 
     34     loc = tokens[1].location
     35     ok_(isinstance(loc, SourceLocation))
     36     eq_(loc.line, 1)
     37     eq_(loc.column, 5)
     38     eq_(loc.offset, 4)
     39 
     40 def test_token_extent():
     41     """Ensure Token.extent works."""
     42     tu = get_tu('int foo = 10;')
     43     r = tu.get_extent('t.c', (0, 11))
     44 
     45     tokens = list(tu.get_tokens(extent=r))
     46     eq_(len(tokens), 4)
     47 
     48     extent = tokens[1].extent
     49     ok_(isinstance(extent, SourceRange))
     50 
     51     eq_(extent.start.offset, 4)
     52     eq_(extent.end.offset, 7)
     53