test_cursor_kind.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from clang.cindex import CursorKind
  2. def test_name():
  3. assert CursorKind.UNEXPOSED_DECL.name is 'UNEXPOSED_DECL'
  4. def test_get_all_kinds():
  5. kinds = CursorKind.get_all_kinds()
  6. assert CursorKind.UNEXPOSED_DECL in kinds
  7. assert CursorKind.TRANSLATION_UNIT in kinds
  8. assert CursorKind.VARIABLE_REF in kinds
  9. assert CursorKind.LAMBDA_EXPR in kinds
  10. assert CursorKind.OBJ_BOOL_LITERAL_EXPR in kinds
  11. assert CursorKind.OBJ_SELF_EXPR in kinds
  12. assert CursorKind.MS_ASM_STMT in kinds
  13. assert CursorKind.MODULE_IMPORT_DECL in kinds
  14. def test_kind_groups():
  15. """Check that every kind classifies to exactly one group."""
  16. assert CursorKind.UNEXPOSED_DECL.is_declaration()
  17. assert CursorKind.TYPE_REF.is_reference()
  18. assert CursorKind.DECL_REF_EXPR.is_expression()
  19. assert CursorKind.UNEXPOSED_STMT.is_statement()
  20. assert CursorKind.INVALID_FILE.is_invalid()
  21. assert CursorKind.TRANSLATION_UNIT.is_translation_unit()
  22. assert not CursorKind.TYPE_REF.is_translation_unit()
  23. assert CursorKind.PREPROCESSING_DIRECTIVE.is_preprocessing()
  24. assert not CursorKind.TYPE_REF.is_preprocessing()
  25. assert CursorKind.UNEXPOSED_DECL.is_unexposed()
  26. assert not CursorKind.TYPE_REF.is_unexposed()
  27. for k in CursorKind.get_all_kinds():
  28. group = [n for n in ('is_declaration', 'is_reference', 'is_expression',
  29. 'is_statement', 'is_invalid', 'is_attribute')
  30. if getattr(k, n)()]
  31. if k in ( CursorKind.TRANSLATION_UNIT,
  32. CursorKind.MACRO_DEFINITION,
  33. CursorKind.MACRO_INSTANTIATION,
  34. CursorKind.INCLUSION_DIRECTIVE,
  35. CursorKind.PREPROCESSING_DIRECTIVE):
  36. assert len(group) == 0
  37. else:
  38. assert len(group) == 1