new_contents: from clang.cindex import Index, CursorKind, TypeKind
  
  kInput = """\
  
  typedef int I;
  
  struct teststruct {
    int a;
    I b;
    long c;
    unsigned long d;
    signed long e;
    const int f;
    int *g;
    int ***h;
  };
  
  """
  
  def test_a_struct():
      index = Index.create()
      tu = index.parse('t.c', unsaved_files = [('t.c',kInput)])
  
      for n in tu.cursor.get_children():
          if n.spelling == 'teststruct':
              fields = list(n.get_children())
  
              assert all(x.kind == CursorKind.FIELD_DECL for x in fields)
  
              assert fields[0].spelling == 'a'
              assert not fields[0].type.is_const_qualified()
              assert fields[0].type.kind == TypeKind.INT
              assert fields[0].type.get_canonical().kind == TypeKind.INT
  
              assert fields[1].spelling == 'b'
              assert not fields[1].type.is_const_qualified()
              assert fields[1].type.kind == TypeKind.TYPEDEF
              assert fields[1].type.get_canonical().kind == TypeKind.INT
              assert fields[1].type.get_declaration().spelling == 'I'
  
              assert fields[2].spelling == 'c'
              assert not fields[2].type.is_const_qualified()
              assert fields[2].type.kind == TypeKind.LONG
              assert fields[2].type.get_canonical().kind == TypeKind.LONG
  
              assert fields[3].spelling == 'd'
              assert not fields[3].type.is_const_qualified()
              assert fields[3].type.kind == TypeKind.ULONG
              assert fields[3].type.get_canonical().kind == TypeKind.ULONG
  
              assert fields[4].spelling == 'e'
              assert not fields[4].type.is_const_qualified()
              assert fields[4].type.kind == TypeKind.LONG
              assert fields[4].type.get_canonical().kind == TypeKind.LONG
  
              assert fields[5].spelling == 'f'
              assert fields[5].type.is_const_qualified()
              assert fields[5].type.kind == TypeKind.INT
              assert fields[5].type.get_canonical().kind == TypeKind.INT
  
              assert fields[6].spelling == 'g'
              assert not fields[6].type.is_const_qualified()
              assert fields[6].type.kind == TypeKind.POINTER
              assert fields[6].type.get_pointee().kind == TypeKind.INT
  
              assert fields[7].spelling == 'h'
              assert not fields[7].type.is_const_qualified()
              assert fields[7].type.kind == TypeKind.POINTER
              assert fields[7].type.get_pointee().kind == TypeKind.POINTER
              assert fields[7].type.get_pointee().get_pointee().kind == TypeKind.POINTER
              assert fields[7].type.get_pointee().get_pointee().get_pointee().kind == TypeKind.INT
  
              break
  
      else:
          assert False, "Didn't find teststruct??"
  
subject: Add test_type.py by Anders Waldenborg, which I forgot to commit in r137797.