[cfe-commits] r94397 - /cfe/trunk/bindings/python/tests/cindex/test_cursor.py

Daniel Dunbar daniel at zuster.org
Sun Jan 24 16:44:21 PST 2010


Author: ddunbar
Date: Sun Jan 24 18:44:21 2010
New Revision: 94397

URL: http://llvm.org/viewvc/llvm-project?rev=94397&view=rev
Log:
cindex/Python: Add Cursor test.

Added:
    cfe/trunk/bindings/python/tests/cindex/test_cursor.py

Added: cfe/trunk/bindings/python/tests/cindex/test_cursor.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/bindings/python/tests/cindex/test_cursor.py?rev=94397&view=auto

==============================================================================
--- cfe/trunk/bindings/python/tests/cindex/test_cursor.py (added)
+++ cfe/trunk/bindings/python/tests/cindex/test_cursor.py Sun Jan 24 18:44:21 2010
@@ -0,0 +1,59 @@
+from clang.cindex import Index, CursorKind
+
+kInput = """\
+// FIXME: Find nicer way to drop builtins and other cruft.
+int start_decl;
+
+struct s0 {
+  int a;
+  int b;
+};
+
+struct s1;
+
+void f0(int a0, int a1) {
+  int l0, l1;
+
+  if (a0)
+    return;
+
+  for (;;) {
+    break;
+  }
+}
+"""
+
+def test_get_children():
+    index = Index.create(1, 1)
+    tu = index.parse('t.c', unsaved_files = [('t.c',kInput)])
+    
+    # Skip until past start_decl.
+    it = tu.cursor.get_children()
+    while it.next().spelling != 'start_decl':
+        pass
+
+    tu_nodes = list(it)
+
+    assert len(tu_nodes) == 3
+
+    assert tu_nodes[0].kind == CursorKind.STRUCT_DECL
+    assert tu_nodes[0].spelling == 's0'
+    assert tu_nodes[0].is_definition() == True
+    assert tu_nodes[0].location.file.name == 't.c'
+    assert tu_nodes[0].location.line == 4
+    assert tu_nodes[0].location.column == 8
+
+    s0_nodes = list(tu_nodes[0].get_children())
+    assert len(s0_nodes) == 2
+    assert s0_nodes[0].kind == CursorKind.FIELD_DECL
+    assert s0_nodes[0].spelling == 'a'
+    assert s0_nodes[1].kind == CursorKind.FIELD_DECL
+    assert s0_nodes[1].spelling == 'b'
+
+    assert tu_nodes[1].kind == CursorKind.STRUCT_DECL
+    assert tu_nodes[1].spelling == 's1'
+    assert tu_nodes[1].is_definition() == False
+
+    assert tu_nodes[2].kind == CursorKind.FUNCTION_DECL
+    assert tu_nodes[2].spelling == 'f0'
+    assert tu_nodes[2].is_definition() == True





More information about the cfe-commits mailing list