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